diff --git a/include/tint/tint.h b/include/tint/tint.h
index 57a3c67..cd01ae8 100644
--- a/include/tint/tint.h
+++ b/include/tint/tint.h
@@ -25,7 +25,6 @@
 #include "src/tint/diagnostic/printer.h"
 #include "src/tint/inspector/inspector.h"
 #include "src/tint/reader/reader.h"
-#include "src/tint/sem/type_manager.h"
 #include "src/tint/transform/binding_remapper.h"
 #include "src/tint/transform/first_index_offset.h"
 #include "src/tint/transform/manager.h"
@@ -35,6 +34,7 @@
 #include "src/tint/transform/single_entry_point.h"
 #include "src/tint/transform/substitute_override.h"
 #include "src/tint/transform/vertex_pulling.h"
+#include "src/tint/type/type_manager.h"
 #include "src/tint/writer/flatten_bindings.h"
 #include "src/tint/writer/writer.h"
 
diff --git a/src/tint/BUILD.gn b/src/tint/BUILD.gn
index 8889605..7099a46 100644
--- a/src/tint/BUILD.gn
+++ b/src/tint/BUILD.gn
@@ -460,7 +460,6 @@
     "sem/texture.h",
     "sem/type_conversion.h",
     "sem/type_initializer.h",
-    "sem/type_manager.h",
     "sem/type_mappings.h",
     "sem/u32.h",
     "sem/vector.h",
@@ -579,6 +578,7 @@
     "type/array_count.h",
     "type/node.h",
     "type/type.h",
+    "type/type_manager.h",
     "utils/bitcast.h",
     "utils/bitset.h",
     "utils/block_allocator.h",
@@ -722,8 +722,6 @@
     "sem/type_conversion.h",
     "sem/type_initializer.cc",
     "sem/type_initializer.h",
-    "sem/type_manager.cc",
-    "sem/type_manager.h",
     "sem/type_mappings.h",
     "sem/u32.cc",
     "sem/u32.h",
@@ -747,6 +745,8 @@
     "type/node.h",
     "type/type.cc",
     "type/type.h",
+    "type/type_manager.cc",
+    "type/type_manager.h",
   ]
 
   public_deps = [ ":libtint_core_all_src" ]
@@ -1222,14 +1222,16 @@
       "sem/storage_texture_test.cc",
       "sem/struct_test.cc",
       "sem/texture_test.cc",
