diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index cd9ef81..a1f974f 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1160,7 +1160,7 @@
   endif()
 
   set(TINT_BENCHMARK_SRC
-    "benchmark/benchmark.cc"
+    "bench/benchmark.cc"
     "reader/wgsl/parser_bench.cc"
   )
 
diff --git a/src/benchmark/benchmark.cc b/src/bench/benchmark.cc
similarity index 89%
rename from src/benchmark/benchmark.cc
rename to src/bench/benchmark.cc
index 813af84..c33f94e 100644
--- a/src/benchmark/benchmark.cc
+++ b/src/bench/benchmark.cc
@@ -12,14 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include "src/benchmark/benchmark.h"
+#include "src/bench/benchmark.h"
 
 #include <filesystem>
 #include <sstream>
 #include <utility>
 #include <vector>
 
-namespace tint::benchmark {
+namespace tint::bench {
 namespace {
 
 std::filesystem::path kInputFileDir;
@@ -96,8 +96,8 @@
 }
 
 std::variant<ProgramAndFile, Error> LoadProgram(std::string name) {
-  auto res = benchmark::LoadInputFile(name);
-  if (auto err = std::get_if<benchmark::Error>(&res)) {
+  auto res = bench::LoadInputFile(name);
+  if (auto err = std::get_if<bench::Error>(&res)) {
     return *err;
   }
   auto& file = std::get<Source::File>(res);
@@ -108,16 +108,16 @@
   return ProgramAndFile{std::move(program), std::move(file)};
 }
 
-}  // namespace tint::benchmark
+}  // namespace tint::bench
 
 int main(int argc, char** argv) {
-  ::benchmark::Initialize(&argc, argv);
-  if (::benchmark::ReportUnrecognizedArguments(argc, argv)) {
+  benchmark::Initialize(&argc, argv);
+  if (benchmark::ReportUnrecognizedArguments(argc, argv)) {
     return 1;
   }
-  if (!tint::benchmark::FindBenchmarkInputDir()) {
+  if (!tint::bench::FindBenchmarkInputDir()) {
     std::cerr << "failed to locate benchmark input files" << std::endl;
     return 1;
   }
-  ::benchmark::RunSpecifiedBenchmarks();
+  benchmark::RunSpecifiedBenchmarks();
 }
diff --git a/src/benchmark/benchmark.h b/src/bench/benchmark.h
similarity index 94%
rename from src/benchmark/benchmark.h
rename to src/bench/benchmark.h
index 0d3c764..91bd631 100644
--- a/src/benchmark/benchmark.h
+++ b/src/bench/benchmark.h
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SRC_BENCHMARK_BENCHMARK_H_
-#define SRC_BENCHMARK_BENCHMARK_H_
+#ifndef SRC_BENCH_BENCHMARK_H_
+#define SRC_BENCH_BENCHMARK_H_
 
 #include <memory>
 #include <string>
@@ -23,7 +23,7 @@
 #include "src/utils/concat.h"
 #include "tint/tint.h"
 
-namespace tint::benchmark {
+namespace tint::bench {
 
 /// Error indicates an operation did not complete successfully.
 struct Error {
@@ -71,6 +71,6 @@
   TINT_BENCHMARK_WGSL_PROGRAM(FUNC, "skinned-shadowed-pbr-fragment.wgsl"); \
   TINT_BENCHMARK_WGSL_PROGRAM(FUNC, "skinned-shadowed-pbr-vertex.wgsl");
 
-}  // namespace tint::benchmark
+}  // namespace tint::bench
 
-#endif  // SRC_BENCHMARK_BENCHMARK_H_
+#endif  // SRC_BENCH_BENCHMARK_H_
diff --git a/src/reader/wgsl/parser_bench.cc b/src/reader/wgsl/parser_bench.cc
index 95fa446..e47e38b 100644
--- a/src/reader/wgsl/parser_bench.cc
+++ b/src/reader/wgsl/parser_bench.cc
@@ -14,14 +14,14 @@
 
 #include <string>
 
-#include "src/benchmark/benchmark.h"
+#include "src/bench/benchmark.h"
 
 namespace tint::reader::wgsl {
 namespace {
 
-void ParseWGSL(::benchmark::State& state, std::string input_name) {
-  auto res = benchmark::LoadInputFile(input_name);
-  if (auto err = std::get_if<benchmark::Error>(&res)) {
+void ParseWGSL(benchmark::State& state, std::string input_name) {
+  auto res = bench::LoadInputFile(input_name);
+  if (auto err = std::get_if<bench::Error>(&res)) {
     state.SkipWithError(err->msg.c_str());
     return;
   }
diff --git a/src/writer/glsl/generator_bench.cc b/src/writer/glsl/generator_bench.cc
index 2ac109f..551bd5c 100644
--- a/src/writer/glsl/generator_bench.cc
+++ b/src/writer/glsl/generator_bench.cc
@@ -15,18 +15,18 @@
 #include <string>
 
 #include "src/ast/module.h"
-#include "src/benchmark/benchmark.h"
+#include "src/bench/benchmark.h"
 
 namespace tint::writer::glsl {
 namespace {
 
-void GenerateGLSL(::benchmark::State& state, std::string input_name) {
-  auto res = benchmark::LoadProgram(input_name);
-  if (auto err = std::get_if<benchmark::Error>(&res)) {
+void GenerateGLSL(benchmark::State& state, std::string input_name) {
+  auto res = bench::LoadProgram(input_name);
+  if (auto err = std::get_if<bench::Error>(&res)) {
     state.SkipWithError(err->msg.c_str());
     return;
   }
-  auto& program = std::get<benchmark::ProgramAndFile>(res).program;
+  auto& program = std::get<bench::ProgramAndFile>(res).program;
   std::vector<std::string> entry_points;
   for (auto& fn : program.AST().Functions()) {
     if (fn->IsEntryPoint()) {
diff --git a/src/writer/hlsl/generator_bench.cc b/src/writer/hlsl/generator_bench.cc
index e9168af..159105d 100644
--- a/src/writer/hlsl/generator_bench.cc
+++ b/src/writer/hlsl/generator_bench.cc
@@ -14,18 +14,18 @@
 
 #include <string>
 
-#include "src/benchmark/benchmark.h"
+#include "src/bench/benchmark.h"
 
 namespace tint::writer::hlsl {
 namespace {
 
-void GenerateHLSL(::benchmark::State& state, std::string input_name) {
-  auto res = benchmark::LoadProgram(input_name);
-  if (auto err = std::get_if<benchmark::Error>(&res)) {
+void GenerateHLSL(benchmark::State& state, std::string input_name) {
+  auto res = bench::LoadProgram(input_name);
+  if (auto err = std::get_if<bench::Error>(&res)) {
     state.SkipWithError(err->msg.c_str());
     return;
   }
-  auto& program = std::get<benchmark::ProgramAndFile>(res).program;
+  auto& program = std::get<bench::ProgramAndFile>(res).program;
   for (auto _ : state) {
     auto res = Generate(&program, {});
     if (!res.error.empty()) {
diff --git a/src/writer/msl/generator_bench.cc b/src/writer/msl/generator_bench.cc
index d2b53df..fb9fee6 100644
--- a/src/writer/msl/generator_bench.cc
+++ b/src/writer/msl/generator_bench.cc
@@ -14,18 +14,18 @@
 
 #include <string>
 
-#include "src/benchmark/benchmark.h"
+#include "src/bench/benchmark.h"
 
 namespace tint::writer::msl {
 namespace {
 
-void GenerateMSL(::benchmark::State& state, std::string input_name) {
-  auto res = benchmark::LoadProgram(input_name);
-  if (auto err = std::get_if<benchmark::Error>(&res)) {
+void GenerateMSL(benchmark::State& state, std::string input_name) {
+  auto res = bench::LoadProgram(input_name);
+  if (auto err = std::get_if<bench::Error>(&res)) {
     state.SkipWithError(err->msg.c_str());
     return;
   }
-  auto& program = std::get<benchmark::ProgramAndFile>(res).program;
+  auto& program = std::get<bench::ProgramAndFile>(res).program;
   for (auto _ : state) {
     auto res = Generate(&program, {});
     if (!res.error.empty()) {
diff --git a/src/writer/spirv/generator_bench.cc b/src/writer/spirv/generator_bench.cc
index fb937d1..1f9ebde 100644
--- a/src/writer/spirv/generator_bench.cc
+++ b/src/writer/spirv/generator_bench.cc
@@ -14,18 +14,18 @@
 
 #include <string>
 
-#include "src/benchmark/benchmark.h"
+#include "src/bench/benchmark.h"
 
 namespace tint::writer::spirv {
 namespace {
 
-void GenerateSPIRV(::benchmark::State& state, std::string input_name) {
-  auto res = benchmark::LoadProgram(input_name);
-  if (auto err = std::get_if<benchmark::Error>(&res)) {
+void GenerateSPIRV(benchmark::State& state, std::string input_name) {
+  auto res = bench::LoadProgram(input_name);
+  if (auto err = std::get_if<bench::Error>(&res)) {
     state.SkipWithError(err->msg.c_str());
     return;
   }
-  auto& program = std::get<benchmark::ProgramAndFile>(res).program;
+  auto& program = std::get<bench::ProgramAndFile>(res).program;
   for (auto _ : state) {
     auto res = Generate(&program, {});
     if (!res.error.empty()) {
diff --git a/src/writer/wgsl/generator_bench.cc b/src/writer/wgsl/generator_bench.cc
index 524d9cf..b070ecc 100644
--- a/src/writer/wgsl/generator_bench.cc
+++ b/src/writer/wgsl/generator_bench.cc
@@ -14,18 +14,18 @@
 
 #include <string>
 
-#include "src/benchmark/benchmark.h"
+#include "src/bench/benchmark.h"
 
 namespace tint::writer::wgsl {
 namespace {
 
-void GenerateWGSL(::benchmark::State& state, std::string input_name) {
-  auto res = benchmark::LoadProgram(input_name);
-  if (auto err = std::get_if<benchmark::Error>(&res)) {
+void GenerateWGSL(benchmark::State& state, std::string input_name) {
+  auto res = bench::LoadProgram(input_name);
+  if (auto err = std::get_if<bench::Error>(&res)) {
     state.SkipWithError(err->msg.c_str());
     return;
   }
-  auto& program = std::get<benchmark::ProgramAndFile>(res).program;
+  auto& program = std::get<bench::ProgramAndFile>(res).program;
   for (auto _ : state) {
     auto res = Generate(&program, {});
     if (!res.error.empty()) {
