diff --git a/gpu/command_buffer/service/webgpu_decoder_impl.cc b/gpu/command_buffer/service/webgpu_decoder_impl.cc
index b6eb2d3eea711..d8d31f419f230 100644
--- a/gpu/command_buffer/service/webgpu_decoder_impl.cc
+++ b/gpu/command_buffer/service/webgpu_decoder_impl.cc
@@ -648,6 +648,9 @@ error::Error WebGPUDecoderImpl::InitDawnDeviceAndSetWireServer(
   if (request_device_properties.textureCompressionBC) {
     device_descriptor.requiredExtensions.push_back("texture_compression_bc");
   }
+  if (request_device_properties.shaderFloat16) {
+    device_descriptor.requiredExtensions.push_back("shader_float16");
+  }
 
   WGPUDevice wgpu_device =
       dawn_adapters_[requested_adapter_index].CreateDevice(&device_descriptor);
diff --git a/third_party/blink/renderer/modules/webgpu/gpu_adapter.cc b/third_party/blink/renderer/modules/webgpu/gpu_adapter.cc
index d2ea6c7c40a4f..969f89b2c65d3 100644
--- a/third_party/blink/renderer/modules/webgpu/gpu_adapter.cc
+++ b/third_party/blink/renderer/modules/webgpu/gpu_adapter.cc
@@ -28,6 +28,8 @@ WGPUDeviceProperties AsDawnType(const GPUDeviceDescriptor* descriptor) {
   requested_device_properties.textureCompressionBC =
       extension_set.Contains("texture-compression-bc") ||
       extension_set.Contains("textureCompressionBC");
+  requested_device_properties.shaderFloat16 =
+      extension_set.Contains("shader-float16");
 
   return requested_device_properties;
 }
@@ -76,6 +78,9 @@ void GPUAdapter::InitializeExtensionNameList() {
     extension_name_list_.emplace_back("texture-compression-bc");
     extension_name_list_.emplace_back("textureCompressionBC");
   }
+  if (adapter_properties_.shaderFloat16) {
+    extension_name_list_.emplace_back("shader-float16");
+  }
 }
 
 ScriptPromise GPUAdapter::requestDevice(ScriptState* script_state,
diff --git a/third_party/blink/renderer/modules/webgpu/gpu_adapter.idl b/third_party/blink/renderer/modules/webgpu/gpu_adapter.idl
index 40e4002bbb0e4..4c7172370c23b 100644
--- a/third_party/blink/renderer/modules/webgpu/gpu_adapter.idl
+++ b/third_party/blink/renderer/modules/webgpu/gpu_adapter.idl
@@ -7,7 +7,8 @@
 enum GPUExtensionName {
     "texture-compression-bc",
     // Non-standard extension name string. Remove after a transition period.
-    "textureCompressionBC"
+    "textureCompressionBC",
+    "shader-float16"
 };
 
 [