diff --git a/zircon/system/utest/zbi/BUILD.gn b/zircon/system/ulib/libzbi/test/BUILD.gn
similarity index 86%
rename from zircon/system/utest/zbi/BUILD.gn
rename to zircon/system/ulib/libzbi/test/BUILD.gn
index aa4c25fdbb0e1e33486e5881918a1e1f1fb9cf29..1d4b760f7d6201416eacad169f3e909493d09130 100644
--- a/zircon/system/utest/zbi/BUILD.gn
+++ b/zircon/system/ulib/libzbi/test/BUILD.gn
@@ -2,6 +2,13 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+group("test") {
+  testonly = true
+  deps = [
+    ":zbi",
+  ]
+}
+
 test("zbi") {
   sources = [
     "zbi.cpp",
diff --git a/zircon/system/utest/zbi/zbi.cpp b/zircon/system/ulib/libzbi/test/zbi.cpp
similarity index 100%
rename from zircon/system/utest/zbi/zbi.cpp
rename to zircon/system/ulib/libzbi/test/zbi.cpp
diff --git a/zircon/system/utest/BUILD.gn b/zircon/system/utest/BUILD.gn
index 25567417b14087a79ed55966c10db9e1bd7eb55d..78c5108667208fdf8fc6d08d4dffbdb1276738cb 100644
--- a/zircon/system/utest/BUILD.gn
+++ b/zircon/system/utest/BUILD.gn
@@ -77,6 +77,7 @@ if (current_cpu != "") {
       "$zx/system/ulib/fzl/test",
       "$zx/system/ulib/gpt/test",
       "$zx/system/ulib/id_allocator/test",
+      "$zx/system/ulib/libzbi/test",
       "$zx/system/ulib/kvstore:kvstore-test",
       "$zx/system/ulib/lazy_init:lazy_init-test",
       "$zx/system/ulib/minfs/allocator/test",
@@ -191,7 +192,6 @@ if (current_cpu != "") {
       "virtio",
       "virtual_camera",
       "vmo",
-      "zbi",
       "zxcrypt",
 
       # disabled for now:
@@ -222,6 +222,7 @@ if (current_cpu != "") {
     deps = [
       "$zx/system/ulib/fbl/test",
       "$zx/system/ulib/fvm/test",
+      "$zx/system/ulib/libzbi/test",
       "$zx/system/ulib/zxtest/test",
       "$zx/system/ulib/trace-reader:tests",
       "cmdline",
@@ -232,7 +233,6 @@ if (current_cpu != "") {
       "fvm-host",
       "runtests-utils",
       "util",
-      "zbi",
     ]
     if (current_os == "linux") {
       deps += [