diff --git a/src/transform/array_length_from_uniform.cc b/src/transform/array_length_from_uniform.cc
index fa04126..5084a54 100644
--- a/src/transform/array_length_from_uniform.cc
+++ b/src/transform/array_length_from_uniform.cc
@@ -18,7 +18,6 @@
 #include <string>
 #include <utility>
 
-#include "src/ast/struct_block_decoration.h"
 #include "src/program_builder.h"
 #include "src/sem/call.h"
 #include "src/sem/variable.h"
@@ -144,9 +143,7 @@
           {ctx.dst->Member(
               kBufferSizeMemberName,
               ctx.dst->ty.array(ctx.dst->ty.vec4(ctx.dst->ty.u32()),
-                                (max_buffer_size_index / 4) + 1))},
-
-          ast::DecorationList{ctx.dst->create<ast::StructBlockDecoration>()});
+                                (max_buffer_size_index / 4) + 1))});
       buffer_size_ubo = ctx.dst->Global(
           ctx.dst->Sym(), ctx.dst->ty.Of(buffer_size_struct),
           ast::StorageClass::kUniform,
diff --git a/src/transform/array_length_from_uniform.h b/src/transform/array_length_from_uniform.h
index f981f67..6ab1598 100644
--- a/src/transform/array_length_from_uniform.h
+++ b/src/transform/array_length_from_uniform.h
@@ -34,7 +34,6 @@
 ///
 /// The generated uniform buffer will have the form:
 /// ```
-/// [[block]]
 /// struct buffer_size_struct {
 ///  buffer_size : array<u32, 8>;
 /// };
diff --git a/src/transform/array_length_from_uniform_test.cc b/src/transform/array_length_from_uniform_test.cc
index c316412..59f5a4d 100644
--- a/src/transform/array_length_from_uniform_test.cc
+++ b/src/transform/array_length_from_uniform_test.cc
@@ -52,7 +52,6 @@
 
 TEST_F(ArrayLengthFromUniformTest, Basic) {
   auto* src = R"(
-[[block]]
 struct SB {
   x : i32;
   arr : array<i32>;
@@ -67,14 +66,12 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct tint_symbol {
   buffer_size : array<vec4<u32>, 1u>;
 };
 
 [[group(0), binding(30)]] var<uniform> tint_symbol_1 : tint_symbol;
 
-[[block]]
 struct SB {
   x : i32;
   arr : array<i32>;
@@ -103,7 +100,6 @@
 
 TEST_F(ArrayLengthFromUniformTest, WithStride) {
   auto* src = R"(
-[[block]]
 struct SB {
   x : i32;
   y : f32;
@@ -119,14 +115,12 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct tint_symbol {
   buffer_size : array<vec4<u32>, 1u>;
 };
 
 [[group(0), binding(30)]] var<uniform> tint_symbol_1 : tint_symbol;
 
-[[block]]
 struct SB {
   x : i32;
   y : f32;
@@ -156,27 +150,22 @@
 
 TEST_F(ArrayLengthFromUniformTest, MultipleStorageBuffers) {
   auto* src = R"(
-[[block]]
 struct SB1 {
   x : i32;
   arr1 : array<i32>;
 };
-[[block]]
 struct SB2 {
   x : i32;
   arr2 : array<vec4<f32>>;
 };
-[[block]]
 struct SB3 {
   x : i32;
   arr3 : array<vec4<f32>>;
 };
-[[block]]
 struct SB4 {
   x : i32;
   arr4 : array<vec4<f32>>;
 };
-[[block]]
 struct SB5 {
   x : i32;
   arr5 : array<vec4<f32>>;
@@ -200,38 +189,32 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct tint_symbol {
   buffer_size : array<vec4<u32>, 2u>;
 };
 
 [[group(0), binding(30)]] var<uniform> tint_symbol_1 : tint_symbol;
 
-[[block]]
 struct SB1 {
   x : i32;
   arr1 : array<i32>;
 };
 
-[[block]]
 struct SB2 {
   x : i32;
   arr2 : array<vec4<f32>>;
 };
 
-[[block]]
 struct SB3 {
   x : i32;
   arr3 : array<vec4<f32>>;
 };
 
-[[block]]
 struct SB4 {
   x : i32;
   arr4 : array<vec4<f32>>;
 };
 
-[[block]]
 struct SB5 {
   x : i32;
   arr5 : array<vec4<f32>>;
@@ -277,27 +260,22 @@
 
 TEST_F(ArrayLengthFromUniformTest, MultipleUnusedStorageBuffers) {
   auto* src = R"(
-[[block]]
 struct SB1 {
   x : i32;
   arr1 : array<i32>;
 };
-[[block]]
 struct SB2 {
   x : i32;
   arr2 : array<vec4<f32>>;
 };
-[[block]]
 struct SB3 {
   x : i32;
   arr3 : array<vec4<f32>>;
 };
-[[block]]
 struct SB4 {
   x : i32;
   arr4 : array<vec4<f32>>;
 };
-[[block]]
 struct SB5 {
   x : i32;
   arr5 : array<vec4<f32>>;
@@ -318,38 +296,32 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct tint_symbol {
   buffer_size : array<vec4<u32>, 1u>;
 };
 
 [[group(0), binding(30)]] var<uniform> tint_symbol_1 : tint_symbol;
 
-[[block]]
 struct SB1 {
   x : i32;
   arr1 : array<i32>;
 };
 
-[[block]]
 struct SB2 {
   x : i32;
   arr2 : array<vec4<f32>>;
 };
 
-[[block]]
 struct SB3 {
   x : i32;
   arr3 : array<vec4<f32>>;
 };
 
-[[block]]
 struct SB4 {
   x : i32;
   arr4 : array<vec4<f32>>;
 };
 
-[[block]]
 struct SB5 {
   x : i32;
   arr5 : array<vec4<f32>>;
@@ -392,7 +364,6 @@
 
 TEST_F(ArrayLengthFromUniformTest, NoArrayLengthCalls) {
   auto* src = R"(
-[[block]]
 struct SB {
   x : i32;
   arr : array<i32>;
@@ -421,13 +392,11 @@
 
 TEST_F(ArrayLengthFromUniformTest, MissingBindingPointToIndexMapping) {
   auto* src = R"(
-[[block]]
 struct SB1 {
   x : i32;
   arr1 : array<i32>;
 };
 
-[[block]]
 struct SB2 {
   x : i32;
   arr2 : array<vec4<f32>>;
@@ -446,20 +415,17 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct tint_symbol {
   buffer_size : array<vec4<u32>, 1u>;
 };
 
 [[group(0), binding(30)]] var<uniform> tint_symbol_1 : tint_symbol;
 
-[[block]]
 struct SB1 {
   x : i32;
   arr1 : array<i32>;
 };
 
-[[block]]
 struct SB2 {
   x : i32;
   arr2 : array<vec4<f32>>;
diff --git a/src/transform/binding_remapper_test.cc b/src/transform/binding_remapper_test.cc
index fded200..87e205a 100644
--- a/src/transform/binding_remapper_test.cc
+++ b/src/transform/binding_remapper_test.cc
@@ -26,7 +26,6 @@
 
 TEST_F(BindingRemapperTest, NoRemappings) {
   auto* src = R"(
-[[block]]
 struct S {
   a : f32;
 };
@@ -52,7 +51,6 @@
 
 TEST_F(BindingRemapperTest, RemapBindingPoints) {
   auto* src = R"(
-[[block]]
 struct S {
   a : f32;
 };
@@ -67,7 +65,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct S {
   a : f32;
 };
@@ -96,7 +93,6 @@
 
 TEST_F(BindingRemapperTest, RemapAccessControls) {
   auto* src = R"(
-[[block]]
 struct S {
   a : f32;
 };
@@ -113,7 +109,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct S {
   a : f32;
 };
@@ -146,7 +141,6 @@
 // decorations in type aliases. If not, just remove.
 TEST_F(BindingRemapperTest, DISABLED_RemapAccessControlsWithAliases) {
   auto* src = R"(
-[[block]]
 struct S {
   a : f32;
 };
@@ -169,7 +163,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct S {
   a : f32;
 };
@@ -206,7 +199,6 @@
 
 TEST_F(BindingRemapperTest, RemapAll) {
   auto* src = R"(
-[[block]]
 struct S {
   a : f32;
 };
@@ -221,7 +213,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct S {
   a : f32;
 };
@@ -252,7 +243,6 @@
 
 TEST_F(BindingRemapperTest, BindingCollisionsSameEntryPoint) {
   auto* src = R"(
-[[block]]
 struct S {
   i : i32;
 };
@@ -272,7 +262,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct S {
   i : i32;
 };
@@ -306,7 +295,6 @@
 
 TEST_F(BindingRemapperTest, BindingCollisionsDifferentEntryPoints) {
   auto* src = R"(
-[[block]]
 struct S {
   i : i32;
 };
@@ -331,7 +319,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct S {
   i : i32;
 };
@@ -370,7 +357,6 @@
 
 TEST_F(BindingRemapperTest, NoData) {
   auto* src = R"(
-[[block]]
 struct S {
   a : f32;
 };
diff --git a/src/transform/calculate_array_length_test.cc b/src/transform/calculate_array_length_test.cc
index 897213c..4522768 100644
--- a/src/transform/calculate_array_length_test.cc
+++ b/src/transform/calculate_array_length_test.cc
@@ -38,7 +38,6 @@
 
 TEST_F(CalculateArrayLengthTest, Basic) {
   auto* src = R"(
-[[block]]
 struct SB {
   x : i32;
   arr : array<i32>;
@@ -53,7 +52,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct SB {
   x : i32;
   arr : array<i32>;
@@ -80,7 +78,6 @@
 
 TEST_F(CalculateArrayLengthTest, InSameBlock) {
   auto* src = R"(
-[[block]]
 struct SB {
   x : i32;
   arr : array<i32>;
@@ -97,7 +94,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct SB {
   x : i32;
   arr : array<i32>;
@@ -126,7 +122,6 @@
 
 TEST_F(CalculateArrayLengthTest, WithStride) {
   auto* src = R"(
-[[block]]
 struct SB {
   x : i32;
   y : f32;
@@ -142,7 +137,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct SB {
   x : i32;
   y : f32;
@@ -170,7 +164,6 @@
 
 TEST_F(CalculateArrayLengthTest, Nested) {
   auto* src = R"(
-[[block]]
 struct SB {
   x : i32;
   arr : array<i32>;
@@ -191,7 +184,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct SB {
   x : i32;
   arr : array<i32>;
@@ -227,13 +219,11 @@
 
 TEST_F(CalculateArrayLengthTest, MultipleStorageBuffers) {
   auto* src = R"(
-[[block]]
 struct SB1 {
   x : i32;
   arr1 : array<i32>;
 };
 
-[[block]]
 struct SB2 {
   x : i32;
   arr2 : array<vec4<f32>>;
@@ -252,7 +242,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct SB1 {
   x : i32;
   arr1 : array<i32>;
@@ -261,7 +250,6 @@
 [[internal(intrinsic_buffer_size)]]
 fn tint_symbol([[internal(disable_validation__ignore_constructible_function_parameter)]] buffer : SB1, result : ptr<function, u32>)
 
-[[block]]
 struct SB2 {
   x : i32;
   arr2 : array<vec4<f32>>;
@@ -295,7 +283,6 @@
 
 TEST_F(CalculateArrayLengthTest, Shadowing) {
   auto* src = R"(
-[[block]]
 struct SB {
   x : i32;
   arr : array<i32>;
@@ -316,7 +303,6 @@
 
   auto* expect =
       R"(
-[[block]]
 struct SB {
   x : i32;
   arr : array<i32>;
diff --git a/src/transform/canonicalize_entry_point_io_test.cc b/src/transform/canonicalize_entry_point_io_test.cc
index 3ea25c1..e2daa97 100644
--- a/src/transform/canonicalize_entry_point_io_test.cc
+++ b/src/transform/canonicalize_entry_point_io_test.cc
@@ -1320,7 +1320,6 @@
 
 TEST_F(CanonicalizeEntryPointIOTest, Struct_LayoutDecorations) {
   auto* src = R"(
-[[block]]
 struct FragmentInput {
   [[size(16), location(1)]] value : f32;
   [[builtin(position)]] [[align(32)]] coord : vec4<f32>;
@@ -1338,7 +1337,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct FragmentInput {
   [[size(16)]]
   value : f32;
diff --git a/src/transform/decompose_memory_access_test.cc b/src/transform/decompose_memory_access_test.cc
index 5cf3bc6..046d88c 100644
--- a/src/transform/decompose_memory_access_test.cc
+++ b/src/transform/decompose_memory_access_test.cc
@@ -24,7 +24,6 @@
 
 TEST_F(DecomposeMemoryAccessTest, SB_BasicLoad) {
   auto* src = R"(
-[[block]]
 struct SB {
   a : i32;
   b : u32;
@@ -80,7 +79,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct SB {
   a : i32;
   b : u32;
@@ -222,7 +220,6 @@
 
 TEST_F(DecomposeMemoryAccessTest, UB_BasicLoad) {
   auto* src = R"(
-[[block]]
 struct UB {
   a : i32;
   b : u32;
@@ -278,7 +275,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct UB {
   a : i32;
   b : u32;
@@ -420,7 +416,6 @@
 
 TEST_F(DecomposeMemoryAccessTest, SB_BasicStore) {
   auto* src = R"(
-[[block]]
 struct SB {
   a : i32;
   b : u32;
@@ -476,7 +471,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct SB {
   a : i32;
   b : u32;
@@ -635,7 +629,6 @@
 
 TEST_F(DecomposeMemoryAccessTest, LoadStructure) {
   auto* src = R"(
-[[block]]
 struct SB {
   a : i32;
   b : u32;
@@ -670,7 +663,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct SB {
   a : i32;
   b : u32;
@@ -795,7 +787,6 @@
 
 TEST_F(DecomposeMemoryAccessTest, StoreStructure) {
   auto* src = R"(
-[[block]]
 struct SB {
   a : i32;
   b : u32;
@@ -830,7 +821,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct SB {
   a : i32;
   b : u32;
@@ -1005,7 +995,6 @@
   c : i32;
 };
 
-[[block]]
 struct SB {
   [[size(128)]]
   a : i32;
@@ -1040,7 +1029,6 @@
   c : i32;
 };
 
-[[block]]
 struct SB {
   [[size(128)]]
   a : i32;
@@ -1077,7 +1065,6 @@
   c : i32;
 };
 
-[[block]]
 struct SB {
   [[size(128)]]
   a : i32;
@@ -1108,7 +1095,6 @@
   c : i32;
 };
 
-[[block]]
 struct SB {
   [[size(128)]]
   a : i32;
@@ -1156,7 +1142,6 @@
 
 type A2_Array = [[stride(256)]] array<S2>;
 
-[[block]]
 struct SB {
   [[size(128)]]
   a : i32;
@@ -1195,7 +1180,6 @@
 
 type A2_Array = [[stride(256)]] array<S2>;
 
-[[block]]
 struct SB {
   [[size(128)]]
   a : i32;
@@ -1223,7 +1207,6 @@
 
 TEST_F(DecomposeMemoryAccessTest, StorageBufferAtomics) {
   auto* src = R"(
-[[block]]
 struct SB {
   padding : vec4<f32>;
   a : atomic<i32>;
@@ -1261,7 +1244,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct SB {
   padding : vec4<f32>;
   a : atomic<i32>;
diff --git a/src/transform/decompose_strided_matrix_test.cc b/src/transform/decompose_strided_matrix_test.cc
index b7a22e4..41555dc 100644
--- a/src/transform/decompose_strided_matrix_test.cc
+++ b/src/transform/decompose_strided_matrix_test.cc
@@ -51,7 +51,6 @@
 }
 
 TEST_F(DecomposeStridedMatrixTest, ReadUniformMatrix) {
-  // [[block]]
   // struct S {
   //   [[offset(16), stride(32)]]
   //   [[internal(ignore_stride_decoration)]]
@@ -74,9 +73,6 @@
                   b.create<ast::StrideDecoration>(32),
                   b.Disable(ast::DisabledValidation::kIgnoreStrideDecoration),
               }),
-      },
-      {
-          b.StructBlock(),
       });
   b.Global("s", b.ty.Of(S), ast::StorageClass::kUniform,
            b.GroupAndBinding(0, 0));
@@ -91,7 +87,6 @@
       });
 
   auto* expect = R"(
-[[block]]
 struct S {
   [[size(16)]]
   padding : u32;
@@ -117,7 +112,6 @@
 }
 
 TEST_F(DecomposeStridedMatrixTest, ReadUniformColumn) {
-  // [[block]]
   // struct S {
   //   [[offset(16), stride(32)]]
   //   [[internal(ignore_stride_decoration)]]
@@ -140,9 +134,6 @@
                   b.create<ast::StrideDecoration>(32),
                   b.Disable(ast::DisabledValidation::kIgnoreStrideDecoration),
               }),
-      },
-      {
-          b.StructBlock(),
       });
   b.Global("s", b.ty.Of(S), ast::StorageClass::kUniform,
            b.GroupAndBinding(0, 0));
@@ -157,7 +148,6 @@
          });
 
   auto* expect = R"(
-[[block]]
 struct S {
   [[size(16)]]
   padding : u32;
@@ -179,7 +169,6 @@
 }
 
 TEST_F(DecomposeStridedMatrixTest, ReadUniformMatrix_DefaultStride) {
-  // [[block]]
   // struct S {
   //   [[offset(16), stride(8)]]
   //   [[internal(ignore_stride_decoration)]]
@@ -202,9 +191,6 @@
                   b.create<ast::StrideDecoration>(8),
                   b.Disable(ast::DisabledValidation::kIgnoreStrideDecoration),
               }),
-      },
-      {
-          b.StructBlock(),
       });
   b.Global("s", b.ty.Of(S), ast::StorageClass::kUniform,
            b.GroupAndBinding(0, 0));
@@ -219,7 +205,6 @@
       });
 
   auto* expect = R"(
-[[block]]
 struct S {
   [[size(16)]]
   padding : u32;
@@ -242,7 +227,6 @@
 }
 
 TEST_F(DecomposeStridedMatrixTest, ReadStorageMatrix) {
-  // [[block]]
   // struct S {
   //   [[offset(8), stride(32)]]
   //   [[internal(ignore_stride_decoration)]]
@@ -265,9 +249,6 @@
                   b.create<ast::StrideDecoration>(32),
                   b.Disable(ast::DisabledValidation::kIgnoreStrideDecoration),
               }),
-      },
-      {
-          b.StructBlock(),
       });
   b.Global("s", b.ty.Of(S), ast::StorageClass::kStorage,
            ast::Access::kReadWrite, b.GroupAndBinding(0, 0));
@@ -282,7 +263,6 @@
       });
 
   auto* expect = R"(
-[[block]]
 struct S {
   [[size(8)]]
   padding : u32;
@@ -308,7 +288,6 @@
 }
 
 TEST_F(DecomposeStridedMatrixTest, ReadStorageColumn) {
-  // [[block]]
   // struct S {
   //   [[offset(16), stride(32)]]
   //   [[internal(ignore_stride_decoration)]]
@@ -331,9 +310,6 @@
                   b.create<ast::StrideDecoration>(32),
                   b.Disable(ast::DisabledValidation::kIgnoreStrideDecoration),
               }),
-      },
-      {
-          b.StructBlock(),
       });
   b.Global("s", b.ty.Of(S), ast::StorageClass::kStorage,
            ast::Access::kReadWrite, b.GroupAndBinding(0, 0));
@@ -348,7 +324,6 @@
          });
 
   auto* expect = R"(
-[[block]]
 struct S {
   [[size(16)]]
   padding : u32;
@@ -370,7 +345,6 @@
 }
 
 TEST_F(DecomposeStridedMatrixTest, WriteStorageMatrix) {
-  // [[block]]
   // struct S {
   //   [[offset(8), stride(32)]]
   //   [[internal(ignore_stride_decoration)]]
@@ -393,9 +367,6 @@
                   b.create<ast::StrideDecoration>(32),
                   b.Disable(ast::DisabledValidation::kIgnoreStrideDecoration),
               }),
-      },
-      {
-          b.StructBlock(),
       });
   b.Global("s", b.ty.Of(S), ast::StorageClass::kStorage,
            ast::Access::kReadWrite, b.GroupAndBinding(0, 0));
@@ -411,7 +382,6 @@
          });
 
   auto* expect = R"(
-[[block]]
 struct S {
   [[size(8)]]
   padding : u32;
@@ -437,7 +407,6 @@
 }
 
 TEST_F(DecomposeStridedMatrixTest, WriteStorageColumn) {
-  // [[block]]
   // struct S {
   //   [[offset(8), stride(32)]]
   //   [[internal(ignore_stride_decoration)]]
@@ -460,9 +429,6 @@
                   b.create<ast::StrideDecoration>(32),
                   b.Disable(ast::DisabledValidation::kIgnoreStrideDecoration),
               }),
-      },
-      {
-          b.StructBlock(),
       });
   b.Global("s", b.ty.Of(S), ast::StorageClass::kStorage,
            ast::Access::kReadWrite, b.GroupAndBinding(0, 0));
@@ -477,7 +443,6 @@
          });
 
   auto* expect = R"(
-[[block]]
 struct S {
   [[size(8)]]
   padding : u32;
@@ -499,7 +464,6 @@
 }
 
 TEST_F(DecomposeStridedMatrixTest, ReadWriteViaPointerLets) {
-  // [[block]]
   // struct S {
   //   [[offset(8), stride(32)]]
   //   [[internal(ignore_stride_decoration)]]
@@ -528,9 +492,6 @@
                   b.create<ast::StrideDecoration>(32),
                   b.Disable(ast::DisabledValidation::kIgnoreStrideDecoration),
               }),
-      },
-      {
-          b.StructBlock(),
       });
   b.Global("s", b.ty.Of(S), ast::StorageClass::kStorage,
            ast::Access::kReadWrite, b.GroupAndBinding(0, 0));
@@ -554,7 +515,6 @@
       });
 
   auto* expect = R"(
-[[block]]
 struct S {
   [[size(8)]]
   padding : u32;
diff --git a/src/transform/first_index_offset.cc b/src/transform/first_index_offset.cc
index 4bc21c2..6fcff16 100644
--- a/src/transform/first_index_offset.cc
+++ b/src/transform/first_index_offset.cc
@@ -18,7 +18,6 @@
 #include <unordered_map>
 #include <utility>
 
-#include "src/ast/struct_block_decoration.h"
 #include "src/program_builder.h"
 #include "src/sem/function.h"
 #include "src/sem/member_accessor_expression.h"
@@ -133,9 +132,7 @@
       instance_index_offset = offset;
       offset += 4;
     }
-    auto* struct_ =
-        ctx.dst->Structure(ctx.dst->Sym(), std::move(members),
-                           {ctx.dst->create<ast::StructBlockDecoration>()});
+    auto* struct_ = ctx.dst->Structure(ctx.dst->Sym(), std::move(members));
 
     // Create a global to hold the uniform buffer
     Symbol buffer_name = ctx.dst->Sym();
diff --git a/src/transform/first_index_offset.h b/src/transform/first_index_offset.h
index 21a618a..ffbb138 100644
--- a/src/transform/first_index_offset.h
+++ b/src/transform/first_index_offset.h
@@ -41,7 +41,6 @@
 ///   }
 ///
 /// After:
-///   [[block]]
 ///   struct TintFirstIndexOffsetData {
 ///     tint_first_vertex_index : u32;
 ///     tint_first_instance_index : u32;
diff --git a/src/transform/first_index_offset_test.cc b/src/transform/first_index_offset_test.cc
index 8f9d4ff..8d537e0 100644
--- a/src/transform/first_index_offset_test.cc
+++ b/src/transform/first_index_offset_test.cc
@@ -59,7 +59,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct tint_symbol {
   first_vertex_index : u32;
 };
@@ -106,7 +105,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct tint_symbol {
   first_instance_index : u32;
 };
@@ -158,7 +156,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct tint_symbol {
   first_vertex_index : u32;
   first_instance_index : u32;
@@ -217,7 +214,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct tint_symbol {
   first_vertex_index : u32;
 };
@@ -280,7 +276,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct tint_symbol {
   first_vertex_index : u32;
   first_instance_index : u32;
diff --git a/src/transform/module_scope_var_to_entry_point_param.h b/src/transform/module_scope_var_to_entry_point_param.h
index 1b178ec..34db3e6 100644
--- a/src/transform/module_scope_var_to_entry_point_param.h
+++ b/src/transform/module_scope_var_to_entry_point_param.h
@@ -33,7 +33,6 @@
 ///
 /// Before:
 /// ```
-/// [[block]]
 /// struct S {
 ///   f : f32;
 /// };
diff --git a/src/transform/module_scope_var_to_entry_point_param_test.cc b/src/transform/module_scope_var_to_entry_point_param_test.cc
index 26951ab..a1620e7 100644
--- a/src/transform/module_scope_var_to_entry_point_param_test.cc
+++ b/src/transform/module_scope_var_to_entry_point_param_test.cc
@@ -199,7 +199,6 @@
 
 TEST_F(ModuleScopeVarToEntryPointParamTest, Buffers_Basic) {
   auto* src = R"(
-[[block]]
 struct S {
   a : f32;
 };
@@ -217,7 +216,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct S {
   a : f32;
 };
@@ -236,7 +234,6 @@
 
 TEST_F(ModuleScopeVarToEntryPointParamTest, Buffers_FunctionCalls) {
   auto* src = R"(
-[[block]]
 struct S {
   a : f32;
 };
@@ -268,7 +265,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct S {
   a : f32;
 };
@@ -490,7 +486,6 @@
 
 TEST_F(ModuleScopeVarToEntryPointParamTest, UnusedVariables) {
   auto* src = R"(
-[[block]]
 struct S {
   a : f32;
 };
@@ -512,7 +507,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct S {
   a : f32;
 };
diff --git a/src/transform/multiplanar_external_texture.cc b/src/transform/multiplanar_external_texture.cc
index a3cfcc7..387604b 100644
--- a/src/transform/multiplanar_external_texture.cc
+++ b/src/transform/multiplanar_external_texture.cc
@@ -241,8 +241,7 @@
 
     params_struct_sym = b.Symbols().New("ExternalTextureParams");
 
-    b.Structure(params_struct_sym, member_list,
-                ast::DecorationList{b.StructBlock()});
+    b.Structure(params_struct_sym, member_list);
   }
 
   /// Constructs a StatementList containing all the statements making up the
diff --git a/src/transform/multiplanar_external_texture_test.cc b/src/transform/multiplanar_external_texture_test.cc
index 488df7a..631d76b 100644
--- a/src/transform/multiplanar_external_texture_test.cc
+++ b/src/transform/multiplanar_external_texture_test.cc
@@ -78,7 +78,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct ExternalTextureParams {
   numPlanes : u32;
   vr : f32;
@@ -123,7 +122,6 @@
   auto* expect = R"(
 [[group(0), binding(0)]] var s : sampler;
 
-[[block]]
 struct ExternalTextureParams {
   numPlanes : u32;
   vr : f32;
@@ -177,7 +175,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct ExternalTextureParams {
   numPlanes : u32;
   vr : f32;
@@ -235,7 +232,6 @@
   auto* expect = R"(
 [[group(0), binding(0)]] var s : sampler;
 
-[[block]]
 struct ExternalTextureParams {
   numPlanes : u32;
   vr : f32;
@@ -309,7 +305,6 @@
   auto* expect = R"(
 [[group(0), binding(0)]] var s : sampler;
 
-[[block]]
 struct ExternalTextureParams {
   numPlanes : u32;
   vr : f32;
@@ -392,7 +387,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct ExternalTextureParams {
   numPlanes : u32;
   vr : f32;
@@ -459,7 +453,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct ExternalTextureParams {
   numPlanes : u32;
   vr : f32;
@@ -528,7 +521,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct ExternalTextureParams {
   numPlanes : u32;
   vr : f32;
@@ -607,7 +599,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct ExternalTextureParams {
   numPlanes : u32;
   vr : f32;
diff --git a/src/transform/num_workgroups_from_uniform.cc b/src/transform/num_workgroups_from_uniform.cc
index 62faf9a..1e0f77b 100644
--- a/src/transform/num_workgroups_from_uniform.cc
+++ b/src/transform/num_workgroups_from_uniform.cc
@@ -122,8 +122,7 @@
       auto* num_workgroups_struct = ctx.dst->Structure(
           ctx.dst->Sym(),
           {ctx.dst->Member(kNumWorkgroupsMemberName,
-                           ctx.dst->ty.vec3(ctx.dst->ty.u32()))},
-          ast::DecorationList{ctx.dst->create<ast::StructBlockDecoration>()});
+                           ctx.dst->ty.vec3(ctx.dst->ty.u32()))});
       num_workgroups_ubo = ctx.dst->Global(
           ctx.dst->Sym(), ctx.dst->ty.Of(num_workgroups_struct),
           ast::StorageClass::kUniform,
diff --git a/src/transform/num_workgroups_from_uniform.h b/src/transform/num_workgroups_from_uniform.h
index 94d9ba9..af922c2 100644
--- a/src/transform/num_workgroups_from_uniform.h
+++ b/src/transform/num_workgroups_from_uniform.h
@@ -30,7 +30,6 @@
 ///
 /// The generated uniform buffer will have the form:
 /// ```
-/// [[block]]
 /// struct num_workgroups_struct {
 ///  num_workgroups : vec3<u32>;
 /// };
diff --git a/src/transform/num_workgroups_from_uniform_test.cc b/src/transform/num_workgroups_from_uniform_test.cc
index 1d71941..9d1b81d 100644
--- a/src/transform/num_workgroups_from_uniform_test.cc
+++ b/src/transform/num_workgroups_from_uniform_test.cc
@@ -66,7 +66,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct tint_symbol_2 {
   num_workgroups : vec3<u32>;
 };
@@ -109,7 +108,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct tint_symbol_2 {
   num_workgroups : vec3<u32>;
 };
@@ -158,7 +156,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct tint_symbol_2 {
   num_workgroups : vec3<u32>;
 };
@@ -234,7 +231,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct tint_symbol_6 {
   num_workgroups : vec3<u32>;
 };
diff --git a/src/transform/pad_array_elements_test.cc b/src/transform/pad_array_elements_test.cc
index eca088c..7483f3f 100644
--- a/src/transform/pad_array_elements_test.cc
+++ b/src/transform/pad_array_elements_test.cc
@@ -64,7 +64,6 @@
 
 TEST_F(PadArrayElementsTest, RuntimeArray) {
   auto* src = R"(
-[[block]]
 struct S {
   rta : [[stride(8)]] array<i32>;
 };
@@ -75,7 +74,6 @@
   el : i32;
 };
 
-[[block]]
 struct S {
   rta : array<tint_padded_array_element>;
 };
diff --git a/src/transform/remove_phonies_test.cc b/src/transform/remove_phonies_test.cc
index 138fdbf..837e34c 100644
--- a/src/transform/remove_phonies_test.cc
+++ b/src/transform/remove_phonies_test.cc
@@ -173,7 +173,6 @@
 
 TEST_F(RemovePhoniesTest, ForLoop) {
   auto* src = R"(
-[[block]]
 struct S {
   arr : array<i32>;
 };
@@ -203,7 +202,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct S {
   arr : array<i32>;
 };
diff --git a/src/transform/robustness_test.cc b/src/transform/robustness_test.cc
index 4dfe0c1..4c0025e 100644
--- a/src/transform/robustness_test.cc
+++ b/src/transform/robustness_test.cc
@@ -174,7 +174,6 @@
 // 0xffffffff. If WGSL supports 64-bit indexing, re-enable this test.
 TEST_F(RobustnessTest, DISABLED_LargeArrays_Idx) {
   auto* src = R"(
-[[block]]
 struct S {
   a : array<f32, 0x7fffffff>;
   b : array<f32>;
@@ -213,7 +212,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct S {
   a : array<f32, 2147483647>;
   b : array<f32>;
@@ -617,7 +615,6 @@
 
 TEST_F(RobustnessTest, RuntimeArray_Clamps) {
   auto* src = R"(
-[[block]]
 struct S {
   a : f32;
   b : array<f32>;
@@ -630,7 +627,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct S {
   a : f32;
   b : array<f32>;
@@ -778,7 +774,6 @@
 // Check that existing use of min() and arrayLength() do not get renamed.
 TEST_F(RobustnessTest, DontRenameSymbols) {
   auto* src = R"(
-[[block]]
 struct S {
   a : f32;
   b : array<f32>;
@@ -796,7 +791,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct S {
   a : f32;
   b : array<f32>;
@@ -819,7 +813,6 @@
 }
 
 const char* kOmitSourceShader = R"(
-[[block]]
 struct S {
   a : array<f32, 4>;
   b : array<f32>;
@@ -827,7 +820,7 @@
 [[group(0), binding(0)]] var<storage, read> s : S;
 
 type UArr = [[stride(16)]] array<f32, 4>;
-[[block]] struct U {
+struct U {
   a : UArr;
 };
 [[group(1), binding(0)]] var<uniform> u : U;
@@ -878,7 +871,6 @@
 
 TEST_F(RobustnessTest, OmitNone) {
   auto* expect = R"(
-[[block]]
 struct S {
   a : array<f32, 4>;
   b : array<f32>;
@@ -888,7 +880,6 @@
 
 type UArr = [[stride(16)]] array<f32, 4>;
 
-[[block]]
 struct U {
   a : UArr;
 };
@@ -943,7 +934,6 @@
 
 TEST_F(RobustnessTest, OmitStorage) {
   auto* expect = R"(
-[[block]]
 struct S {
   a : array<f32, 4>;
   b : array<f32>;
@@ -953,7 +943,6 @@
 
 type UArr = [[stride(16)]] array<f32, 4>;
 
-[[block]]
 struct U {
   a : UArr;
 };
@@ -1010,7 +999,6 @@
 
 TEST_F(RobustnessTest, OmitUniform) {
   auto* expect = R"(
-[[block]]
 struct S {
   a : array<f32, 4>;
   b : array<f32>;
@@ -1020,7 +1008,6 @@
 
 type UArr = [[stride(16)]] array<f32, 4>;
 
-[[block]]
 struct U {
   a : UArr;
 };
@@ -1077,7 +1064,6 @@
 
 TEST_F(RobustnessTest, OmitBoth) {
   auto* expect = R"(
-[[block]]
 struct S {
   a : array<f32, 4>;
   b : array<f32>;
@@ -1087,7 +1073,6 @@
 
 type UArr = [[stride(16)]] array<f32, 4>;
 
-[[block]]
 struct U {
   a : UArr;
 };
diff --git a/src/transform/vertex_pulling.cc b/src/transform/vertex_pulling.cc
index 40dd564..ea15e85 100644
--- a/src/transform/vertex_pulling.cc
+++ b/src/transform/vertex_pulling.cc
@@ -19,7 +19,6 @@
 
 #include "src/ast/assignment_statement.h"
 #include "src/ast/bitcast_expression.h"
-#include "src/ast/struct_block_decoration.h"
 #include "src/ast/variable_decl_statement.h"
 #include "src/program_builder.h"
 #include "src/sem/variable.h"
@@ -260,9 +259,6 @@
         {
             ctx.dst->Member(GetStructBufferName(),
                             ctx.dst->ty.array<ProgramBuilder::u32>(4)),
-        },
-        {
-            ctx.dst->create<ast::StructBlockDecoration>(),
         });
     for (uint32_t i = 0; i < cfg.vertex_state.size(); ++i) {
       // The decorated variable with struct type
diff --git a/src/transform/vertex_pulling_test.cc b/src/transform/vertex_pulling_test.cc
index 20f7929..b43d4a4 100644
--- a/src/transform/vertex_pulling_test.cc
+++ b/src/transform/vertex_pulling_test.cc
@@ -107,7 +107,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct TintVertexData {
   tint_vertex_data : [[stride(4)]] array<u32>;
 };
@@ -137,7 +136,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct TintVertexData {
   tint_vertex_data : [[stride(4)]] array<u32>;
 };
@@ -176,7 +174,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct TintVertexData {
   tint_vertex_data : [[stride(4)]] array<u32>;
 };
@@ -215,7 +212,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct TintVertexData {
   tint_vertex_data : [[stride(4)]] array<u32>;
 };
@@ -259,7 +255,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct TintVertexData {
   tint_vertex_data : [[stride(4)]] array<u32>;
 };
@@ -308,7 +303,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct TintVertexData {
   tint_vertex_data : [[stride(4)]] array<u32>;
 };
@@ -369,7 +363,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct TintVertexData {
   tint_vertex_data : [[stride(4)]] array<u32>;
 };
@@ -452,7 +445,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct TintVertexData {
   tint_vertex_data : [[stride(4)]] array<u32>;
 };
@@ -520,7 +512,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct TintVertexData {
   tint_vertex_data : [[stride(4)]] array<u32>;
 };
@@ -566,7 +557,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct TintVertexData {
   tint_vertex_data : [[stride(4)]] array<u32>;
 };
@@ -623,7 +613,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct TintVertexData {
   tint_vertex_data_1 : [[stride(4)]] array<u32>;
 };
@@ -701,7 +690,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct TintVertexData {
   tint_vertex_data : [[stride(4)]] array<u32>;
 };
@@ -862,7 +850,6 @@
 
   auto* expect =
       R"(
-[[block]]
 struct TintVertexData {
   tint_vertex_data : [[stride(4)]] array<u32>;
 };
@@ -1022,7 +1009,6 @@
 )";
 
   auto* expect = R"(
-[[block]]
 struct TintVertexData {
   tint_vertex_data : [[stride(4)]] array<u32>;
 };
