diff --git a/src/tools/fuzzing.h b/src/tools/fuzzing.h
index 51dbb18..3c47d2e 100644
--- a/src/tools/fuzzing.h
+++ b/src/tools/fuzzing.h
@@ -531,6 +531,8 @@
   Expression* makeBulkMemory(Type type);
   Expression* makeTableGet(Type type);
   Expression* makeTableSet(Type type);
+  Expression* makeTableSize(Type type);
+  Expression* makeTableGrow(Type type);
   // TODO: support other RefIs variants, and rename this
   Expression* makeRefIsNull(Type type);
   Expression* makeRefEq(Type type);
diff --git a/src/tools/fuzzing/fuzzing.cpp b/src/tools/fuzzing/fuzzing.cpp
index eac05d3..7c67a3b 100644
--- a/src/tools/fuzzing/fuzzing.cpp
+++ b/src/tools/fuzzing/fuzzing.cpp
@@ -1030,7 +1030,7 @@
     table->initial = std::min(table->initial, ReasonableMaxTableSize);
     assert(ReasonableMaxTableSize <= Table::kMaxSize);
 
-    table->max = oneIn(2) ? Address(Table::kUnlimitedSize) : table->initial;
+    table->max = oneIn(2) ? ReasonableMaxTableSize : table->initial;
 
     if (!preserveImportsAndExports) {
       // Avoid an imported table (which the fuzz harness would need to handle).
@@ -2919,6 +2919,12 @@
       options.add(
         FeatureSet::MVP, &Self::makeMemorySize, &Self::makeMemoryGrow);
     }
+    if (std::any_of(wasm.tables.begin(), wasm.tables.end(), [&](auto& table) {
+          return table->addressType == type;
+        })) {
+      options.add(
+        FeatureSet::ReferenceTypes, &Self::makeTableSize, &Self::makeTableGrow);
+    }
   }
   if (type == Type::i32) {
     if (callExportCatchImportName || callRefCatchImportName) {
@@ -5724,6 +5730,36 @@
   }
 }
 