-      "sem/type_manager_test.cc",
       "sem/u32_test.cc",
       "sem/vector_test.cc",
     ]
   }
 
   tint_unittests_source_set("tint_unittests_type_src") {
-    sources = [ "type/type_test.cc" ]
+    sources = [
+      "type/type_manager_test.cc",
+      "type/type_test.cc",
+    ]
   }
 
   tint_unittests_source_set("tint_unittests_text_src") {
diff --git a/src/tint/CMakeLists.txt b/src/tint/CMakeLists.txt
index a22ab9a..4d69e28 100644
--- a/src/tint/CMakeLists.txt
+++ b/src/tint/CMakeLists.txt
@@ -379,8 +379,6 @@
   sem/type_initializer.h
   sem/type_conversion.cc
   sem/type_conversion.h
-  sem/type_manager.cc
-  sem/type_manager.h
   sem/type_mappings.h
   sem/u32.cc
   sem/u32.h
@@ -505,6 +503,8 @@
   type/node.h
   type/type.cc
   type/type.h
+  type/type_manager.cc
+  type/type_manager.h
   utils/bitcast.h
   utils/bitset.h
   utils/block_allocator.h
@@ -940,7 +940,6 @@
     sem/storage_texture_test.cc
     sem/struct_test.cc
     sem/texture_test.cc
-    sem/type_manager_test.cc
     sem/u32_test.cc
     sem/vector_test.cc
     source_test.cc
@@ -951,6 +950,7 @@
     traits_test.cc
     transform/transform_test.cc
     type/type_test.cc
+    type/type_manager_test.cc
     utils/bitcast_test.cc
     utils/bitset_test.cc
     utils/block_allocator_test.cc
diff --git a/src/tint/program.h b/src/tint/program.h
index b1a9576..025db67 100644
--- a/src/tint/program.h
+++ b/src/tint/program.h
@@ -22,8 +22,8 @@
 #include "src/tint/program_id.h"
 #include "src/tint/sem/constant.h"
 #include "src/tint/sem/info.h"
-#include "src/tint/sem/type_manager.h"
 #include "src/tint/symbol_table.h"
+#include "src/tint/type/type_manager.h"
 
 // Forward Declarations
 namespace tint {
@@ -73,7 +73,7 @@
     ast::NodeID HighestASTNodeID() const { return highest_node_id_; }
 
     /// @returns a reference to the program's types
-    const sem::TypeManager& Types() const {
+    const type::TypeManager& Types() const {
         AssertNotMoved();
         return types_;
     }
@@ -180,7 +180,7 @@
 
     ProgramID id_;
     ast::NodeID highest_node_id_;
-    sem::TypeManager types_;
+    type::TypeManager types_;
     ASTNodeAllocator ast_nodes_;
     SemNodeAllocator sem_nodes_;
     ConstantAllocator constant_nodes_;
diff --git a/src/tint/program_builder.cc b/src/tint/program_builder.cc
index 02f9a13..244e735 100644
--- a/src/tint/program_builder.cc
+++ b/src/tint/program_builder.cc
@@ -70,7 +70,7 @@
     ProgramBuilder builder;
     builder.id_ = program->ID();
     builder.last_ast_node_id_ = program->HighestASTNodeID();
-    builder.types_ = sem::TypeManager::Wrap(program->Types());
+    builder.types_ = type::TypeManager::Wrap(program->Types());
     builder.ast_ =
         builder.create<ast::Module>(program->AST().source, program->AST().GlobalDeclarations());
     builder.sem_ = sem::Info::Wrap(program->Sem());
diff --git a/src/tint/program_builder.h b/src/tint/program_builder.h
index e8b27d4..7f59711 100644
--- a/src/tint/program_builder.h
+++ b/src/tint/program_builder.h
@@ -299,13 +299,13 @@
     ProgramID ID() const { return id_; }
 
     /// @returns a reference to the program's types
-    sem::TypeManager& Types() {
+    type::TypeManager& Types() {
         AssertNotMoved();
         return types_;
     }
 
     /// @returns a reference to the program's types
-    const sem::TypeManager& Types() const {
+    const type::TypeManager& Types() const {
         AssertNotMoved();
         return types_;
     }
@@ -3247,7 +3247,7 @@
   private:
     ProgramID id_;
     ast::NodeID last_ast_node_id_ = ast::NodeID{static_cast<decltype(ast::NodeID::value)>(0) - 1};
-    sem::TypeManager types_;
+    type::TypeManager types_;
     ASTNodeAllocator ast_nodes_;
     SemNodeAllocator sem_nodes_;
     ConstantAllocator constant_nodes_;
diff --git a/src/tint/sem/storage_texture.cc b/src/tint/sem/storage_texture.cc
index 62c443b..ea83a49 100644
--- a/src/tint/sem/storage_texture.cc
+++ b/src/tint/sem/storage_texture.cc
@@ -48,7 +48,7 @@
     return out.str();
 }
 
-type::Type* StorageTexture::SubtypeFor(ast::TexelFormat format, sem::TypeManager& type_mgr) {
+type::Type* StorageTexture::SubtypeFor(ast::TexelFormat format, type::TypeManager& type_mgr) {
     switch (format) {
         case ast::TexelFormat::kR32Uint:
         case ast::TexelFormat::kRgba8Uint:
diff --git a/src/tint/sem/storage_texture.h b/src/tint/sem/storage_texture.h
index 3fdb1a7..f86fd1e 100644
--- a/src/tint/sem/storage_texture.h
+++ b/src/tint/sem/storage_texture.h
@@ -22,9 +22,9 @@
 #include "src/tint/sem/texture.h"
 
 // Forward declarations
-namespace tint::sem {
+namespace tint::type {
 class TypeManager;
-}  // namespace tint::sem
+}  // namespace tint::type
 
 namespace tint::sem {
 
@@ -67,9 +67,9 @@
     std::string FriendlyName(const SymbolTable& symbols) const override;
 
     /// @param format the storage texture image format
-    /// @param type_mgr the sem::TypeManager used to build the returned type
+    /// @param type_mgr the type::TypeManager used to build the returned type
     /// @returns the storage texture subtype for the given TexelFormat
-    static type::Type* SubtypeFor(ast::TexelFormat format, sem::TypeManager& type_mgr);
+    static type::Type* SubtypeFor(ast::TexelFormat format, type::TypeManager& type_mgr);
 
   private:
     ast::TexelFormat const texel_format_;
diff --git a/src/tint/sem/type_manager.cc b/src/tint/type/type_manager.cc
similarity index 85%
rename from src/tint/sem/type_manager.cc
rename to src/tint/type/type_manager.cc
index 8c26a4f..766725c 100644
--- a/src/tint/sem/type_manager.cc
+++ b/src/tint/type/type_manager.cc
@@ -1,4 +1,4 @@
-// Copyright 2020 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/type_manager.h"
+#include "src/tint/type/type_manager.h"
 
-namespace tint::sem {
+namespace tint::type {
 
 TypeManager::TypeManager() = default;
 TypeManager::TypeManager(TypeManager&&) = default;
 TypeManager& TypeManager::operator=(TypeManager&& rhs) = default;
 TypeManager::~TypeManager() = default;
 
-}  // namespace tint::sem
+}  // namespace tint::type
diff --git a/src/tint/sem/type_manager.h b/src/tint/type/type_manager.h
similarity index 96%
rename from src/tint/sem/type_manager.h
rename to src/tint/type/type_manager.h
index 4decdef..c6319e5 100644
--- a/src/tint/sem/type_manager.h
+++ b/src/tint/type/type_manager.h
@@ -1,4 +1,4 @@
-// Copyright 2020 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_TINT_SEM_TYPE_MANAGER_H_
-#define SRC_TINT_SEM_TYPE_MANAGER_H_
+#ifndef SRC_TINT_TYPE_TYPE_MANAGER_H_
+#define SRC_TINT_TYPE_TYPE_MANAGER_H_
 
 #include <functional>
 #include <string>
@@ -26,7 +26,7 @@
 #include "src/tint/type/type.h"
 #include "src/tint/utils/unique_allocator.h"
 
-namespace tint::sem {
+namespace tint::type {
 
 /// The type manager holds all the pointers to the known types.
 class TypeManager final {
@@ -107,7 +107,7 @@
     utils::UniqueAllocator<type::Node> nodes_;
 };
 
-}  // namespace tint::sem
+}  // namespace tint::type
 
 namespace std {
 
@@ -149,4 +149,4 @@
 
 }  // namespace std
 
-#endif  // SRC_TINT_SEM_TYPE_MANAGER_H_
+#endif  // SRC_TINT_TYPE_TYPE_MANAGER_H_
diff --git a/src/tint/sem/type_manager_test.cc b/src/tint/type/type_manager_test.cc
similarity index 71%
rename from src/tint/sem/type_manager_test.cc
rename to src/tint/type/type_manager_test.cc
index a488913..76312bd 100644
--- a/src/tint/sem/type_manager_test.cc
+++ b/src/tint/type/type_manager_test.cc
@@ -1,4 +1,4 @@
-// Copyright 2020 The Tint Authors.
+// Copyright 2022 The Tint Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/tint/sem/type_manager.h"
+#include "src/tint/type/type_manager.h"
 
 #include "gtest/gtest.h"
 #include "src/tint/sem/i32.h"
 #include "src/tint/sem/u32.h"
 
-namespace tint::sem {
+namespace tint::type {
 namespace {
 
 template <typename T>
@@ -35,55 +35,55 @@
 
 TEST_F(TypeManagerTest, GetUnregistered) {
     TypeManager tm;
-    auto* t = tm.Get<I32>();
+    auto* t = tm.Get<sem::I32>();
     ASSERT_NE(t, nullptr);
-    EXPECT_TRUE(t->Is<I32>());
+    EXPECT_TRUE(t->Is<sem::I32>());
 }
 
 TEST_F(TypeManagerTest, GetSameTypeReturnsSamePtr) {
     TypeManager tm;
-    auto* t = tm.Get<I32>();
+    auto* t = tm.Get<sem::I32>();
     ASSERT_NE(t, nullptr);
-    EXPECT_TRUE(t->Is<I32>());
+    EXPECT_TRUE(t->Is<sem::I32>());
 
-    auto* t2 = tm.Get<I32>();
+    auto* t2 = tm.Get<sem::I32>();
     EXPECT_EQ(t, t2);
 }
 
 TEST_F(TypeManagerTest, GetDifferentTypeReturnsDifferentPtr) {
     TypeManager tm;
-    type::Type* t = tm.Get<I32>();
+    type::Type* t = tm.Get<sem::I32>();
     ASSERT_NE(t, nullptr);
-    EXPECT_TRUE(t->Is<I32>());
+    EXPECT_TRUE(t->Is<sem::I32>());
 
-    type::Type* t2 = tm.Get<U32>();
+    type::Type* t2 = tm.Get<sem::U32>();
     ASSERT_NE(t2, nullptr);
     EXPECT_NE(t, t2);
-    EXPECT_TRUE(t2->Is<U32>());
+    EXPECT_TRUE(t2->Is<sem::U32>());
 }
 
 TEST_F(TypeManagerTest, Find) {
     TypeManager tm;
-    auto* created = tm.Get<I32>();
+    auto* created = tm.Get<sem::I32>();
 
-    EXPECT_EQ(tm.Find<U32>(), nullptr);
-    EXPECT_EQ(tm.Find<I32>(), created);
+    EXPECT_EQ(tm.Find<sem::U32>(), nullptr);
+    EXPECT_EQ(tm.Find<sem::I32>(), created);
 }
 
 TEST_F(TypeManagerTest, WrapDoesntAffectInner) {
     TypeManager inner;
     TypeManager outer = TypeManager::Wrap(inner);
 
-    inner.Get<I32>();
+    inner.Get<sem::I32>();
 
     EXPECT_EQ(count(inner), 1u);
     EXPECT_EQ(count(outer), 0u);
 
-    outer.Get<U32>();
+    outer.Get<sem::U32>();
 
     EXPECT_EQ(count(inner), 1u);
     EXPECT_EQ(count(outer), 1u);
 }
 
 }  // namespace
-}  // namespace tint::sem
+}  // namespace tint::type
