diff --git a/BUILD b/BUILD
index 894186b35f2..ae8e518fffd 100644
--- a/BUILD
+++ b/BUILD
@@ -1348,14 +1348,14 @@ grpc_cc_library(
 grpc_cc_library(
     name = "channelz",
     srcs = [
-        "//src/core:lib/channel/channel_trace.cc",
-        "//src/core:lib/channel/channelz.cc",
-        "//src/core:lib/channel/channelz_registry.cc",
+        "//src/core:channelz/channel_trace.cc",
+        "//src/core:channelz/channelz.cc",
+        "//src/core:channelz/channelz_registry.cc",
     ],
     hdrs = [
-        "//src/core:lib/channel/channel_trace.h",
-        "//src/core:lib/channel/channelz.h",
-        "//src/core:lib/channel/channelz_registry.h",
+        "//src/core:channelz/channel_trace.h",
+        "//src/core:channelz/channelz.h",
+        "//src/core:channelz/channelz_registry.h",
     ],
     external_deps = [
         "absl/base:core_headers",
@@ -3532,7 +3532,6 @@ grpc_cc_library(
         "xds_orca_service_upb",
         "xds_orca_upb",
         "//src/core:backend_metric_parser",
-        "//src/core:client_channel_channelz",
         "//src/core:closure",
         "//src/core:error",
         "//src/core:grpc_backend_metric_data",
@@ -3666,7 +3665,6 @@ grpc_cc_library(
         "//src/core:channel_init",
         "//src/core:channel_stack_type",
         "//src/core:client_channel_backup_poller",
-        "//src/core:client_channel_channelz",
         "//src/core:client_channel_internal_header",
         "//src/core:client_channel_service_config",
         "//src/core:closure",
diff --git a/CMakeLists.txt b/CMakeLists.txt
index bce2fd580fe..c7db2d856ab 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1819,8 +1819,10 @@ endif()
 
 
 add_library(grpc
+  src/core/channelz/channel_trace.cc
+  src/core/channelz/channelz.cc
+  src/core/channelz/channelz_registry.cc
   src/core/client_channel/backup_poller.cc
-  src/core/client_channel/client_channel_channelz.cc
   src/core/client_channel/client_channel_factory.cc
   src/core/client_channel/client_channel_filter.cc
   src/core/client_channel/client_channel_plugin.cc
@@ -2245,9 +2247,6 @@ add_library(grpc
   src/core/lib/channel/channel_stack_builder.cc
   src/core/lib/channel/channel_stack_builder_impl.cc
   src/core/lib/channel/channel_stack_trace.cc
-  src/core/lib/channel/channel_trace.cc
-  src/core/lib/channel/channelz.cc
-  src/core/lib/channel/channelz_registry.cc
   src/core/lib/channel/connected_channel.cc
   src/core/lib/channel/metrics.cc
   src/core/lib/channel/promise_based_filter.cc
@@ -2916,8 +2915,10 @@ endif()
 endif()
 
 add_library(grpc_unsecure
+  src/core/channelz/channel_trace.cc
+  src/core/channelz/channelz.cc
+  src/core/channelz/channelz_registry.cc
   src/core/client_channel/backup_poller.cc
-  src/core/client_channel/client_channel_channelz.cc
   src/core/client_channel/client_channel_factory.cc
   src/core/client_channel/client_channel_filter.cc
   src/core/client_channel/client_channel_plugin.cc
@@ -3011,9 +3012,6 @@ add_library(grpc_unsecure
   src/core/lib/channel/channel_stack_builder.cc
   src/core/lib/channel/channel_stack_builder_impl.cc
   src/core/lib/channel/channel_stack_trace.cc
-  src/core/lib/channel/channel_trace.cc
-  src/core/lib/channel/channelz.cc
-  src/core/lib/channel/channelz_registry.cc
   src/core/lib/channel/connected_channel.cc
   src/core/lib/channel/metrics.cc
   src/core/lib/channel/promise_based_filter.cc
@@ -5113,6 +5111,9 @@ endif()
 
 
 add_library(grpc_authorization_provider
+  src/core/channelz/channel_trace.cc
+  src/core/channelz/channelz.cc
+  src/core/channelz/channelz_registry.cc
   src/core/ext/upb-gen/google/protobuf/any.upb_minitable.c
   src/core/ext/upb-gen/google/rpc/status.upb_minitable.c
   src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.c
@@ -5128,9 +5129,6 @@ add_library(grpc_authorization_provider
   src/core/lib/channel/channel_stack_builder.cc
   src/core/lib/channel/channel_stack_builder_impl.cc
   src/core/lib/channel/channel_stack_trace.cc
-  src/core/lib/channel/channel_trace.cc
-  src/core/lib/channel/channelz.cc
-  src/core/lib/channel/channelz_registry.cc
   src/core/lib/channel/connected_channel.cc
   src/core/lib/channel/metrics.cc
   src/core/lib/channel/promise_based_filter.cc
diff --git a/Makefile b/Makefile
index 30be778e03d..33f21133e1f 100644
--- a/Makefile
+++ b/Makefile
@@ -666,8 +666,10 @@ clean:
 # deps: ['cares', 'libssl', 'z']
 # transitive_deps: ['cares', 'libssl', 'z']
 LIBGRPC_SRC = \
+    src/core/channelz/channel_trace.cc \
+    src/core/channelz/channelz.cc \
+    src/core/channelz/channelz_registry.cc \
     src/core/client_channel/backup_poller.cc \
-    src/core/client_channel/client_channel_channelz.cc \
     src/core/client_channel/client_channel_factory.cc \
     src/core/client_channel/client_channel_filter.cc \
     src/core/client_channel/client_channel_plugin.cc \
@@ -1092,9 +1094,6 @@ LIBGRPC_SRC = \
     src/core/lib/channel/channel_stack_builder.cc \
     src/core/lib/channel/channel_stack_builder_impl.cc \
     src/core/lib/channel/channel_stack_trace.cc \
-    src/core/lib/channel/channel_trace.cc \
-    src/core/lib/channel/channelz.cc \
-    src/core/lib/channel/channelz_registry.cc \
     src/core/lib/channel/connected_channel.cc \
     src/core/lib/channel/metrics.cc \
     src/core/lib/channel/promise_based_filter.cc \
diff --git a/Package.swift b/Package.swift
index b9ce42b95e9..0eb0d795a66 100644
--- a/Package.swift
+++ b/Package.swift
@@ -117,10 +117,14 @@ let package = Package(
         "include/grpc/support/thd_id.h",
         "include/grpc/support/time.h",
         "include/grpc/support/workaround_list.h",
+        "src/core/channelz/channel_trace.cc",
+        "src/core/channelz/channel_trace.h",
+        "src/core/channelz/channelz.cc",
+        "src/core/channelz/channelz.h",
+        "src/core/channelz/channelz_registry.cc",
+        "src/core/channelz/channelz_registry.h",
         "src/core/client_channel/backup_poller.cc",
         "src/core/client_channel/backup_poller.h",
-        "src/core/client_channel/client_channel_channelz.cc",
-        "src/core/client_channel/client_channel_channelz.h",
         "src/core/client_channel/client_channel_factory.cc",
         "src/core/client_channel/client_channel_factory.h",
         "src/core/client_channel/client_channel_filter.cc",
@@ -1144,12 +1148,6 @@ let package = Package(
         "src/core/lib/channel/channel_stack_builder_impl.h",
         "src/core/lib/channel/channel_stack_trace.cc",
         "src/core/lib/channel/channel_stack_trace.h",
-        "src/core/lib/channel/channel_trace.cc",
-        "src/core/lib/channel/channel_trace.h",
-        "src/core/lib/channel/channelz.cc",
-        "src/core/lib/channel/channelz.h",
-        "src/core/lib/channel/channelz_registry.cc",
-        "src/core/lib/channel/channelz_registry.h",
         "src/core/lib/channel/connected_channel.cc",
         "src/core/lib/channel/connected_channel.h",
         "src/core/lib/channel/context.h",
diff --git a/build_autogenerated.yaml b/build_autogenerated.yaml
index 0418b6ae26a..e8e69293969 100644
--- a/build_autogenerated.yaml
+++ b/build_autogenerated.yaml
@@ -221,8 +221,10 @@ libs:
   - include/grpc/support/time.h
   - include/grpc/support/workaround_list.h
   headers:
+  - src/core/channelz/channel_trace.h
+  - src/core/channelz/channelz.h
+  - src/core/channelz/channelz_registry.h
   - src/core/client_channel/backup_poller.h
-  - src/core/client_channel/client_channel_channelz.h
   - src/core/client_channel/client_channel_factory.h
   - src/core/client_channel/client_channel_filter.h
   - src/core/client_channel/client_channel_internal.h
@@ -822,9 +824,6 @@ libs:
   - src/core/lib/channel/channel_stack_builder.h
   - src/core/lib/channel/channel_stack_builder_impl.h
   - src/core/lib/channel/channel_stack_trace.h
-  - src/core/lib/channel/channel_trace.h
-  - src/core/lib/channel/channelz.h
-  - src/core/lib/channel/channelz_registry.h
   - src/core/lib/channel/connected_channel.h
   - src/core/lib/channel/context.h
   - src/core/lib/channel/metrics.h
@@ -1245,8 +1244,10 @@ libs:
   - third_party/upb/upb/generated_code_support.h
   - third_party/xxhash/xxhash.h
   src:
+  - src/core/channelz/channel_trace.cc
+  - src/core/channelz/channelz.cc
+  - src/core/channelz/channelz_registry.cc
   - src/core/client_channel/backup_poller.cc
-  - src/core/client_channel/client_channel_channelz.cc
   - src/core/client_channel/client_channel_factory.cc
   - src/core/client_channel/client_channel_filter.cc
   - src/core/client_channel/client_channel_plugin.cc
@@ -1671,9 +1672,6 @@ libs:
   - src/core/lib/channel/channel_stack_builder.cc
   - src/core/lib/channel/channel_stack_builder_impl.cc
   - src/core/lib/channel/channel_stack_trace.cc
-  - src/core/lib/channel/channel_trace.cc
-  - src/core/lib/channel/channelz.cc
-  - src/core/lib/channel/channelz_registry.cc
   - src/core/lib/channel/connected_channel.cc
   - src/core/lib/channel/metrics.cc
   - src/core/lib/channel/promise_based_filter.cc
@@ -2209,8 +2207,10 @@ libs:
   - include/grpc/support/time.h
   - include/grpc/support/workaround_list.h
   headers:
+  - src/core/channelz/channel_trace.h
+  - src/core/channelz/channelz.h
+  - src/core/channelz/channelz_registry.h
   - src/core/client_channel/backup_poller.h
-  - src/core/client_channel/client_channel_channelz.h
   - src/core/client_channel/client_channel_factory.h
   - src/core/client_channel/client_channel_filter.h
   - src/core/client_channel/client_channel_internal.h
@@ -2327,9 +2327,6 @@ libs:
   - src/core/lib/channel/channel_stack_builder.h
   - src/core/lib/channel/channel_stack_builder_impl.h
   - src/core/lib/channel/channel_stack_trace.h
-  - src/core/lib/channel/channel_trace.h
-  - src/core/lib/channel/channelz.h
-  - src/core/lib/channel/channelz_registry.h
   - src/core/lib/channel/connected_channel.h
   - src/core/lib/channel/context.h
   - src/core/lib/channel/metrics.h
@@ -2702,8 +2699,10 @@ libs:
   - third_party/upb/upb/wire/reader.h
   - third_party/upb/upb/wire/types.h
   src:
+  - src/core/channelz/channel_trace.cc
+  - src/core/channelz/channelz.cc
+  - src/core/channelz/channelz_registry.cc
   - src/core/client_channel/backup_poller.cc
-  - src/core/client_channel/client_channel_channelz.cc
   - src/core/client_channel/client_channel_factory.cc
   - src/core/client_channel/client_channel_filter.cc
   - src/core/client_channel/client_channel_plugin.cc
@@ -2797,9 +2796,6 @@ libs:
   - src/core/lib/channel/channel_stack_builder.cc
   - src/core/lib/channel/channel_stack_builder_impl.cc
   - src/core/lib/channel/channel_stack_trace.cc
-  - src/core/lib/channel/channel_trace.cc
-  - src/core/lib/channel/channelz.cc
-  - src/core/lib/channel/channelz_registry.cc
   - src/core/lib/channel/connected_channel.cc
   - src/core/lib/channel/metrics.cc
   - src/core/lib/channel/promise_based_filter.cc
@@ -4395,6 +4391,9 @@ libs:
   - include/grpc/support/time.h
   - include/grpc/support/workaround_list.h
   headers:
+  - src/core/channelz/channel_trace.h
+  - src/core/channelz/channelz.h
+  - src/core/channelz/channelz_registry.h
   - src/core/ext/upb-gen/google/protobuf/any.upb.h
   - src/core/ext/upb-gen/google/protobuf/any.upb_minitable.h
   - src/core/ext/upb-gen/google/rpc/status.upb.h
@@ -4418,9 +4417,6 @@ libs:
   - src/core/lib/channel/channel_stack_builder.h
   - src/core/lib/channel/channel_stack_builder_impl.h
   - src/core/lib/channel/channel_stack_trace.h
-  - src/core/lib/channel/channel_trace.h
-  - src/core/lib/channel/channelz.h
-  - src/core/lib/channel/channelz_registry.h
   - src/core/lib/channel/connected_channel.h
   - src/core/lib/channel/context.h
   - src/core/lib/channel/metrics.h
@@ -4747,6 +4743,9 @@ libs:
   - third_party/upb/upb/wire/reader.h
   - third_party/upb/upb/wire/types.h
   src:
+  - src/core/channelz/channel_trace.cc
+  - src/core/channelz/channelz.cc
+  - src/core/channelz/channelz_registry.cc
   - src/core/ext/upb-gen/google/protobuf/any.upb_minitable.c
   - src/core/ext/upb-gen/google/rpc/status.upb_minitable.c
   - src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.c
@@ -4762,9 +4761,6 @@ libs:
   - src/core/lib/channel/channel_stack_builder.cc
   - src/core/lib/channel/channel_stack_builder_impl.cc
   - src/core/lib/channel/channel_stack_trace.cc
-  - src/core/lib/channel/channel_trace.cc
-  - src/core/lib/channel/channelz.cc
-  - src/core/lib/channel/channelz_registry.cc
   - src/core/lib/channel/connected_channel.cc
   - src/core/lib/channel/metrics.cc
   - src/core/lib/channel/promise_based_filter.cc
diff --git a/config.m4 b/config.m4
index d103e945a6b..be7973006b8 100644
--- a/config.m4
+++ b/config.m4
@@ -41,8 +41,10 @@ if test "$PHP_GRPC" != "no"; then
   PHP_SUBST(GRPC_SHARED_LIBADD)
 
   PHP_NEW_EXTENSION(grpc,
+    src/core/channelz/channel_trace.cc \
+    src/core/channelz/channelz.cc \
+    src/core/channelz/channelz_registry.cc \
     src/core/client_channel/backup_poller.cc \
-    src/core/client_channel/client_channel_channelz.cc \
     src/core/client_channel/client_channel_factory.cc \
     src/core/client_channel/client_channel_filter.cc \
     src/core/client_channel/client_channel_plugin.cc \
@@ -467,9 +469,6 @@ if test "$PHP_GRPC" != "no"; then
     src/core/lib/channel/channel_stack_builder.cc \
     src/core/lib/channel/channel_stack_builder_impl.cc \
     src/core/lib/channel/channel_stack_trace.cc \
-    src/core/lib/channel/channel_trace.cc \
-    src/core/lib/channel/channelz.cc \
-    src/core/lib/channel/channelz_registry.cc \
     src/core/lib/channel/connected_channel.cc \
     src/core/lib/channel/metrics.cc \
     src/core/lib/channel/promise_based_filter.cc \
@@ -1383,6 +1382,7 @@ if test "$PHP_GRPC" != "no"; then
     -DGRPC_XDS_USER_AGENT_NAME_SUFFIX='"\"PHP\""' \
     -DGRPC_XDS_USER_AGENT_VERSION_SUFFIX='"\"1.64.0dev\""')
 
+  PHP_ADD_BUILD_DIR($ext_builddir/src/core/channelz)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/client_channel)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/backend_metrics)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/census)
diff --git a/config.w32 b/config.w32
index f5fc445b434..3ab3dbfdf22 100644
--- a/config.w32
+++ b/config.w32
@@ -6,8 +6,10 @@ ARG_WITH("grpc", "grpc support", "no");
 if (PHP_GRPC != "no") {
 
   EXTENSION("grpc",
+    "src\\core\\channelz\\channel_trace.cc " +
+    "src\\core\\channelz\\channelz.cc " +
+    "src\\core\\channelz\\channelz_registry.cc " +
     "src\\core\\client_channel\\backup_poller.cc " +
-    "src\\core\\client_channel\\client_channel_channelz.cc " +
     "src\\core\\client_channel\\client_channel_factory.cc " +
     "src\\core\\client_channel\\client_channel_filter.cc " +
     "src\\core\\client_channel\\client_channel_plugin.cc " +
@@ -432,9 +434,6 @@ if (PHP_GRPC != "no") {
     "src\\core\\lib\\channel\\channel_stack_builder.cc " +
     "src\\core\\lib\\channel\\channel_stack_builder_impl.cc " +
     "src\\core\\lib\\channel\\channel_stack_trace.cc " +
-    "src\\core\\lib\\channel\\channel_trace.cc " +
-    "src\\core\\lib\\channel\\channelz.cc " +
-    "src\\core\\lib\\channel\\channelz_registry.cc " +
     "src\\core\\lib\\channel\\connected_channel.cc " +
     "src\\core\\lib\\channel\\metrics.cc " +
     "src\\core\\lib\\channel\\promise_based_filter.cc " +
@@ -1375,6 +1374,7 @@ if (PHP_GRPC != "no") {
   FSO.CreateFolder(base_dir+"\\ext\\grpc");
   FSO.CreateFolder(base_dir+"\\ext\\grpc\\src");
   FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core");
+  FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\channelz");
   FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\client_channel");
   FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext");
   FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\filters");
diff --git a/gRPC-C++.podspec b/gRPC-C++.podspec
index 046f9667500..85099db02ee 100644
--- a/gRPC-C++.podspec
+++ b/gRPC-C++.podspec
@@ -260,8 +260,10 @@ Pod::Spec.new do |s|
     ss.dependency 'abseil/types/variant', abseil_version
     ss.dependency 'abseil/utility/utility', abseil_version
 
-    ss.source_files = 'src/core/client_channel/backup_poller.h',
-                      'src/core/client_channel/client_channel_channelz.h',
+    ss.source_files = 'src/core/channelz/channel_trace.h',
+                      'src/core/channelz/channelz.h',
+                      'src/core/channelz/channelz_registry.h',
+                      'src/core/client_channel/backup_poller.h',
                       'src/core/client_channel/client_channel_factory.h',
                       'src/core/client_channel/client_channel_filter.h',
                       'src/core/client_channel/client_channel_internal.h',
@@ -900,9 +902,6 @@ Pod::Spec.new do |s|
                       'src/core/lib/channel/channel_stack_builder.h',
                       'src/core/lib/channel/channel_stack_builder_impl.h',
                       'src/core/lib/channel/channel_stack_trace.h',
-                      'src/core/lib/channel/channel_trace.h',
-                      'src/core/lib/channel/channelz.h',
-                      'src/core/lib/channel/channelz_registry.h',
                       'src/core/lib/channel/connected_channel.h',
                       'src/core/lib/channel/context.h',
                       'src/core/lib/channel/metrics.h',
@@ -1550,8 +1549,10 @@ Pod::Spec.new do |s|
                       'third_party/zlib/zlib.h',
                       'third_party/zlib/zutil.h'
 
-    ss.private_header_files = 'src/core/client_channel/backup_poller.h',
-                              'src/core/client_channel/client_channel_channelz.h',
+    ss.private_header_files = 'src/core/channelz/channel_trace.h',
+                              'src/core/channelz/channelz.h',
+                              'src/core/channelz/channelz_registry.h',
+                              'src/core/client_channel/backup_poller.h',
                               'src/core/client_channel/client_channel_factory.h',
                               'src/core/client_channel/client_channel_filter.h',
                               'src/core/client_channel/client_channel_internal.h',
@@ -2172,9 +2173,6 @@ Pod::Spec.new do |s|
                               'src/core/lib/channel/channel_stack_builder.h',
                               'src/core/lib/channel/channel_stack_builder_impl.h',
                               'src/core/lib/channel/channel_stack_trace.h',
-                              'src/core/lib/channel/channel_trace.h',
-                              'src/core/lib/channel/channelz.h',
-                              'src/core/lib/channel/channelz_registry.h',
                               'src/core/lib/channel/connected_channel.h',
                               'src/core/lib/channel/context.h',
                               'src/core/lib/channel/metrics.h',
diff --git a/gRPC-Core.podspec b/gRPC-Core.podspec
index 1f25780fb3a..0d69b0c30d4 100644
--- a/gRPC-Core.podspec
+++ b/gRPC-Core.podspec
@@ -233,10 +233,14 @@ Pod::Spec.new do |s|
     ss.dependency 'abseil/utility/utility', abseil_version
     ss.compiler_flags = '-DBORINGSSL_PREFIX=GRPC -Wno-unreachable-code -Wno-shorten-64-to-32'
 
-    ss.source_files = 'src/core/client_channel/backup_poller.cc',
+    ss.source_files = 'src/core/channelz/channel_trace.cc',
+                      'src/core/channelz/channel_trace.h',
+                      'src/core/channelz/channelz.cc',
+                      'src/core/channelz/channelz.h',
+                      'src/core/channelz/channelz_registry.cc',
+                      'src/core/channelz/channelz_registry.h',
+                      'src/core/client_channel/backup_poller.cc',
                       'src/core/client_channel/backup_poller.h',
-                      'src/core/client_channel/client_channel_channelz.cc',
-                      'src/core/client_channel/client_channel_channelz.h',
                       'src/core/client_channel/client_channel_factory.cc',
                       'src/core/client_channel/client_channel_factory.h',
                       'src/core/client_channel/client_channel_filter.cc',
@@ -1260,12 +1264,6 @@ Pod::Spec.new do |s|
                       'src/core/lib/channel/channel_stack_builder_impl.h',
                       'src/core/lib/channel/channel_stack_trace.cc',
                       'src/core/lib/channel/channel_stack_trace.h',
-                      'src/core/lib/channel/channel_trace.cc',
-                      'src/core/lib/channel/channel_trace.h',
-                      'src/core/lib/channel/channelz.cc',
-                      'src/core/lib/channel/channelz.h',
-                      'src/core/lib/channel/channelz_registry.cc',
-                      'src/core/lib/channel/channelz_registry.h',
                       'src/core/lib/channel/connected_channel.cc',
                       'src/core/lib/channel/connected_channel.h',
                       'src/core/lib/channel/context.h',
@@ -2351,8 +2349,10 @@ Pod::Spec.new do |s|
                       'third_party/zlib/zlib.h',
                       'third_party/zlib/zutil.c',
                       'third_party/zlib/zutil.h'
-    ss.private_header_files = 'src/core/client_channel/backup_poller.h',
-                              'src/core/client_channel/client_channel_channelz.h',
+    ss.private_header_files = 'src/core/channelz/channel_trace.h',
+                              'src/core/channelz/channelz.h',
+                              'src/core/channelz/channelz_registry.h',
+                              'src/core/client_channel/backup_poller.h',
                               'src/core/client_channel/client_channel_factory.h',
                               'src/core/client_channel/client_channel_filter.h',
                               'src/core/client_channel/client_channel_internal.h',
@@ -2952,9 +2952,6 @@ Pod::Spec.new do |s|
                               'src/core/lib/channel/channel_stack_builder.h',
                               'src/core/lib/channel/channel_stack_builder_impl.h',
                               'src/core/lib/channel/channel_stack_trace.h',
-                              'src/core/lib/channel/channel_trace.h',
-                              'src/core/lib/channel/channelz.h',
-                              'src/core/lib/channel/channelz_registry.h',
                               'src/core/lib/channel/connected_channel.h',
                               'src/core/lib/channel/context.h',
                               'src/core/lib/channel/metrics.h',
diff --git a/grpc.gemspec b/grpc.gemspec
index 3a986b6d65e..3c714dd2565 100644
--- a/grpc.gemspec
+++ b/grpc.gemspec
@@ -123,10 +123,14 @@ Gem::Specification.new do |s|
   s.files += %w( include/grpc/support/thd_id.h )
   s.files += %w( include/grpc/support/time.h )
   s.files += %w( include/grpc/support/workaround_list.h )
+  s.files += %w( src/core/channelz/channel_trace.cc )
+  s.files += %w( src/core/channelz/channel_trace.h )
+  s.files += %w( src/core/channelz/channelz.cc )
+  s.files += %w( src/core/channelz/channelz.h )
+  s.files += %w( src/core/channelz/channelz_registry.cc )
+  s.files += %w( src/core/channelz/channelz_registry.h )
   s.files += %w( src/core/client_channel/backup_poller.cc )
   s.files += %w( src/core/client_channel/backup_poller.h )
-  s.files += %w( src/core/client_channel/client_channel_channelz.cc )
-  s.files += %w( src/core/client_channel/client_channel_channelz.h )
   s.files += %w( src/core/client_channel/client_channel_factory.cc )
   s.files += %w( src/core/client_channel/client_channel_factory.h )
   s.files += %w( src/core/client_channel/client_channel_filter.cc )
@@ -1150,12 +1154,6 @@ Gem::Specification.new do |s|
   s.files += %w( src/core/lib/channel/channel_stack_builder_impl.h )
   s.files += %w( src/core/lib/channel/channel_stack_trace.cc )
   s.files += %w( src/core/lib/channel/channel_stack_trace.h )
-  s.files += %w( src/core/lib/channel/channel_trace.cc )
-  s.files += %w( src/core/lib/channel/channel_trace.h )
-  s.files += %w( src/core/lib/channel/channelz.cc )
-  s.files += %w( src/core/lib/channel/channelz.h )
-  s.files += %w( src/core/lib/channel/channelz_registry.cc )
-  s.files += %w( src/core/lib/channel/channelz_registry.h )
   s.files += %w( src/core/lib/channel/connected_channel.cc )
   s.files += %w( src/core/lib/channel/connected_channel.h )
   s.files += %w( src/core/lib/channel/context.h )
diff --git a/package.xml b/package.xml
index 6a184f74d73..cd1737e1450 100644
--- a/package.xml
+++ b/package.xml
@@ -105,10 +105,14 @@
     <file baseinstalldir="/" name="include/grpc/support/thd_id.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/support/time.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/support/workaround_list.h" role="src" />
+    <file baseinstalldir="/" name="src/core/channelz/channel_trace.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/channelz/channel_trace.h" role="src" />
+    <file baseinstalldir="/" name="src/core/channelz/channelz.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/channelz/channelz.h" role="src" />
+    <file baseinstalldir="/" name="src/core/channelz/channelz_registry.cc" role="src" />
+    <file baseinstalldir="/" name="src/core/channelz/channelz_registry.h" role="src" />
     <file baseinstalldir="/" name="src/core/client_channel/backup_poller.cc" role="src" />
     <file baseinstalldir="/" name="src/core/client_channel/backup_poller.h" role="src" />
-    <file baseinstalldir="/" name="src/core/client_channel/client_channel_channelz.cc" role="src" />
-    <file baseinstalldir="/" name="src/core/client_channel/client_channel_channelz.h" role="src" />
     <file baseinstalldir="/" name="src/core/client_channel/client_channel_factory.cc" role="src" />
     <file baseinstalldir="/" name="src/core/client_channel/client_channel_factory.h" role="src" />
     <file baseinstalldir="/" name="src/core/client_channel/client_channel_filter.cc" role="src" />
@@ -1132,12 +1136,6 @@
     <file baseinstalldir="/" name="src/core/lib/channel/channel_stack_builder_impl.h" role="src" />
     <file baseinstalldir="/" name="src/core/lib/channel/channel_stack_trace.cc" role="src" />
     <file baseinstalldir="/" name="src/core/lib/channel/channel_stack_trace.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/channel/channel_trace.cc" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/channel/channel_trace.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/channel/channelz.cc" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/channel/channelz.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/channel/channelz_registry.cc" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/channel/channelz_registry.h" role="src" />
     <file baseinstalldir="/" name="src/core/lib/channel/connected_channel.cc" role="src" />
     <file baseinstalldir="/" name="src/core/lib/channel/connected_channel.h" role="src" />
     <file baseinstalldir="/" name="src/core/lib/channel/context.h" role="src" />
diff --git a/src/core/BUILD b/src/core/BUILD
index 23040cc5fe8..8f0c0a013d5 100644
--- a/src/core/BUILD
+++ b/src/core/BUILD
@@ -3309,29 +3309,6 @@ grpc_cc_library(
     ],
 )
 
-grpc_cc_library(
-    name = "client_channel_channelz",
-    srcs = [
-        "client_channel/client_channel_channelz.cc",
-    ],
-    hdrs = [
-        "client_channel/client_channel_channelz.h",
-    ],
-    external_deps = [
-        "absl/base:core_headers",
-        "absl/strings",
-    ],
-    language = "c++",
-    deps = [
-        "connectivity_state",
-        "json",
-        "//:channelz",
-        "//:gpr",
-        "//:grpc_public_hdrs",
-        "//:ref_counted_ptr",
-    ],
-)
-
 grpc_cc_library(
     name = "service_config_channel_arg_filter",
     srcs = [
@@ -5511,7 +5488,6 @@ grpc_cc_library(
     language = "c++",
     deps = [
         "channel_args",
-        "client_channel_channelz",
         "client_channel_internal_header",
         "closure",
         "connectivity_state",
diff --git a/src/core/lib/channel/channel_trace.cc b/src/core/channelz/channel_trace.cc
similarity index 98%
rename from src/core/lib/channel/channel_trace.cc
rename to src/core/channelz/channel_trace.cc
index 783a2f3b4b1..ac8be425c61 100644
--- a/src/core/lib/channel/channel_trace.cc
+++ b/src/core/channelz/channel_trace.cc
@@ -16,7 +16,7 @@
 //
 //
 
-#include "src/core/lib/channel/channel_trace.h"
+#include "src/core/channelz/channel_trace.h"
 
 #include <memory>
 #include <utility>
@@ -27,7 +27,7 @@
 #include <grpc/support/json.h>
 #include <grpc/support/port_platform.h>
 
-#include "src/core/lib/channel/channelz.h"
+#include "src/core/channelz/channelz.h"
 #include "src/core/lib/gpr/string.h"
 #include "src/core/lib/gprpp/time.h"
 #include "src/core/lib/slice/slice.h"
diff --git a/src/core/lib/channel/channel_trace.h b/src/core/channelz/channel_trace.h
similarity index 96%
rename from src/core/lib/channel/channel_trace.h
rename to src/core/channelz/channel_trace.h
index b4f40a68d38..0b8e1bc7216 100644
--- a/src/core/lib/channel/channel_trace.h
+++ b/src/core/channelz/channel_trace.h
@@ -16,8 +16,8 @@
 //
 //
 
-#ifndef GRPC_SRC_CORE_LIB_CHANNEL_CHANNEL_TRACE_H
-#define GRPC_SRC_CORE_LIB_CHANNEL_CHANNEL_TRACE_H
+#ifndef GRPC_SRC_CORE_CHANNELZ_CHANNEL_TRACE_H
+#define GRPC_SRC_CORE_CHANNELZ_CHANNEL_TRACE_H
 
 #include <stddef.h>
 #include <stdint.h>
@@ -134,4 +134,4 @@ class ChannelTrace {
 }  // namespace channelz
 }  // namespace grpc_core
 
-#endif  // GRPC_SRC_CORE_LIB_CHANNEL_CHANNEL_TRACE_H
+#endif  // GRPC_SRC_CORE_CHANNELZ_CHANNEL_TRACE_H
diff --git a/src/core/lib/channel/channelz.cc b/src/core/channelz/channelz.cc
similarity index 90%
rename from src/core/lib/channel/channelz.cc
rename to src/core/channelz/channelz.cc
index d7ae044578e..bcfe0c6b3ea 100644
--- a/src/core/lib/channel/channelz.cc
+++ b/src/core/channelz/channelz.cc
@@ -16,7 +16,7 @@
 //
 //
 
-#include "src/core/lib/channel/channelz.h"
+#include "src/core/channelz/channelz.h"
 
 #include <algorithm>
 #include <atomic>
@@ -32,10 +32,10 @@
 #include <grpc/support/port_platform.h>
 #include <grpc/support/time.h>
 
+#include "src/core/channelz/channelz_registry.h"
 #include "src/core/lib/address_utils/parse_address.h"
 #include "src/core/lib/address_utils/sockaddr_utils.h"
 #include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channelz_registry.h"
 #include "src/core/lib/gpr/string.h"
 #include "src/core/lib/gpr/useful.h"
 #include "src/core/lib/iomgr/resolved_address.h"
@@ -262,6 +262,68 @@ void ChannelNode::RemoveChildSubchannel(intptr_t child_uuid) {
   child_subchannels_.erase(child_uuid);
 }
 
+//
+// SubchannelNode
+//
+
+SubchannelNode::SubchannelNode(std::string target_address,
+                               size_t channel_tracer_max_nodes)
+    : BaseNode(EntityType::kSubchannel, target_address),
+      target_(std::move(target_address)),
+      trace_(channel_tracer_max_nodes) {}
+
+SubchannelNode::~SubchannelNode() {}
+
+void SubchannelNode::UpdateConnectivityState(grpc_connectivity_state state) {
+  connectivity_state_.store(state, std::memory_order_relaxed);
+}
+
+void SubchannelNode::SetChildSocket(RefCountedPtr<SocketNode> socket) {
+  MutexLock lock(&socket_mu_);
+  child_socket_ = std::move(socket);
+}
+
+Json SubchannelNode::RenderJson() {
+  // Create and fill the data child.
+  grpc_connectivity_state state =
+      connectivity_state_.load(std::memory_order_relaxed);
+  Json::Object data = {
+      {"state", Json::FromObject({
+                    {"state", Json::FromString(ConnectivityStateName(state))},
+                })},
+      {"target", Json::FromString(target_)},
+  };
+  // Fill in the channel trace if applicable
+  Json trace_json = trace_.RenderJson();
+  if (trace_json.type() != Json::Type::kNull) {
+    data["trace"] = std::move(trace_json);
+  }
+  // Ask CallCountingHelper to populate call count data.
+  call_counter_.PopulateCallCounts(&data);
+  // Construct top-level object.
+  Json::Object object{
+      {"ref", Json::FromObject({
+                  {"subchannelId", Json::FromString(absl::StrCat(uuid()))},
+              })},
+      {"data", Json::FromObject(std::move(data))},
+  };
+  // Populate the child socket.
+  RefCountedPtr<SocketNode> child_socket;
+  {
+    MutexLock lock(&socket_mu_);
+    child_socket = child_socket_;
+  }
+  if (child_socket != nullptr && child_socket->uuid() != 0) {
+    object["socketRef"] = Json::FromArray({
+        Json::FromObject({
+            {"socketId", Json::FromString(absl::StrCat(child_socket->uuid()))},
+            {"name", Json::FromString(child_socket->name())},
+        }),
+    });
+  }
+  return Json::FromObject(object);
+}
+
 //
 // ServerNode
 //
diff --git a/src/core/lib/channel/channelz.h b/src/core/channelz/channelz.h
similarity index 87%
rename from src/core/lib/channel/channelz.h
rename to src/core/channelz/channelz.h
index cc83387c194..c7dd8561f57 100644
--- a/src/core/lib/channel/channelz.h
+++ b/src/core/channelz/channelz.h
@@ -16,8 +16,8 @@
 //
 //
 
-#ifndef GRPC_SRC_CORE_LIB_CHANNEL_CHANNELZ_H
-#define GRPC_SRC_CORE_LIB_CHANNEL_CHANNELZ_H
+#ifndef GRPC_SRC_CORE_CHANNELZ_CHANNELZ_H
+#define GRPC_SRC_CORE_CHANNELZ_CHANNELZ_H
 
 #include <stddef.h>
 
@@ -28,6 +28,7 @@
 #include <string>
 #include <utility>
 
+#include "absl/base/thread_annotations.h"
 #include "absl/strings/string_view.h"
 #include "absl/types/optional.h"
 
@@ -36,7 +37,7 @@
 #include <grpc/slice.h>
 #include <grpc/support/port_platform.h>
 
-#include "src/core/lib/channel/channel_trace.h"
+#include "src/core/channelz/channel_trace.h"
 #include "src/core/lib/gpr/time_precise.h"
 #include "src/core/lib/gpr/useful.h"
 #include "src/core/lib/gprpp/per_cpu.h"
@@ -245,6 +246,45 @@ class ChannelNode final : public BaseNode {
   std::set<intptr_t> child_subchannels_;
 };
 
+// Handles channelz bookkeeping for subchannels
+class SubchannelNode final : public BaseNode {
+ public:
+  SubchannelNode(std::string target_address, size_t channel_tracer_max_nodes);
+  ~SubchannelNode() override;
+
+  // Sets the subchannel's connectivity state without health checking.
+  void UpdateConnectivityState(grpc_connectivity_state state);
+
+  // Used when the subchannel's child socket changes. This should be set when
+  // the subchannel's transport is created and set to nullptr when the
+  // subchannel unrefs the transport.
+  void SetChildSocket(RefCountedPtr<SocketNode> socket);
+
+  Json RenderJson() override;
+
+  // proxy methods to composed classes.
+  void AddTraceEvent(ChannelTrace::Severity severity, const grpc_slice& data) {
+    trace_.AddTraceEvent(severity, data);
+  }
+  void AddTraceEventWithReference(ChannelTrace::Severity severity,
+                                  const grpc_slice& data,
+                                  RefCountedPtr<BaseNode> referenced_channel) {
+    trace_.AddTraceEventWithReference(severity, data,
+                                      std::move(referenced_channel));
+  }
+  void RecordCallStarted() { call_counter_.RecordCallStarted(); }
+  void RecordCallFailed() { call_counter_.RecordCallFailed(); }
+  void RecordCallSucceeded() { call_counter_.RecordCallSucceeded(); }
+
+ private:
+  std::atomic<grpc_connectivity_state> connectivity_state_{GRPC_CHANNEL_IDLE};
+  Mutex socket_mu_;
+  RefCountedPtr<SocketNode> child_socket_ ABSL_GUARDED_BY(socket_mu_);
+  std::string target_;
+  CallCountingHelper call_counter_;
+  ChannelTrace trace_;
+};
+
 // Handles channelz bookkeeping for servers
 class ServerNode final : public BaseNode {
  public:
@@ -380,4 +420,4 @@ class ListenSocketNode final : public BaseNode {
 }  // namespace channelz
 }  // namespace grpc_core
 
-#endif  // GRPC_SRC_CORE_LIB_CHANNEL_CHANNELZ_H
+#endif  // GRPC_SRC_CORE_CHANNELZ_CHANNELZ_H
diff --git a/src/core/lib/channel/channelz_registry.cc b/src/core/channelz/channelz_registry.cc
similarity index 99%
rename from src/core/lib/channel/channelz_registry.cc
rename to src/core/channelz/channelz_registry.cc
index e451b187d6b..04bf4a80903 100644
--- a/src/core/lib/channel/channelz_registry.cc
+++ b/src/core/channelz/channelz_registry.cc
@@ -16,7 +16,7 @@
 //
 //
 
-#include "src/core/lib/channel/channelz_registry.h"
+#include "src/core/channelz/channelz_registry.h"
 
 #include <algorithm>
 #include <cstdint>
@@ -30,7 +30,7 @@
 #include <grpc/support/port_platform.h>
 #include <grpc/support/string_util.h>
 
-#include "src/core/lib/channel/channelz.h"
+#include "src/core/channelz/channelz.h"
 #include "src/core/lib/gprpp/sync.h"
 #include "src/core/lib/iomgr/exec_ctx.h"
 #include "src/core/lib/json/json.h"
diff --git a/src/core/lib/channel/channelz_registry.h b/src/core/channelz/channelz_registry.h
similarity index 93%
rename from src/core/lib/channel/channelz_registry.h
rename to src/core/channelz/channelz_registry.h
index b183d1690bf..39525597b4f 100644
--- a/src/core/lib/channel/channelz_registry.h
+++ b/src/core/channelz/channelz_registry.h
@@ -16,8 +16,8 @@
 //
 //
 
-#ifndef GRPC_SRC_CORE_LIB_CHANNEL_CHANNELZ_REGISTRY_H
-#define GRPC_SRC_CORE_LIB_CHANNEL_CHANNELZ_REGISTRY_H
+#ifndef GRPC_SRC_CORE_CHANNELZ_CHANNELZ_REGISTRY_H
+#define GRPC_SRC_CORE_CHANNELZ_CHANNELZ_REGISTRY_H
 
 #include <cstdint>
 #include <map>
@@ -27,7 +27,7 @@
 
 #include <grpc/support/port_platform.h>
 
-#include "src/core/lib/channel/channelz.h"
+#include "src/core/channelz/channelz.h"
 #include "src/core/lib/gprpp/ref_counted_ptr.h"
 #include "src/core/lib/gprpp/sync.h"
 
@@ -99,4 +99,4 @@ class ChannelzRegistry final {
 }  // namespace channelz
 }  // namespace grpc_core
 
-#endif  // GRPC_SRC_CORE_LIB_CHANNEL_CHANNELZ_REGISTRY_H
+#endif  // GRPC_SRC_CORE_CHANNELZ_CHANNELZ_REGISTRY_H
diff --git a/src/core/client_channel/client_channel_channelz.cc b/src/core/client_channel/client_channel_channelz.cc
deleted file mode 100644
index 29be8b0a29b..00000000000
--- a/src/core/client_channel/client_channel_channelz.cc
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-//
-// Copyright 2018 gRPC authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-//
-
-#include <grpc/support/port_platform.h>
-
-#include "src/core/client_channel/client_channel_channelz.h"
-
-#include "absl/strings/str_cat.h"
-
-#include <grpc/support/json.h>
-
-#include "src/core/lib/transport/connectivity_state.h"
-
-// IWYU pragma: no_include <type_traits>
-
-namespace grpc_core {
-namespace channelz {
-
-SubchannelNode::SubchannelNode(std::string target_address,
-                               size_t channel_tracer_max_nodes)
-    : BaseNode(EntityType::kSubchannel, target_address),
-      target_(std::move(target_address)),
-      trace_(channel_tracer_max_nodes) {}
-
-SubchannelNode::~SubchannelNode() {}
-
-void SubchannelNode::UpdateConnectivityState(grpc_connectivity_state state) {
-  connectivity_state_.store(state, std::memory_order_relaxed);
-}
-
-void SubchannelNode::SetChildSocket(RefCountedPtr<SocketNode> socket) {
-  MutexLock lock(&socket_mu_);
-  child_socket_ = std::move(socket);
-}
-
-Json SubchannelNode::RenderJson() {
-  // Create and fill the data child.
-  grpc_connectivity_state state =
-      connectivity_state_.load(std::memory_order_relaxed);
-  Json::Object data = {
-      {"state", Json::FromObject({
-                    {"state", Json::FromString(ConnectivityStateName(state))},
-                })},
-      {"target", Json::FromString(target_)},
-  };
-  // Fill in the channel trace if applicable
-  Json trace_json = trace_.RenderJson();
-  if (trace_json.type() != Json::Type::kNull) {
-    data["trace"] = std::move(trace_json);
-  }
-  // Ask CallCountingHelper to populate call count data.
-  call_counter_.PopulateCallCounts(&data);
-  // Construct top-level object.
-  Json::Object object{
-      {"ref", Json::FromObject({
-                  {"subchannelId", Json::FromString(absl::StrCat(uuid()))},
-              })},
-      {"data", Json::FromObject(std::move(data))},
-  };
-  // Populate the child socket.
-  RefCountedPtr<SocketNode> child_socket;
-  {
-    MutexLock lock(&socket_mu_);
-    child_socket = child_socket_;
-  }
-  if (child_socket != nullptr && child_socket->uuid() != 0) {
-    object["socketRef"] = Json::FromArray({
-        Json::FromObject({
-            {"socketId", Json::FromString(absl::StrCat(child_socket->uuid()))},
-            {"name", Json::FromString(child_socket->name())},
-        }),
-    });
-  }
-  return Json::FromObject(object);
-}
-
-}  // namespace channelz
-}  // namespace grpc_core
diff --git a/src/core/client_channel/client_channel_channelz.h b/src/core/client_channel/client_channel_channelz.h
deleted file mode 100644
index 8311b61356d..00000000000
--- a/src/core/client_channel/client_channel_channelz.h
+++ /dev/null
@@ -1,85 +0,0 @@
-//
-//
-// Copyright 2018 gRPC authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-//
-
-#ifndef GRPC_SRC_CORE_CLIENT_CHANNEL_CLIENT_CHANNEL_CHANNELZ_H
-#define GRPC_SRC_CORE_CLIENT_CHANNEL_CLIENT_CHANNEL_CHANNELZ_H
-
-#include <grpc/support/port_platform.h>
-
-#include <stddef.h>
-
-#include <atomic>
-#include <string>
-#include <utility>
-
-#include "absl/base/thread_annotations.h"
-
-#include <grpc/impl/connectivity_state.h>
-#include <grpc/slice.h>
-
-#include "src/core/lib/channel/channel_trace.h"
-#include "src/core/lib/channel/channelz.h"
-#include "src/core/lib/gprpp/ref_counted_ptr.h"
-#include "src/core/lib/gprpp/sync.h"
-#include "src/core/lib/json/json.h"
-
-namespace grpc_core {
-namespace channelz {
-
-class SubchannelNode final : public BaseNode {
- public:
-  SubchannelNode(std::string target_address, size_t channel_tracer_max_nodes);
-  ~SubchannelNode() override;
-
-  // Sets the subchannel's connectivity state without health checking.
-  void UpdateConnectivityState(grpc_connectivity_state state);
-
-  // Used when the subchannel's child socket changes. This should be set when
-  // the subchannel's transport is created and set to nullptr when the
-  // subchannel unrefs the transport.
-  void SetChildSocket(RefCountedPtr<SocketNode> socket);
-
-  Json RenderJson() override;
-
-  // proxy methods to composed classes.
-  void AddTraceEvent(ChannelTrace::Severity severity, const grpc_slice& data) {
-    trace_.AddTraceEvent(severity, data);
-  }
-  void AddTraceEventWithReference(ChannelTrace::Severity severity,
-                                  const grpc_slice& data,
-                                  RefCountedPtr<BaseNode> referenced_channel) {
-    trace_.AddTraceEventWithReference(severity, data,
-                                      std::move(referenced_channel));
-  }
-  void RecordCallStarted() { call_counter_.RecordCallStarted(); }
-  void RecordCallFailed() { call_counter_.RecordCallFailed(); }
-  void RecordCallSucceeded() { call_counter_.RecordCallSucceeded(); }
-
- private:
-  std::atomic<grpc_connectivity_state> connectivity_state_{GRPC_CHANNEL_IDLE};
-  Mutex socket_mu_;
-  RefCountedPtr<SocketNode> child_socket_ ABSL_GUARDED_BY(socket_mu_);
-  std::string target_;
-  CallCountingHelper call_counter_;
-  ChannelTrace trace_;
-};
-
-}  // namespace channelz
-}  // namespace grpc_core
-
-#endif  // GRPC_SRC_CORE_CLIENT_CHANNEL_CLIENT_CHANNEL_CHANNELZ_H
diff --git a/src/core/client_channel/client_channel_filter.cc b/src/core/client_channel/client_channel_filter.cc
index b7d4d6d4952..cfa5b3fd283 100644
--- a/src/core/client_channel/client_channel_filter.cc
+++ b/src/core/client_channel/client_channel_filter.cc
@@ -49,8 +49,8 @@
 #include <grpc/support/string_util.h>
 #include <grpc/support/time.h>
 
+#include "src/core/channelz/channel_trace.h"
 #include "src/core/client_channel/backup_poller.h"
-#include "src/core/client_channel/client_channel_channelz.h"
 #include "src/core/client_channel/client_channel_internal.h"
 #include "src/core/client_channel/client_channel_service_config.h"
 #include "src/core/client_channel/config_selector.h"
@@ -63,7 +63,6 @@
 #include "src/core/ext/filters/deadline/deadline_filter.h"
 #include "src/core/lib/channel/channel_args.h"
 #include "src/core/lib/channel/channel_stack.h"
-#include "src/core/lib/channel/channel_trace.h"
 #include "src/core/lib/channel/status_util.h"
 #include "src/core/lib/config/core_configuration.h"
 #include "src/core/lib/debug/trace.h"
diff --git a/src/core/client_channel/client_channel_filter.h b/src/core/client_channel/client_channel_filter.h
index 23819b33073..f9ae44b0d26 100644
--- a/src/core/client_channel/client_channel_filter.h
+++ b/src/core/client_channel/client_channel_filter.h
@@ -37,6 +37,7 @@
 #include <grpc/grpc.h>
 #include <grpc/impl/connectivity_state.h>
 
+#include "src/core/channelz/channelz.h"
 #include "src/core/client_channel/client_channel_factory.h"
 #include "src/core/client_channel/config_selector.h"
 #include "src/core/client_channel/dynamic_filters.h"
@@ -46,7 +47,6 @@
 #include "src/core/lib/channel/channel_args.h"
 #include "src/core/lib/channel/channel_fwd.h"
 #include "src/core/lib/channel/channel_stack.h"
-#include "src/core/lib/channel/channelz.h"
 #include "src/core/lib/channel/context.h"
 #include "src/core/lib/gpr/time_precise.h"
 #include "src/core/lib/gprpp/orphanable.h"
diff --git a/src/core/client_channel/connector.h b/src/core/client_channel/connector.h
index 7b1e73f63fb..5c218dd7d41 100644
--- a/src/core/client_channel/connector.h
+++ b/src/core/client_channel/connector.h
@@ -19,8 +19,8 @@
 
 #include <grpc/support/port_platform.h>
 
+#include "src/core/channelz/channelz.h"
 #include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channelz.h"
 #include "src/core/lib/gprpp/orphanable.h"
 #include "src/core/lib/gprpp/ref_counted_ptr.h"
 #include "src/core/lib/gprpp/time.h"
diff --git a/src/core/client_channel/subchannel.cc b/src/core/client_channel/subchannel.cc
index 6e8d1c41507..29bf5e2b86e 100644
--- a/src/core/client_channel/subchannel.cc
+++ b/src/core/client_channel/subchannel.cc
@@ -37,14 +37,14 @@
 #include <grpc/status.h>
 #include <grpc/support/log.h>
 
+#include "src/core/channelz/channel_trace.h"
+#include "src/core/channelz/channelz.h"
 #include "src/core/client_channel/subchannel_pool_interface.h"
 #include "src/core/lib/address_utils/sockaddr_utils.h"
 #include "src/core/lib/backoff/backoff.h"
 #include "src/core/lib/channel/channel_args.h"
 #include "src/core/lib/channel/channel_stack.h"
 #include "src/core/lib/channel/channel_stack_builder_impl.h"
-#include "src/core/lib/channel/channel_trace.h"
-#include "src/core/lib/channel/channelz.h"
 #include "src/core/lib/config/core_configuration.h"
 #include "src/core/lib/debug/stats.h"
 #include "src/core/lib/debug/stats_data.h"
diff --git a/src/core/client_channel/subchannel.h b/src/core/client_channel/subchannel.h
index 174e48df403..6fbe389da5c 100644
--- a/src/core/client_channel/subchannel.h
+++ b/src/core/client_channel/subchannel.h
@@ -31,7 +31,6 @@
 #include <grpc/event_engine/event_engine.h>
 #include <grpc/impl/connectivity_state.h>
 
-#include "src/core/client_channel/client_channel_channelz.h"
 #include "src/core/client_channel/connector.h"
 #include "src/core/client_channel/subchannel_pool_interface.h"
 #include "src/core/lib/backoff/backoff.h"
diff --git a/src/core/ext/transport/chaotic_good/server/chaotic_good_server.h b/src/core/ext/transport/chaotic_good/server/chaotic_good_server.h
index ed90dd45d1d..64083d2cd76 100644
--- a/src/core/ext/transport/chaotic_good/server/chaotic_good_server.h
+++ b/src/core/ext/transport/chaotic_good/server/chaotic_good_server.h
@@ -29,10 +29,10 @@
 #include <grpc/event_engine/event_engine.h>
 #include <grpc/support/port_platform.h>
 
+#include "src/core/channelz/channelz.h"
 #include "src/core/ext/transport/chttp2/transport/hpack_encoder.h"
 #include "src/core/ext/transport/chttp2/transport/hpack_parser.h"
 #include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channelz.h"
 #include "src/core/lib/gprpp/sync.h"
 #include "src/core/lib/gprpp/time.h"
 #include "src/core/lib/iomgr/closure.h"
diff --git a/src/core/ext/transport/chttp2/client/chttp2_connector.cc b/src/core/ext/transport/chttp2/client/chttp2_connector.cc
index 4914ea75a78..c3796209c84 100644
--- a/src/core/ext/transport/chttp2/client/chttp2_connector.cc
+++ b/src/core/ext/transport/chttp2/client/chttp2_connector.cc
@@ -38,6 +38,7 @@
 #include <grpc/support/port_platform.h>
 #include <grpc/support/sync.h>
 
+#include "src/core/channelz/channelz.h"
 #include "src/core/client_channel/client_channel_factory.h"
 #include "src/core/client_channel/client_channel_filter.h"
 #include "src/core/client_channel/connector.h"
@@ -46,7 +47,6 @@
 #include "src/core/lib/address_utils/sockaddr_utils.h"
 #include "src/core/lib/channel/channel_args.h"
 #include "src/core/lib/channel/channel_args_preconditioning.h"
-#include "src/core/lib/channel/channelz.h"
 #include "src/core/lib/config/core_configuration.h"
 #include "src/core/lib/debug/trace.h"
 #include "src/core/lib/event_engine/channel_args_endpoint_config.h"
diff --git a/src/core/ext/transport/chttp2/server/chttp2_server.cc b/src/core/ext/transport/chttp2/server/chttp2_server.cc
index 2e97b207ed2..180dc9836d7 100644
--- a/src/core/ext/transport/chttp2/server/chttp2_server.cc
+++ b/src/core/ext/transport/chttp2/server/chttp2_server.cc
@@ -46,12 +46,12 @@
 #include <grpc/support/log.h>
 #include <grpc/support/port_platform.h>
 
+#include "src/core/channelz/channelz.h"
 #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
 #include "src/core/ext/transport/chttp2/transport/internal.h"
 #include "src/core/ext/transport/chttp2/transport/legacy_frame.h"
 #include "src/core/lib/address_utils/sockaddr_utils.h"
 #include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channelz.h"
 #include "src/core/lib/config/core_configuration.h"
 #include "src/core/lib/debug/trace.h"
 #include "src/core/lib/event_engine/channel_args_endpoint_config.h"
diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.h b/src/core/ext/transport/chttp2/transport/chttp2_transport.h
index 5388c4a4737..72c1d160e28 100644
--- a/src/core/ext/transport/chttp2/transport/chttp2_transport.h
+++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.h
@@ -28,10 +28,10 @@
 
 #include <grpc/slice.h>
 
+#include "src/core/channelz/channelz.h"
 #include "src/core/ext/transport/chttp2/transport/flow_control.h"
 #include "src/core/lib/channel/call_tracer.h"
 #include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channelz.h"
 #include "src/core/lib/debug/trace.h"
 #include "src/core/lib/gprpp/ref_counted_ptr.h"
 #include "src/core/lib/gprpp/time.h"
diff --git a/src/core/ext/transport/chttp2/transport/internal.h b/src/core/ext/transport/chttp2/transport/internal.h
index 250de698f4c..8e8be510b10 100644
--- a/src/core/ext/transport/chttp2/transport/internal.h
+++ b/src/core/ext/transport/chttp2/transport/internal.h
@@ -41,6 +41,7 @@
 #include <grpc/slice.h>
 #include <grpc/support/time.h>
 
+#include "src/core/channelz/channelz.h"
 #include "src/core/ext/transport/chttp2/transport/context_list_entry.h"
 #include "src/core/ext/transport/chttp2/transport/flow_control.h"
 #include "src/core/ext/transport/chttp2/transport/frame_goaway.h"
@@ -59,7 +60,6 @@
 #include "src/core/ext/transport/chttp2/transport/write_size_policy.h"
 #include "src/core/lib/channel/call_tracer.h"
 #include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channelz.h"
 #include "src/core/lib/channel/tcp_tracer.h"
 #include "src/core/lib/debug/trace.h"
 #include "src/core/lib/gprpp/bitset.h"
diff --git a/src/core/ext/transport/chttp2/transport/parsing.cc b/src/core/ext/transport/chttp2/transport/parsing.cc
index 8f0757c053e..6ea01b3c1df 100644
--- a/src/core/ext/transport/chttp2/transport/parsing.cc
+++ b/src/core/ext/transport/chttp2/transport/parsing.cc
@@ -42,6 +42,7 @@
 #include <grpc/slice_buffer.h>
 #include <grpc/support/log.h>
 
+#include "src/core/channelz/channelz.h"
 #include "src/core/ext/transport/chttp2/transport/flow_control.h"
 #include "src/core/ext/transport/chttp2/transport/frame_data.h"
 #include "src/core/ext/transport/chttp2/transport/frame_goaway.h"
@@ -59,7 +60,6 @@
 #include "src/core/ext/transport/chttp2/transport/ping_rate_policy.h"
 #include "src/core/lib/backoff/random_early_detection.h"
 #include "src/core/lib/channel/call_tracer.h"
-#include "src/core/lib/channel/channelz.h"
 #include "src/core/lib/channel/context.h"
 #include "src/core/lib/debug/trace.h"
 #include "src/core/lib/experiments/experiments.h"
diff --git a/src/core/ext/transport/chttp2/transport/writing.cc b/src/core/ext/transport/chttp2/transport/writing.cc
index 5357b2ccf22..693e43ea9a6 100644
--- a/src/core/ext/transport/chttp2/transport/writing.cc
+++ b/src/core/ext/transport/chttp2/transport/writing.cc
@@ -36,6 +36,7 @@
 #include <grpc/support/log.h>
 #include <grpc/support/time.h>
 
+#include "src/core/channelz/channelz.h"
 #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
 #include "src/core/ext/transport/chttp2/transport/context_list_entry.h"
 #include "src/core/ext/transport/chttp2/transport/flow_control.h"
@@ -54,7 +55,6 @@
 #include "src/core/ext/transport/chttp2/transport/ping_rate_policy.h"
 #include "src/core/ext/transport/chttp2/transport/write_size_policy.h"
 #include "src/core/lib/channel/call_tracer.h"
-#include "src/core/lib/channel/channelz.h"
 #include "src/core/lib/debug/stats.h"
 #include "src/core/lib/debug/stats_data.h"
 #include "src/core/lib/debug/trace.h"
diff --git a/src/core/ext/transport/inproc/legacy_inproc_transport.cc b/src/core/ext/transport/inproc/legacy_inproc_transport.cc
index 4106c7ade7c..2197c6b1edd 100644
--- a/src/core/ext/transport/inproc/legacy_inproc_transport.cc
+++ b/src/core/ext/transport/inproc/legacy_inproc_transport.cc
@@ -42,9 +42,9 @@
 #include <grpc/support/port_platform.h>
 #include <grpc/support/sync.h>
 
+#include "src/core/channelz/channelz.h"
 #include "src/core/lib/channel/channel_args.h"
 #include "src/core/lib/channel/channel_args_preconditioning.h"
-#include "src/core/lib/channel/channelz.h"
 #include "src/core/lib/config/core_configuration.h"
 #include "src/core/lib/gprpp/debug_location.h"
 #include "src/core/lib/gprpp/ref_counted_ptr.h"
diff --git a/src/core/lib/security/transport/security_handshaker.cc b/src/core/lib/security/transport/security_handshaker.cc
index 0dbbf77d191..4c3fcd53f81 100644
--- a/src/core/lib/security/transport/security_handshaker.cc
+++ b/src/core/lib/security/transport/security_handshaker.cc
@@ -42,8 +42,8 @@
 #include <grpc/support/log.h>
 #include <grpc/support/port_platform.h>
 
+#include "src/core/channelz/channelz.h"
 #include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channelz.h"
 #include "src/core/lib/config/core_configuration.h"
 #include "src/core/lib/debug/stats.h"
 #include "src/core/lib/debug/stats_data.h"
diff --git a/src/core/lib/surface/call.cc b/src/core/lib/surface/call.cc
index 08a3aeb02a5..f7152abb340 100644
--- a/src/core/lib/surface/call.cc
+++ b/src/core/lib/surface/call.cc
@@ -54,10 +54,10 @@
 #include <grpc/support/port_platform.h>
 #include <grpc/support/string_util.h>
 
+#include "src/core/channelz/channelz.h"
 #include "src/core/lib/channel/call_finalization.h"
 #include "src/core/lib/channel/call_tracer.h"
 #include "src/core/lib/channel/channel_stack.h"
-#include "src/core/lib/channel/channelz.h"
 #include "src/core/lib/channel/context.h"
 #include "src/core/lib/channel/status_util.h"
 #include "src/core/lib/compression/compression_internal.h"
diff --git a/src/core/lib/surface/channel.cc b/src/core/lib/surface/channel.cc
index 64d5fd3e322..e70e1d001b9 100644
--- a/src/core/lib/surface/channel.cc
+++ b/src/core/lib/surface/channel.cc
@@ -23,9 +23,9 @@
 #include <grpc/support/log.h>
 #include <grpc/support/port_platform.h>
 
+#include "src/core/channelz/channel_trace.h"
+#include "src/core/channelz/channelz.h"
 #include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channel_trace.h"
-#include "src/core/lib/channel/channelz.h"
 #include "src/core/lib/compression/compression_internal.h"
 #include "src/core/lib/debug/stats.h"
 #include "src/core/lib/debug/stats_data.h"
diff --git a/src/core/lib/surface/channel.h b/src/core/lib/surface/channel.h
index 58046cdde55..533a944c18c 100644
--- a/src/core/lib/surface/channel.h
+++ b/src/core/lib/surface/channel.h
@@ -31,8 +31,8 @@
 #include <grpc/support/port_platform.h>
 #include <grpc/support/time.h>
 
+#include "src/core/channelz/channelz.h"
 #include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channelz.h"
 #include "src/core/lib/gprpp/cpp_impl_of.h"
 #include "src/core/lib/gprpp/ref_counted.h"
 #include "src/core/lib/gprpp/ref_counted_ptr.h"
diff --git a/src/core/lib/surface/channel_create.cc b/src/core/lib/surface/channel_create.cc
index 4b64f14c029..0fccd09a45b 100644
--- a/src/core/lib/surface/channel_create.cc
+++ b/src/core/lib/surface/channel_create.cc
@@ -19,8 +19,8 @@
 #include <grpc/support/log.h>
 #include <grpc/support/port_platform.h>
 
+#include "src/core/channelz/channelz.h"
 #include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channelz.h"
 #include "src/core/lib/config/core_configuration.h"
 #include "src/core/lib/debug/stats.h"
 #include "src/core/lib/debug/stats_data.h"
diff --git a/src/core/lib/surface/legacy_channel.cc b/src/core/lib/surface/legacy_channel.cc
index 80568674f9c..0ee4cd61312 100644
--- a/src/core/lib/surface/legacy_channel.cc
+++ b/src/core/lib/surface/legacy_channel.cc
@@ -29,12 +29,12 @@
 #include <grpc/support/log.h>
 #include <grpc/support/port_platform.h>
 
+#include "src/core/channelz/channelz.h"
 #include "src/core/client_channel/client_channel_filter.h"
 #include "src/core/lib/channel/channel_args.h"
 #include "src/core/lib/channel/channel_fwd.h"
 #include "src/core/lib/channel/channel_stack.h"
 #include "src/core/lib/channel/channel_stack_builder_impl.h"
-#include "src/core/lib/channel/channelz.h"
 #include "src/core/lib/channel/metrics.h"
 #include "src/core/lib/config/core_configuration.h"
 #include "src/core/lib/debug/stats.h"
diff --git a/src/core/lib/surface/server.cc b/src/core/lib/surface/server.cc
index 5e974ec25a6..9d19736ae9c 100644
--- a/src/core/lib/surface/server.cc
+++ b/src/core/lib/surface/server.cc
@@ -45,10 +45,10 @@
 #include <grpc/support/port_platform.h>
 #include <grpc/support/time.h>
 
+#include "src/core/channelz/channel_trace.h"
+#include "src/core/channelz/channelz.h"
 #include "src/core/lib/channel/channel_args.h"
 #include "src/core/lib/channel/channel_args_preconditioning.h"
-#include "src/core/lib/channel/channel_trace.h"
-#include "src/core/lib/channel/channelz.h"
 #include "src/core/lib/config/core_configuration.h"
 #include "src/core/lib/debug/stats.h"
 #include "src/core/lib/experiments/experiments.h"
diff --git a/src/core/lib/surface/server.h b/src/core/lib/surface/server.h
index 356bcc40269..9eca869af44 100644
--- a/src/core/lib/surface/server.h
+++ b/src/core/lib/surface/server.h
@@ -43,12 +43,12 @@
 #include <grpc/support/port_platform.h>
 #include <grpc/support/time.h>
 
+#include "src/core/channelz/channelz.h"
 #include "src/core/lib/backoff/random_early_detection.h"
 #include "src/core/lib/channel/call_tracer.h"
 #include "src/core/lib/channel/channel_args.h"
 #include "src/core/lib/channel/channel_fwd.h"
 #include "src/core/lib/channel/channel_stack.h"
-#include "src/core/lib/channel/channelz.h"
 #include "src/core/lib/debug/trace.h"
 #include "src/core/lib/gprpp/cpp_impl_of.h"
 #include "src/core/lib/gprpp/dual_ref_counted.h"
diff --git a/src/core/lib/surface/server_interface.h b/src/core/lib/surface/server_interface.h
index ea1081287d2..988cc201910 100644
--- a/src/core/lib/surface/server_interface.h
+++ b/src/core/lib/surface/server_interface.h
@@ -19,8 +19,8 @@
 
 #include <grpc/support/port_platform.h>
 
+#include "src/core/channelz/channelz.h"
 #include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channelz.h"
 
 namespace grpc_core {
 
diff --git a/src/core/load_balancing/grpclb/grpclb.cc b/src/core/load_balancing/grpclb/grpclb.cc
index 0b62235f51e..34f6afba790 100644
--- a/src/core/load_balancing/grpclb/grpclb.cc
+++ b/src/core/load_balancing/grpclb/grpclb.cc
@@ -92,11 +92,11 @@
 #include <grpc/support/alloc.h>
 #include <grpc/support/log.h>
 
+#include "src/core/channelz/channelz.h"
 #include "src/core/client_channel/client_channel_filter.h"
 #include "src/core/lib/address_utils/sockaddr_utils.h"
 #include "src/core/lib/backoff/backoff.h"
 #include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channelz.h"
 #include "src/core/lib/config/core_configuration.h"
 #include "src/core/lib/debug/trace.h"
 #include "src/core/lib/experiments/experiments.h"
diff --git a/src/core/load_balancing/health_check_client.cc b/src/core/load_balancing/health_check_client.cc
index 455dc789adb..6dfebe2e8d9 100644
--- a/src/core/load_balancing/health_check_client.cc
+++ b/src/core/load_balancing/health_check_client.cc
@@ -39,13 +39,12 @@
 #include <grpc/support/log.h>
 #include <grpc/support/port_platform.h>
 
-#include "src/core/client_channel/client_channel_channelz.h"
+#include "src/core/channelz/channel_trace.h"
 #include "src/core/client_channel/client_channel_internal.h"
 #include "src/core/client_channel/subchannel.h"
 #include "src/core/client_channel/subchannel_stream_client.h"
 #include "src/core/lib/address_utils/sockaddr_utils.h"
 #include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channel_trace.h"
 #include "src/core/lib/debug/trace.h"
 #include "src/core/lib/gprpp/debug_location.h"
 #include "src/core/lib/gprpp/orphanable.h"
diff --git a/src/core/load_balancing/oob_backend_metric.cc b/src/core/load_balancing/oob_backend_metric.cc
index 6d4bdd03164..4f43594b44e 100644
--- a/src/core/load_balancing/oob_backend_metric.cc
+++ b/src/core/load_balancing/oob_backend_metric.cc
@@ -37,10 +37,9 @@
 #include <grpc/support/port_platform.h>
 #include <grpc/support/time.h>
 
-#include "src/core/client_channel/client_channel_channelz.h"
+#include "src/core/channelz/channel_trace.h"
 #include "src/core/client_channel/subchannel.h"
 #include "src/core/client_channel/subchannel_stream_client.h"
-#include "src/core/lib/channel/channel_trace.h"
 #include "src/core/lib/debug/trace.h"
 #include "src/core/lib/gprpp/debug_location.h"
 #include "src/core/lib/gprpp/memory.h"
diff --git a/src/core/load_balancing/rls/rls.cc b/src/core/load_balancing/rls/rls.cc
index ea7c1c909bd..93de1b7ae9f 100644
--- a/src/core/load_balancing/rls/rls.cc
+++ b/src/core/load_balancing/rls/rls.cc
@@ -65,10 +65,10 @@
 #include <grpc/support/log.h>
 #include <grpc/support/port_platform.h>
 
+#include "src/core/channelz/channelz.h"
 #include "src/core/client_channel/client_channel_filter.h"
 #include "src/core/lib/backoff/backoff.h"
 #include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channelz.h"
 #include "src/core/lib/channel/metrics.h"
 #include "src/core/lib/config/core_configuration.h"
 #include "src/core/lib/debug/trace.h"
diff --git a/src/python/grpcio/grpc_core_dependencies.py b/src/python/grpcio/grpc_core_dependencies.py
index 9f20c1f18f1..fc65b906b34 100644
--- a/src/python/grpcio/grpc_core_dependencies.py
+++ b/src/python/grpcio/grpc_core_dependencies.py
@@ -15,8 +15,10 @@
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc_core_dependencies.py.template`!!!
 
 CORE_SOURCE_FILES = [
+    'src/core/channelz/channel_trace.cc',
+    'src/core/channelz/channelz.cc',
+    'src/core/channelz/channelz_registry.cc',
     'src/core/client_channel/backup_poller.cc',
-    'src/core/client_channel/client_channel_channelz.cc',
     'src/core/client_channel/client_channel_factory.cc',
     'src/core/client_channel/client_channel_filter.cc',
     'src/core/client_channel/client_channel_plugin.cc',
@@ -441,9 +443,6 @@ CORE_SOURCE_FILES = [
     'src/core/lib/channel/channel_stack_builder.cc',
     'src/core/lib/channel/channel_stack_builder_impl.cc',
     'src/core/lib/channel/channel_stack_trace.cc',
-    'src/core/lib/channel/channel_trace.cc',
-    'src/core/lib/channel/channelz.cc',
-    'src/core/lib/channel/channelz_registry.cc',
     'src/core/lib/channel/connected_channel.cc',
     'src/core/lib/channel/metrics.cc',
     'src/core/lib/channel/promise_based_filter.cc',
diff --git a/test/core/bad_client/bad_client.cc b/test/core/bad_client/bad_client.cc
index 7394e109b5e..55dba74272c 100644
--- a/test/core/bad_client/bad_client.cc
+++ b/test/core/bad_client/bad_client.cc
@@ -30,10 +30,10 @@
 #include <grpc/support/sync.h>
 #include <grpc/support/time.h>
 
+#include "src/core/channelz/channelz.h"
 #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
 #include "src/core/lib/channel/channel_args.h"
 #include "src/core/lib/channel/channel_args_preconditioning.h"
-#include "src/core/lib/channel/channelz.h"
 #include "src/core/lib/config/core_configuration.h"
 #include "src/core/lib/gpr/string.h"
 #include "src/core/lib/gprpp/thd.h"
diff --git a/test/core/bad_connection/close_fd_test.cc b/test/core/bad_connection/close_fd_test.cc
index 7313304a05e..0e6f9086e3f 100644
--- a/test/core/bad_connection/close_fd_test.cc
+++ b/test/core/bad_connection/close_fd_test.cc
@@ -32,8 +32,8 @@
 #include <grpc/status.h>
 #include <grpc/support/time.h>
 
+#include "src/core/channelz/channelz.h"
 #include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channelz.h"
 #include "src/core/lib/gprpp/ref_counted_ptr.h"
 #include "src/core/lib/iomgr/endpoint.h"
 #include "src/core/lib/iomgr/error.h"
diff --git a/test/core/channel/channel_trace_test.cc b/test/core/channel/channel_trace_test.cc
index 2396c4a3945..04eb892927a 100644
--- a/test/core/channel/channel_trace_test.cc
+++ b/test/core/channel/channel_trace_test.cc
@@ -16,7 +16,7 @@
 //
 //
 
-#include "src/core/lib/channel/channel_trace.h"
+#include "src/core/channelz/channel_trace.h"
 
 #include <stdlib.h>
 
@@ -29,8 +29,8 @@
 #include <grpc/grpc_security.h>
 #include <grpc/impl/channel_arg_names.h>
 
+#include "src/core/channelz/channelz.h"
 #include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channelz.h"
 #include "src/core/lib/iomgr/exec_ctx.h"
 #include "src/core/lib/json/json.h"
 #include "src/core/lib/json/json_writer.h"
diff --git a/test/core/channel/channelz_registry_test.cc b/test/core/channel/channelz_registry_test.cc
index 4f9f23bd1d6..02fb0360c72 100644
--- a/test/core/channel/channelz_registry_test.cc
+++ b/test/core/channel/channelz_registry_test.cc
@@ -16,7 +16,7 @@
 //
 //
 
-#include "src/core/lib/channel/channelz_registry.h"
+#include "src/core/channelz/channelz_registry.h"
 
 #include <stdlib.h>
 
@@ -25,7 +25,7 @@
 
 #include "gtest/gtest.h"
 
-#include "src/core/lib/channel/channelz.h"
+#include "src/core/channelz/channelz.h"
 #include "test/core/util/test_config.h"
 
 namespace grpc_core {
diff --git a/test/core/channel/channelz_test.cc b/test/core/channel/channelz_test.cc
index 973af3690eb..3cf8239eb39 100644
--- a/test/core/channel/channelz_test.cc
+++ b/test/core/channel/channelz_test.cc
@@ -16,7 +16,7 @@
 //
 //
 
-#include "src/core/lib/channel/channelz.h"
+#include "src/core/channelz/channelz.h"
 
 #include <stdlib.h>
 
@@ -39,8 +39,8 @@
 #include <grpc/support/json.h>
 #include <grpc/support/time.h>
 
+#include "src/core/channelz/channelz_registry.h"
 #include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channelz_registry.h"
 #include "src/core/lib/event_engine/default_event_engine.h"
 #include "src/core/lib/gpr/useful.h"
 #include "src/core/lib/gprpp/notification.h"
diff --git a/test/core/end2end/fixtures/sockpair_fixture.h b/test/core/end2end/fixtures/sockpair_fixture.h
index e8d7c30c4d8..5649d121e5b 100644
--- a/test/core/end2end/fixtures/sockpair_fixture.h
+++ b/test/core/end2end/fixtures/sockpair_fixture.h
@@ -27,10 +27,10 @@
 #include <grpc/status.h>
 #include <grpc/support/log.h>
 
+#include "src/core/channelz/channelz.h"
 #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
 #include "src/core/lib/channel/channel_args.h"
 #include "src/core/lib/channel/channel_args_preconditioning.h"
-#include "src/core/lib/channel/channelz.h"
 #include "src/core/lib/config/core_configuration.h"
 #include "src/core/lib/gprpp/ref_counted_ptr.h"
 #include "src/core/lib/iomgr/endpoint.h"
diff --git a/test/core/end2end/tests/channelz.cc b/test/core/end2end/tests/channelz.cc
index a70b2c244d8..7836b291243 100644
--- a/test/core/end2end/tests/channelz.cc
+++ b/test/core/end2end/tests/channelz.cc
@@ -16,7 +16,7 @@
 //
 //
 
-#include "src/core/lib/channel/channelz.h"
+#include "src/core/channelz/channelz.h"
 
 #include <string>
 
diff --git a/test/core/end2end/tests/retry_streaming.cc b/test/core/end2end/tests/retry_streaming.cc
index d21dd512444..ab06d00a862 100644
--- a/test/core/end2end/tests/retry_streaming.cc
+++ b/test/core/end2end/tests/retry_streaming.cc
@@ -25,8 +25,8 @@
 #include <grpc/impl/channel_arg_names.h>
 #include <grpc/status.h>
 
+#include "src/core/channelz/channelz.h"
 #include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channelz.h"
 #include "src/core/lib/gprpp/time.h"
 #include "src/core/lib/surface/channel.h"
 #include "test/core/end2end/end2end_tests.h"
diff --git a/test/core/transport/chttp2/graceful_shutdown_test.cc b/test/core/transport/chttp2/graceful_shutdown_test.cc
index e0294aebee8..44b60b7cf6b 100644
--- a/test/core/transport/chttp2/graceful_shutdown_test.cc
+++ b/test/core/transport/chttp2/graceful_shutdown_test.cc
@@ -44,11 +44,11 @@
 #include <grpc/support/log.h>
 #include <grpc/support/port_platform.h>
 
+#include "src/core/channelz/channelz.h"
 #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
 #include "src/core/ext/transport/chttp2/transport/frame_goaway.h"
 #include "src/core/ext/transport/chttp2/transport/frame_ping.h"
 #include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channelz.h"
 #include "src/core/lib/gpr/useful.h"
 #include "src/core/lib/gprpp/crash.h"
 #include "src/core/lib/gprpp/notification.h"
diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal
index 45745a6b3c8..58ff43e6228 100644
--- a/tools/doxygen/Doxyfile.c++.internal
+++ b/tools/doxygen/Doxyfile.c++.internal
@@ -1083,10 +1083,14 @@ include/grpcpp/support/time.h \
 include/grpcpp/support/validate_service_config.h \
 include/grpcpp/version_info.h \
 include/grpcpp/xds_server_builder.h \
+src/core/channelz/channel_trace.cc \
+src/core/channelz/channel_trace.h \
+src/core/channelz/channelz.cc \
+src/core/channelz/channelz.h \
+src/core/channelz/channelz_registry.cc \
+src/core/channelz/channelz_registry.h \
 src/core/client_channel/backup_poller.cc \
 src/core/client_channel/backup_poller.h \
-src/core/client_channel/client_channel_channelz.cc \
-src/core/client_channel/client_channel_channelz.h \
 src/core/client_channel/client_channel_factory.cc \
 src/core/client_channel/client_channel_factory.h \
 src/core/client_channel/client_channel_filter.cc \
@@ -2149,12 +2153,6 @@ src/core/lib/channel/channel_stack_builder_impl.cc \
 src/core/lib/channel/channel_stack_builder_impl.h \
 src/core/lib/channel/channel_stack_trace.cc \
 src/core/lib/channel/channel_stack_trace.h \
-src/core/lib/channel/channel_trace.cc \
-src/core/lib/channel/channel_trace.h \
-src/core/lib/channel/channelz.cc \
-src/core/lib/channel/channelz.h \
-src/core/lib/channel/channelz_registry.cc \
-src/core/lib/channel/channelz_registry.h \
 src/core/lib/channel/connected_channel.cc \
 src/core/lib/channel/connected_channel.h \
 src/core/lib/channel/context.h \
diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal
index 73cb5cdb1c6..d17727a5592 100644
--- a/tools/doxygen/Doxyfile.core.internal
+++ b/tools/doxygen/Doxyfile.core.internal
@@ -886,11 +886,15 @@ include/grpc/support/thd_id.h \
 include/grpc/support/time.h \
 include/grpc/support/workaround_list.h \
 src/core/README.md \
+src/core/channelz/channel_trace.cc \
+src/core/channelz/channel_trace.h \
+src/core/channelz/channelz.cc \
+src/core/channelz/channelz.h \
+src/core/channelz/channelz_registry.cc \
+src/core/channelz/channelz_registry.h \
 src/core/client_channel/README.md \
 src/core/client_channel/backup_poller.cc \
 src/core/client_channel/backup_poller.h \
-src/core/client_channel/client_channel_channelz.cc \
-src/core/client_channel/client_channel_channelz.h \
 src/core/client_channel/client_channel_factory.cc \
 src/core/client_channel/client_channel_factory.h \
 src/core/client_channel/client_channel_filter.cc \
@@ -1921,12 +1925,6 @@ src/core/lib/channel/channel_stack_builder_impl.cc \
 src/core/lib/channel/channel_stack_builder_impl.h \
 src/core/lib/channel/channel_stack_trace.cc \
 src/core/lib/channel/channel_stack_trace.h \
-src/core/lib/channel/channel_trace.cc \
-src/core/lib/channel/channel_trace.h \
-src/core/lib/channel/channelz.cc \
-src/core/lib/channel/channelz.h \
-src/core/lib/channel/channelz_registry.cc \
-src/core/lib/channel/channelz_registry.h \
 src/core/lib/channel/connected_channel.cc \
 src/core/lib/channel/connected_channel.h \
 src/core/lib/channel/context.h \