+Expression* TranslateToFuzzReader::makeTableSize(Type type) {
+  std::vector<Table*> tables;
+  for (auto& table : wasm.tables) {
+    if (table->addressType == type) {
+      tables.push_back(table.get());
+    }
+  }
+  if (tables.empty()) {
+    return makeTrivial(type);
+  }
+  auto* table = pick(tables);
+  return builder.makeTableSize(table->name);
+}
+
+Expression* TranslateToFuzzReader::makeTableGrow(Type type) {
+  std::vector<Table*> tables;
+  for (auto& table : wasm.tables) {
+    if (table->addressType == type) {
+      tables.push_back(table.get());
+    }
+  }
+  if (tables.empty()) {
+    return makeTrivial(type);
+  }
+  auto* table = pick(tables);
+  auto* value = make(table->type);
+  auto* delta = make(type);
+  return builder.makeTableGrow(table->name, value, delta);
+}
+
 Expression* TranslateToFuzzReader::makeRefIsNull(Type type) {
   assert(type == Type::i32);
   assert(wasm.features.hasReferenceTypes());
diff --git a/src/wasm2js.h b/src/wasm2js.h
index 644f6d9..436fb88 100644
--- a/src/wasm2js.h
+++ b/src/wasm2js.h
@@ -379,7 +379,6 @@
 
 Ref Wasm2JSBuilder::processWasm(Module* wasm, Name funcName) {
 
-
   // Collect passive data segment indices.
   for (Index i = 0; i < wasm->dataSegments.size(); ++i) {
     dataIndices[wasm->dataSegments[i]->name] = i;
diff --git a/test/passes/translate-to-fuzz_all-features_metrics_noprint.txt b/test/passes/translate-to-fuzz_all-features_metrics_noprint.txt
index a08f74d..d8d1217 100644
--- a/test/passes/translate-to-fuzz_all-features_metrics_noprint.txt
+++ b/test/passes/translate-to-fuzz_all-features_metrics_noprint.txt
@@ -1,95 +1,99 @@
 Metrics
 total
- [exports]      : 107     
- [funcs]        : 214     
+ [exports]      : 48      
+ [funcs]        : 109     
  [globals]      : 13      
  [imports]      : 13      
  [memories]     : 1       
  [memory-data]  : 31      
- [table-data]   : 56      
+ [table-data]   : 21      
  [tables]       : 2       
  [tags]         : 2       
- [total]        : 99434   
- [vars]         : 3971    
- ArrayCmpxchg   : 19      
- ArrayCopy      : 36      
- ArrayFill      : 39      
- ArrayGet       : 376     
- ArrayLen       : 507     
- ArrayNew       : 1221    
- ArrayNewFixed  : 354     
- ArrayRMW       : 15      
- ArraySet       : 60      
- AtomicCmpxchg  : 33      
- AtomicFence    : 61      
- AtomicNotify   : 12      
- AtomicRMW      : 43      
- AtomicWait     : 7       
- Binary         : 3587    
- Block          : 6879    
- BrOn           : 635     
- Break          : 956     
- Call           : 987     
- CallIndirect   : 141     
- CallRef        : 205     
- Const          : 13411   
- ContBind       : 2       
- ContNew        : 114     
- DataDrop       : 21      
- Drop           : 889     
- ElemDrop       : 7       
- GlobalGet      : 5100    
- GlobalSet      : 2130    
- I31Get         : 56      
- If             : 2386    
- Load           : 245     
- LocalGet       : 9715    
- LocalSet       : 3812    
- Loop           : 846     
- MemoryCopy     : 13      
- MemoryFill     : 20      
- MemoryGrow     : 38      
- MemoryInit     : 10      
- MemorySize     : 32      
- Nop            : 636     
- Pop            : 187     
- RefAs          : 9895    
- RefCast        : 706     
- RefEq          : 243     
- RefFunc        : 1906    
- RefGetDesc     : 68      
- RefI31         : 686     
- RefIsNull      : 57      
- RefNull        : 11596   
- RefTest        : 55      
- Return         : 346     
- SIMDExtract    : 119     
- SIMDShift      : 3       
- SIMDShuffle    : 2       
- SIMDTernary    : 6       
- Select         : 289     
- Store          : 116     
- StringConst    : 391     
- StringEncode   : 63      
- StringEq       : 56      
- StringMeasure  : 68      
- StringNew      : 3       
- StringSliceWTF : 2       
+ [total]        : 97338   
+ [vars]         : 3397    
+ ArrayCmpxchg   : 27      
+ ArrayCopy      : 35      
+ ArrayFill      : 42      
+ ArrayGet       : 391     
+ ArrayLen       : 581     
+ ArrayNew       : 1137    
+ ArrayNewFixed  : 340     
+ ArrayRMW       : 21      
+ ArraySet       : 79      
+ AtomicCmpxchg  : 44      
+ AtomicFence    : 76      
+ AtomicNotify   : 24      
+ AtomicRMW      : 37      
+ AtomicWait     : 13      
+ Binary         : 3631    
+ Block          : 6694    
+ BrOn           : 632     
+ Break          : 964     
+ Call           : 649     
+ CallIndirect   : 130     
+ CallRef        : 206     
+ Const          : 12510   
+ ContBind       : 1       
+ ContNew        : 110     
+ DataDrop       : 10      
+ Drop           : 895     
+ ElemDrop       : 12      
+ GlobalGet      : 4805    
+ GlobalSet      : 1896    
+ I31Get         : 77      
+ If             : 2348    
+ Load           : 307     
+ LocalGet       : 12016   
+ LocalSet       : 3847    
+ Loop           : 834     
+ MemoryCopy     : 18      
+ MemoryFill     : 21      
+ MemoryGrow     : 39      
+ MemoryInit     : 17      
+ MemorySize     : 36      
+ Nop            : 674     
+ Pop            : 189     
+ RefAs          : 9740    
+ RefCast        : 704     
+ RefEq          : 277     
+ RefFunc        : 1822    
+ RefGetDesc     : 53      
+ RefI31         : 625     
+ RefIsNull      : 62      
+ RefNull        : 9738    
+ RefTest        : 62      
+ Return         : 362     
+ SIMDExtract    : 113     
+ SIMDReplace    : 2       
+ SIMDShift      : 1       
+ SIMDShuffle    : 3       
+ SIMDTernary    : 2       
+ Select         : 321     
+ Store          : 159     
+ StringConst    : 400     
+ StringEncode   : 51      
+ StringEq       : 75      
+ StringMeasure  : 78      
+ StringNew      : 4       
+ StringSliceWTF : 3       
  StringWTF16Get : 60      
- StructCmpxchg  : 38      
- StructGet      : 449     
- StructNew      : 11746   
- StructRMW      : 51      
- StructSet      : 57      
- Switch         : 7       
- TableSet       : 67      
- Throw          : 89      
- ThrowRef       : 15      
- Try            : 365     
- TryTable       : 430     
- TupleExtract   : 208     
- TupleMake      : 231     
- Unary          : 1980    
- Unreachable    : 1097    
- WideIntAddSub  : 11      
- WideIntMul     : 14      
+ StructCmpxchg  : 40      
+ StructGet      : 384     
+ StructNew      : 11028   
+ StructRMW      : 49      
+ StructSet      : 71      
+ Switch         : 3       
+ TableGet       : 1       
+ TableGrow      : 94      
+ TableSet       : 77      
+ TableSize      : 107     
+ Throw          : 114     
+ ThrowRef       : 6       
+ Try            : 375     
+ TryTable       : 478     
+ TupleExtract   : 205     
+ TupleMake      : 331     
+ Unary          : 1834    
+ Unreachable    : 975     
+ WideIntAddSub  : 23      
+ WideIntMul     : 11      
