diff --git a/zircon/system/utest/fbl/BUILD.gn b/zircon/system/ulib/fbl/test/BUILD.gn
similarity index 96%
rename from zircon/system/utest/fbl/BUILD.gn
rename to zircon/system/ulib/fbl/test/BUILD.gn
index cdd09a9411e488e2d56e18b9c34a500e014f2208..02b3ec7b0b9199ff0756da12a31736f7a500335e 100644
--- a/zircon/system/utest/fbl/BUILD.gn
+++ b/zircon/system/ulib/fbl/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 = [
+    ":fbl",
+  ]
+}
+
 test("fbl") {
   include_dirs = [ "include" ]
   sources = [
diff --git a/zircon/system/utest/fbl/algorithm_tests.cpp b/zircon/system/ulib/fbl/test/algorithm_tests.cpp
similarity index 100%
rename from zircon/system/utest/fbl/algorithm_tests.cpp
rename to zircon/system/ulib/fbl/test/algorithm_tests.cpp
diff --git a/zircon/system/utest/fbl/array_tests.cpp b/zircon/system/ulib/fbl/test/array_tests.cpp
similarity index 100%
rename from zircon/system/utest/fbl/array_tests.cpp
rename to zircon/system/ulib/fbl/test/array_tests.cpp
diff --git a/zircon/system/utest/fbl/auto_call_tests.cpp b/zircon/system/ulib/fbl/test/auto_call_tests.cpp
similarity index 100%
rename from zircon/system/utest/fbl/auto_call_tests.cpp
rename to zircon/system/ulib/fbl/test/auto_call_tests.cpp
diff --git a/zircon/system/utest/fbl/condition_variable_tests.cpp b/zircon/system/ulib/fbl/test/condition_variable_tests.cpp
similarity index 100%
rename from zircon/system/utest/fbl/condition_variable_tests.cpp
rename to zircon/system/ulib/fbl/test/condition_variable_tests.cpp
diff --git a/zircon/system/utest/fbl/forward_tests.cpp b/zircon/system/ulib/fbl/test/forward_tests.cpp
similarity index 100%
rename from zircon/system/utest/fbl/forward_tests.cpp
rename to zircon/system/ulib/fbl/test/forward_tests.cpp
diff --git a/zircon/system/utest/fbl/function_tests.cpp b/zircon/system/ulib/fbl/test/function_tests.cpp
similarity index 100%
rename from zircon/system/utest/fbl/function_tests.cpp
rename to zircon/system/ulib/fbl/test/function_tests.cpp
diff --git a/zircon/system/utest/fbl/include/fbl/tests/intrusive_containers/associative_container_test_environment.h b/zircon/system/ulib/fbl/test/include/fbl/tests/intrusive_containers/associative_container_test_environment.h
similarity index 100%
rename from zircon/system/utest/fbl/include/fbl/tests/intrusive_containers/associative_container_test_environment.h
rename to zircon/system/ulib/fbl/test/include/fbl/tests/intrusive_containers/associative_container_test_environment.h
diff --git a/zircon/system/utest/fbl/include/fbl/tests/intrusive_containers/base_test_environments.h b/zircon/system/ulib/fbl/test/include/fbl/tests/intrusive_containers/base_test_environments.h
similarity index 100%
rename from zircon/system/utest/fbl/include/fbl/tests/intrusive_containers/base_test_environments.h
rename to zircon/system/ulib/fbl/test/include/fbl/tests/intrusive_containers/base_test_environments.h
diff --git a/zircon/system/utest/fbl/include/fbl/tests/intrusive_containers/intrusive_doubly_linked_list_checker.h b/zircon/system/ulib/fbl/test/include/fbl/tests/intrusive_containers/intrusive_doubly_linked_list_checker.h
similarity index 100%
rename from zircon/system/utest/fbl/include/fbl/tests/intrusive_containers/intrusive_doubly_linked_list_checker.h
rename to zircon/system/ulib/fbl/test/include/fbl/tests/intrusive_containers/intrusive_doubly_linked_list_checker.h
diff --git a/zircon/system/utest/fbl/include/fbl/tests/intrusive_containers/intrusive_hash_table_checker.h b/zircon/system/ulib/fbl/test/include/fbl/tests/intrusive_containers/intrusive_hash_table_checker.h
similarity index 100%
rename from zircon/system/utest/fbl/include/fbl/tests/intrusive_containers/intrusive_hash_table_checker.h
rename to zircon/system/ulib/fbl/test/include/fbl/tests/intrusive_containers/intrusive_hash_table_checker.h
diff --git a/zircon/system/utest/fbl/include/fbl/tests/intrusive_containers/intrusive_singly_linked_list_checker.h b/zircon/system/ulib/fbl/test/include/fbl/tests/intrusive_containers/intrusive_singly_linked_list_checker.h
similarity index 100%
rename from zircon/system/utest/fbl/include/fbl/tests/intrusive_containers/intrusive_singly_linked_list_checker.h
rename to zircon/system/ulib/fbl/test/include/fbl/tests/intrusive_containers/intrusive_singly_linked_list_checker.h
diff --git a/zircon/system/utest/fbl/include/fbl/tests/intrusive_containers/intrusive_wavl_tree_checker.h b/zircon/system/ulib/fbl/test/include/fbl/tests/intrusive_containers/intrusive_wavl_tree_checker.h
similarity index 100%
rename from zircon/system/utest/fbl/include/fbl/tests/intrusive_containers/intrusive_wavl_tree_checker.h
rename to zircon/system/ulib/fbl/test/include/fbl/tests/intrusive_containers/intrusive_wavl_tree_checker.h
diff --git a/zircon/system/utest/fbl/include/fbl/tests/intrusive_containers/objects.h b/zircon/system/ulib/fbl/test/include/fbl/tests/intrusive_containers/objects.h
similarity index 100%
rename from zircon/system/utest/fbl/include/fbl/tests/intrusive_containers/objects.h
rename to zircon/system/ulib/fbl/test/include/fbl/tests/intrusive_containers/objects.h
diff --git a/zircon/system/utest/fbl/include/fbl/tests/intrusive_containers/ordered_associative_container_test_environment.h b/zircon/system/ulib/fbl/test/include/fbl/tests/intrusive_containers/ordered_associative_container_test_environment.h
similarity index 100%
rename from zircon/system/utest/fbl/include/fbl/tests/intrusive_containers/ordered_associative_container_test_environment.h
rename to zircon/system/ulib/fbl/test/include/fbl/tests/intrusive_containers/ordered_associative_container_test_environment.h
diff --git a/zircon/system/utest/fbl/include/fbl/tests/intrusive_containers/sequence_container_test_environment.h b/zircon/system/ulib/fbl/test/include/fbl/tests/intrusive_containers/sequence_container_test_environment.h
similarity index 100%
rename from zircon/system/utest/fbl/include/fbl/tests/intrusive_containers/sequence_container_test_environment.h
rename to zircon/system/ulib/fbl/test/include/fbl/tests/intrusive_containers/sequence_container_test_environment.h
diff --git a/zircon/system/utest/fbl/include/fbl/tests/intrusive_containers/test_environment_utils.h b/zircon/system/ulib/fbl/test/include/fbl/tests/intrusive_containers/test_environment_utils.h
similarity index 100%
rename from zircon/system/utest/fbl/include/fbl/tests/intrusive_containers/test_environment_utils.h
rename to zircon/system/ulib/fbl/test/include/fbl/tests/intrusive_containers/test_environment_utils.h
diff --git a/zircon/system/utest/fbl/include/fbl/tests/intrusive_containers/test_thunks.h b/zircon/system/ulib/fbl/test/include/fbl/tests/intrusive_containers/test_thunks.h
similarity index 100%
rename from zircon/system/utest/fbl/include/fbl/tests/intrusive_containers/test_thunks.h
rename to zircon/system/ulib/fbl/test/include/fbl/tests/intrusive_containers/test_thunks.h
diff --git a/zircon/system/utest/fbl/include/fbl/tests/lfsr.h b/zircon/system/ulib/fbl/test/include/fbl/tests/lfsr.h
similarity index 100%
rename from zircon/system/utest/fbl/include/fbl/tests/lfsr.h
rename to zircon/system/ulib/fbl/test/include/fbl/tests/lfsr.h
diff --git a/zircon/system/utest/fbl/intrusive_container_tests.cpp b/zircon/system/ulib/fbl/test/intrusive_container_tests.cpp
similarity index 100%
rename from zircon/system/utest/fbl/intrusive_container_tests.cpp
rename to zircon/system/ulib/fbl/test/intrusive_container_tests.cpp
diff --git a/zircon/system/utest/fbl/intrusive_doubly_linked_list_tests.cpp b/zircon/system/ulib/fbl/test/intrusive_doubly_linked_list_tests.cpp
similarity index 100%
rename from zircon/system/utest/fbl/intrusive_doubly_linked_list_tests.cpp
rename to zircon/system/ulib/fbl/test/intrusive_doubly_linked_list_tests.cpp
diff --git a/zircon/system/utest/fbl/intrusive_hash_table_dll_tests.cpp b/zircon/system/ulib/fbl/test/intrusive_hash_table_dll_tests.cpp
similarity index 100%
rename from zircon/system/utest/fbl/intrusive_hash_table_dll_tests.cpp
rename to zircon/system/ulib/fbl/test/intrusive_hash_table_dll_tests.cpp
diff --git a/zircon/system/utest/fbl/intrusive_hash_table_sll_tests.cpp b/zircon/system/ulib/fbl/test/intrusive_hash_table_sll_tests.cpp
similarity index 100%
rename from zircon/system/utest/fbl/intrusive_hash_table_sll_tests.cpp
rename to zircon/system/ulib/fbl/test/intrusive_hash_table_sll_tests.cpp
diff --git a/zircon/system/utest/fbl/intrusive_singly_linked_list_tests.cpp b/zircon/system/ulib/fbl/test/intrusive_singly_linked_list_tests.cpp
similarity index 100%
rename from zircon/system/utest/fbl/intrusive_singly_linked_list_tests.cpp
rename to zircon/system/ulib/fbl/test/intrusive_singly_linked_list_tests.cpp
diff --git a/zircon/system/utest/fbl/intrusive_wavl_tree_tests.cpp b/zircon/system/ulib/fbl/test/intrusive_wavl_tree_tests.cpp
similarity index 100%
rename from zircon/system/utest/fbl/intrusive_wavl_tree_tests.cpp
rename to zircon/system/ulib/fbl/test/intrusive_wavl_tree_tests.cpp
diff --git a/zircon/system/utest/fbl/macro_tests.cpp b/zircon/system/ulib/fbl/test/macro_tests.cpp
similarity index 100%
rename from zircon/system/utest/fbl/macro_tests.cpp
rename to zircon/system/ulib/fbl/test/macro_tests.cpp
diff --git a/zircon/system/utest/fbl/recycler_tests.cpp b/zircon/system/ulib/fbl/test/recycler_tests.cpp
similarity index 100%
rename from zircon/system/utest/fbl/recycler_tests.cpp
rename to zircon/system/ulib/fbl/test/recycler_tests.cpp
diff --git a/zircon/system/utest/fbl/ref_counted_tests.cpp b/zircon/system/ulib/fbl/test/ref_counted_tests.cpp
similarity index 100%
rename from zircon/system/utest/fbl/ref_counted_tests.cpp
rename to zircon/system/ulib/fbl/test/ref_counted_tests.cpp
diff --git a/zircon/system/utest/fbl/ref_counted_upgradeable_tests.cpp b/zircon/system/ulib/fbl/test/ref_counted_upgradeable_tests.cpp
similarity index 100%
rename from zircon/system/utest/fbl/ref_counted_upgradeable_tests.cpp
rename to zircon/system/ulib/fbl/test/ref_counted_upgradeable_tests.cpp
diff --git a/zircon/system/utest/fbl/ref_ptr_tests.cpp b/zircon/system/ulib/fbl/test/ref_ptr_tests.cpp
similarity index 100%
rename from zircon/system/utest/fbl/ref_ptr_tests.cpp
rename to zircon/system/ulib/fbl/test/ref_ptr_tests.cpp
diff --git a/zircon/system/utest/fbl/slab_allocator_tests.cpp b/zircon/system/ulib/fbl/test/slab_allocator_tests.cpp
similarity index 100%
rename from zircon/system/utest/fbl/slab_allocator_tests.cpp
rename to zircon/system/ulib/fbl/test/slab_allocator_tests.cpp
diff --git a/zircon/system/utest/fbl/string_buffer_tests.cpp b/zircon/system/ulib/fbl/test/string_buffer_tests.cpp
similarity index 100%
rename from zircon/system/utest/fbl/string_buffer_tests.cpp
rename to zircon/system/ulib/fbl/test/string_buffer_tests.cpp
diff --git a/zircon/system/utest/fbl/string_piece_tests.cpp b/zircon/system/ulib/fbl/test/string_piece_tests.cpp
similarity index 100%
rename from zircon/system/utest/fbl/string_piece_tests.cpp
rename to zircon/system/ulib/fbl/test/string_piece_tests.cpp
diff --git a/zircon/system/utest/fbl/string_printf_tests.cpp b/zircon/system/ulib/fbl/test/string_printf_tests.cpp
similarity index 100%
rename from zircon/system/utest/fbl/string_printf_tests.cpp
rename to zircon/system/ulib/fbl/test/string_printf_tests.cpp
diff --git a/zircon/system/utest/fbl/string_tests.cpp b/zircon/system/ulib/fbl/test/string_tests.cpp
similarity index 100%
rename from zircon/system/utest/fbl/string_tests.cpp
rename to zircon/system/ulib/fbl/test/string_tests.cpp
diff --git a/zircon/system/utest/fbl/string_traits_tests.cpp b/zircon/system/ulib/fbl/test/string_traits_tests.cpp
similarity index 100%
rename from zircon/system/utest/fbl/string_traits_tests.cpp
rename to zircon/system/ulib/fbl/test/string_traits_tests.cpp
diff --git a/zircon/system/utest/fbl/type_info_tests.cpp b/zircon/system/ulib/fbl/test/type_info_tests.cpp
similarity index 100%
rename from zircon/system/utest/fbl/type_info_tests.cpp
rename to zircon/system/ulib/fbl/test/type_info_tests.cpp
diff --git a/zircon/system/utest/fbl/unique_fd_tests.cpp b/zircon/system/ulib/fbl/test/unique_fd_tests.cpp
similarity index 100%
rename from zircon/system/utest/fbl/unique_fd_tests.cpp
rename to zircon/system/ulib/fbl/test/unique_fd_tests.cpp
diff --git a/zircon/system/utest/fbl/unique_free_ptr_tests.cpp b/zircon/system/ulib/fbl/test/unique_free_ptr_tests.cpp
similarity index 100%
rename from zircon/system/utest/fbl/unique_free_ptr_tests.cpp
rename to zircon/system/ulib/fbl/test/unique_free_ptr_tests.cpp
diff --git a/zircon/system/utest/fbl/unique_ptr_tests.cpp b/zircon/system/ulib/fbl/test/unique_ptr_tests.cpp
similarity index 100%
rename from zircon/system/utest/fbl/unique_ptr_tests.cpp
rename to zircon/system/ulib/fbl/test/unique_ptr_tests.cpp
diff --git a/zircon/system/utest/fbl/vector_tests.cpp b/zircon/system/ulib/fbl/test/vector_tests.cpp
similarity index 100%
rename from zircon/system/utest/fbl/vector_tests.cpp
rename to zircon/system/ulib/fbl/test/vector_tests.cpp
diff --git a/zircon/system/utest/BUILD.gn b/zircon/system/utest/BUILD.gn
index ecda379256ba5e232ab243586b6505626d411285..7b560e2733c32ed6d6860ae070fe8e7fa7d20acd 100644
--- a/zircon/system/utest/BUILD.gn
+++ b/zircon/system/utest/BUILD.gn
@@ -62,6 +62,7 @@ if (current_cpu != "") {
       "$zx/system/ulib/digest/test",
       "$zx/system/ulib/disk-inspector/test",
       "$zx/system/ulib/driver-integration-test/test",
+      "$zx/system/ulib/fbl/test",
       "$zx/system/ulib/fvm/test",
       "$zx/system/ulib/gpt/test",
       "$zx/system/ulib/id_allocator/test",
@@ -109,7 +110,6 @@ if (current_cpu != "") {
       "evil",
       "exception",
       "exit",
-      "fbl",
       "fdio",
       "ffl",
       "fidl",
@@ -216,11 +216,11 @@ if (current_cpu != "") {
   group("host-tests") {
     testonly = true
     deps = [
+      "$zx/system/ulib/fbl/test",
       "$zx/system/ulib/fvm/test",
       "$zx/system/ulib/zxtest/test",
       "$zx/system/ulib/trace-reader:tests",
       "cmdline",
-      "fbl",
       "ffl",
       "fidl-compiler",
       "fit",