BASELINE NowYouCanUse.com
Limited Availability WebGPU

WebGPU

The navigator.gpu API performs operations such as rendering and computation on dedicated graphics hardware (also known as a Graphics Processing Unit).
Baseline Status: This feature is currently Limited (not yet Baseline). Latest engine implementation shipped on Jan 21, 2026.
Desktop Browser Engine Support
Google Chrome
144
Supported
Mozilla Firefox
—
Unsupported
Apple Safari
26
Supported
Microsoft Edge
144
Supported
Mobile Browser Engine Support
Chrome Android
121
Firefox Android
—
Safari iOS
26
Specifications and References
MDN Browser Compat Data Keys:
api.GPU ↗ api.GPU.getPreferredCanvasFormat ↗ api.GPU.requestAdapter ↗ api.GPU.requestAdapter.discrete_adapter_default_ac ↗ api.GPU.wgslLanguageFeatures ↗ api.GPUAdapter ↗ api.GPUAdapter.features ↗ api.GPUAdapter.info ↗ api.GPUAdapter.limits ↗ api.GPUAdapter.requestDevice ↗ api.GPUAdapter.requestDevice.handles_duplicate_calls ↗ api.GPUAdapter.requestDevice.undefined_limits ↗ api.GPUAdapterInfo ↗ api.GPUAdapterInfo.architecture ↗ api.GPUAdapterInfo.description ↗ api.GPUAdapterInfo.device ↗ api.GPUAdapterInfo.subgroupMaxSize ↗ api.GPUAdapterInfo.subgroupMinSize ↗ api.GPUAdapterInfo.vendor ↗ api.GPUBindGroup ↗ api.GPUBindGroup.label ↗ api.GPUBindGroupLayout ↗ api.GPUBindGroupLayout.label ↗ api.GPUBuffer ↗ api.GPUBuffer.destroy ↗ api.GPUBuffer.getMappedRange ↗ api.GPUBuffer.label ↗ api.GPUBuffer.mapAsync ↗ api.GPUBuffer.mapState ↗ api.GPUBuffer.size ↗ api.GPUBuffer.unmap ↗ api.GPUBuffer.usage ↗ api.GPUCanvasContext ↗ api.GPUCanvasContext.canvas ↗ api.GPUCanvasContext.configure ↗ api.GPUCanvasContext.configure.toneMapping ↗ api.GPUCanvasContext.getConfiguration ↗ api.GPUCanvasContext.getCurrentTexture ↗ api.GPUCanvasContext.unconfigure ↗ api.GPUCommandBuffer ↗ api.GPUCommandBuffer.label ↗ api.GPUCommandEncoder ↗ api.GPUCommandEncoder.beginComputePass ↗ api.GPUCommandEncoder.beginComputePass.timestampWrites ↗ api.GPUCommandEncoder.beginRenderPass ↗ api.GPUCommandEncoder.beginRenderPass.depthSlice_option ↗ api.GPUCommandEncoder.beginRenderPass.separate_depth_stencil_read-only ↗ api.GPUCommandEncoder.beginRenderPass.timestampWrites ↗ api.GPUCommandEncoder.clearBuffer ↗ api.GPUCommandEncoder.copyBufferToBuffer ↗ api.GPUCommandEncoder.copyBufferToTexture ↗ api.GPUCommandEncoder.copyTextureToBuffer ↗ api.GPUCommandEncoder.copyTextureToTexture ↗ api.GPUCommandEncoder.finish ↗ api.GPUCommandEncoder.insertDebugMarker ↗ api.GPUCommandEncoder.label ↗ api.GPUCommandEncoder.popDebugGroup ↗ api.GPUCommandEncoder.pushDebugGroup ↗ api.GPUCommandEncoder.resolveQuerySet ↗ api.GPUCompilationInfo ↗ api.GPUCompilationInfo.messages ↗ api.GPUCompilationMessage ↗ api.GPUCompilationMessage.length ↗ api.GPUCompilationMessage.lineNum ↗ api.GPUCompilationMessage.linePos ↗ api.GPUCompilationMessage.message ↗ api.GPUCompilationMessage.offset ↗ api.GPUCompilationMessage.type ↗ api.GPUComputePassEncoder ↗ api.GPUComputePassEncoder.dispatchWorkgroups ↗ api.GPUComputePassEncoder.dispatchWorkgroupsIndirect ↗ api.GPUComputePassEncoder.end ↗ api.GPUComputePassEncoder.insertDebugMarker ↗ api.GPUComputePassEncoder.label ↗ api.GPUComputePassEncoder.popDebugGroup ↗ api.GPUComputePassEncoder.pushDebugGroup ↗ api.GPUComputePassEncoder.setBindGroup ↗ api.GPUComputePassEncoder.setBindGroup.unset_bind_group ↗ api.GPUComputePassEncoder.setPipeline ↗ api.GPUComputePipeline ↗ api.GPUComputePipeline.getBindGroupLayout ↗ api.GPUComputePipeline.label ↗ api.GPUDevice ↗ api.GPUDevice.adapterInfo ↗ api.GPUDevice.createBindGroup ↗ api.GPUDevice.createBindGroupLayout ↗ api.GPUDevice.createBindGroupLayout.storageTexture_access_read-write_read-only ↗ api.GPUDevice.createBindGroupLayout.texture_rgb10a2uint ↗ api.GPUDevice.createBuffer ↗ api.GPUDevice.createCommandEncoder ↗ api.GPUDevice.createComputePipeline ↗ api.GPUDevice.createComputePipeline.optional_entryPoint ↗ api.GPUDevice.createComputePipelineAsync ↗ api.GPUDevice.createComputePipelineAsync.optional_entryPoint ↗ api.GPUDevice.createPipelineLayout ↗ api.GPUDevice.createQuerySet ↗ api.GPUDevice.createQuerySet.timestamp ↗ api.GPUDevice.createRenderBundleEncoder ↗ api.GPUDevice.createRenderPipeline ↗ api.GPUDevice.createRenderPipeline.dual-source-blending ↗ api.GPUDevice.createRenderPipeline.optional_depthcompare_depthwriteenabled ↗ api.GPUDevice.createRenderPipeline.optional_entryPoint ↗ api.GPUDevice.createRenderPipeline.texture_rgb10a2uint ↗ api.GPUDevice.createRenderPipeline.validates_depth_bias_for_line_and_point_topologies ↗ api.GPUDevice.createRenderPipeline.vertex_unorm10-10-10-2 ↗ api.GPUDevice.createRenderPipelineAsync ↗ api.GPUDevice.createRenderPipelineAsync.dual-source-blending ↗ api.GPUDevice.createRenderPipelineAsync.optional_depthcompare_depthwriteenabled ↗ api.GPUDevice.createRenderPipelineAsync.optional_entryPoint ↗ api.GPUDevice.createRenderPipelineAsync.texture_rgb10a2uint ↗ api.GPUDevice.createRenderPipelineAsync.validates_depth_bias_for_line_and_point_topologies ↗ api.GPUDevice.createRenderPipelineAsync.vertex_unorm10-10-10-2 ↗ api.GPUDevice.createSampler ↗ api.GPUDevice.createShaderModule ↗ api.GPUDevice.createTexture ↗ api.GPUDevice.createTexture.texture_rgb10a2uint ↗ api.GPUDevice.destroy ↗ api.GPUDevice.features ↗ api.GPUDevice.importExternalTexture ↗ api.GPUDevice.importExternalTexture.color_space_display-p3 ↗ api.GPUDevice.importExternalTexture.videoframe_source ↗ api.GPUDevice.label ↗ api.GPUDevice.limits ↗ api.GPUDevice.lost ↗ api.GPUDevice.popErrorScope ↗ api.GPUDevice.pushErrorScope ↗ api.GPUDevice.queue ↗ api.GPUDevice.uncapturederror_event ↗ api.GPUDeviceLostInfo ↗ api.GPUDeviceLostInfo.message ↗ api.GPUDeviceLostInfo.reason ↗ api.GPUError ↗ api.GPUError.message ↗ api.GPUExternalTexture ↗ api.GPUExternalTexture.label ↗ api.GPUInternalError ↗ api.GPUInternalError.GPUInternalError ↗ api.GPUOutOfMemoryError ↗ api.GPUOutOfMemoryError.GPUOutOfMemoryError ↗ api.GPUPipelineError ↗ api.GPUPipelineError.GPUPipelineError ↗ api.GPUPipelineError.GPUPipelineError.message_optional ↗ api.GPUPipelineError.reason ↗ api.GPUPipelineLayout ↗ api.GPUPipelineLayout.label ↗ api.GPUQuerySet ↗ api.GPUQuerySet.count ↗ api.GPUQuerySet.destroy ↗ api.GPUQuerySet.label ↗ api.GPUQuerySet.type ↗ api.GPUQuerySet.type.timestamp ↗ api.GPUQueue ↗ api.GPUQueue.copyExternalImageToTexture ↗ api.GPUQueue.copyExternalImageToTexture.htmlimageelement_imagedata_source ↗ api.GPUQueue.copyExternalImageToTexture.videoframe_source ↗ api.GPUQueue.label ↗ api.GPUQueue.onSubmittedWorkDone ↗ api.GPUQueue.submit ↗ api.GPUQueue.submit.validates_command_buffer_uniqueness ↗ api.GPUQueue.writeBuffer ↗ api.GPUQueue.writeTexture ↗ api.GPURenderBundle ↗ api.GPURenderBundle.label ↗ api.GPURenderBundleEncoder ↗ api.GPURenderBundleEncoder.draw ↗ api.GPURenderBundleEncoder.drawIndexed ↗ api.GPURenderBundleEncoder.drawIndexedIndirect ↗ api.GPURenderBundleEncoder.drawIndirect ↗ api.GPURenderBundleEncoder.finish ↗ api.GPURenderBundleEncoder.insertDebugMarker ↗ api.GPURenderBundleEncoder.label ↗ api.GPURenderBundleEncoder.popDebugGroup ↗ api.GPURenderBundleEncoder.pushDebugGroup ↗ api.GPURenderBundleEncoder.setBindGroup ↗ api.GPURenderBundleEncoder.setBindGroup.unset_bind_group ↗ api.GPURenderBundleEncoder.setIndexBuffer ↗ api.GPURenderBundleEncoder.setPipeline ↗ api.GPURenderBundleEncoder.setVertexBuffer ↗ api.GPURenderBundleEncoder.setVertexBuffer.unset_vertex_buffer ↗ api.GPURenderPassEncoder ↗ api.GPURenderPassEncoder.beginOcclusionQuery ↗ api.GPURenderPassEncoder.draw ↗ api.GPURenderPassEncoder.drawIndexed ↗ api.GPURenderPassEncoder.drawIndexedIndirect ↗ api.GPURenderPassEncoder.drawIndirect ↗ api.GPURenderPassEncoder.end ↗ api.GPURenderPassEncoder.endOcclusionQuery ↗ api.GPURenderPassEncoder.executeBundles ↗ api.GPURenderPassEncoder.insertDebugMarker ↗ api.GPURenderPassEncoder.label ↗ api.GPURenderPassEncoder.popDebugGroup ↗ api.GPURenderPassEncoder.pushDebugGroup ↗ api.GPURenderPassEncoder.setBindGroup ↗ api.GPURenderPassEncoder.setBindGroup.unset_bind_group ↗ api.GPURenderPassEncoder.setBlendConstant ↗ api.GPURenderPassEncoder.setIndexBuffer ↗ api.GPURenderPassEncoder.setPipeline ↗ api.GPURenderPassEncoder.setScissorRect ↗ api.GPURenderPassEncoder.setStencilReference ↗ api.GPURenderPassEncoder.setVertexBuffer ↗ api.GPURenderPassEncoder.setVertexBuffer.unset_vertex_buffer ↗ api.GPURenderPassEncoder.setViewport ↗ api.GPURenderPipeline ↗ api.GPURenderPipeline.getBindGroupLayout ↗ api.GPURenderPipeline.label ↗ api.GPUSampler ↗ api.GPUSampler.label ↗ api.GPUShaderModule ↗ api.GPUShaderModule.getCompilationInfo ↗ api.GPUShaderModule.label ↗ api.GPUSupportedFeatures ↗ api.GPUSupportedFeatures.@@iterator ↗ api.GPUSupportedFeatures.entries ↗ api.GPUSupportedFeatures.feature_bgra8unorm-storage ↗ api.GPUSupportedFeatures.feature_clip-distances ↗ api.GPUSupportedFeatures.feature_depth-clip-control ↗ api.GPUSupportedFeatures.feature_depth32float-stencil8 ↗ api.GPUSupportedFeatures.feature_dual-source-blending ↗ api.GPUSupportedFeatures.feature_float32-blendable ↗ api.GPUSupportedFeatures.feature_float32-filterable ↗ api.GPUSupportedFeatures.feature_indirect-first-instance ↗ api.GPUSupportedFeatures.feature_rg11b10ufloat-renderable ↗ api.GPUSupportedFeatures.feature_shader-f16 ↗ api.GPUSupportedFeatures.feature_texture-compression-astc ↗ api.GPUSupportedFeatures.feature_texture-compression-bc ↗ api.GPUSupportedFeatures.feature_texture-compression-etc2 ↗ api.GPUSupportedFeatures.feature_timestamp-query ↗ api.GPUSupportedFeatures.forEach ↗ api.GPUSupportedFeatures.has ↗ api.GPUSupportedFeatures.keys ↗ api.GPUSupportedFeatures.size ↗ api.GPUSupportedFeatures.values ↗ api.GPUSupportedLimits ↗ api.GPUSupportedLimits.maxBindGroups ↗ api.GPUSupportedLimits.maxBindGroupsPlusVertexBuffers ↗ api.GPUSupportedLimits.maxBindingsPerBindGroup ↗ api.GPUSupportedLimits.maxBufferSize ↗ api.GPUSupportedLimits.maxColorAttachmentBytesPerSample ↗ api.GPUSupportedLimits.maxColorAttachments ↗ api.GPUSupportedLimits.maxComputeInvocationsPerWorkgroup ↗ api.GPUSupportedLimits.maxComputeWorkgroupSizeX ↗ api.GPUSupportedLimits.maxComputeWorkgroupSizeY ↗ api.GPUSupportedLimits.maxComputeWorkgroupSizeZ ↗ api.GPUSupportedLimits.maxComputeWorkgroupStorageSize ↗ api.GPUSupportedLimits.maxComputeWorkgroupsPerDimension ↗ api.GPUSupportedLimits.maxDynamicStorageBuffersPerPipelineLayout ↗ api.GPUSupportedLimits.maxDynamicUniformBuffersPerPipelineLayout ↗ api.GPUSupportedLimits.maxInterStageShaderVariables ↗ api.GPUSupportedLimits.maxSampledTexturesPerShaderStage ↗ api.GPUSupportedLimits.maxSamplersPerShaderStage ↗ api.GPUSupportedLimits.maxStorageBufferBindingSize ↗ api.GPUSupportedLimits.maxStorageBuffersPerShaderStage ↗ api.GPUSupportedLimits.maxStorageTexturesPerShaderStage ↗ api.GPUSupportedLimits.maxTextureArrayLayers ↗ api.GPUSupportedLimits.maxTextureDimension1D ↗ api.GPUSupportedLimits.maxTextureDimension2D ↗ api.GPUSupportedLimits.maxTextureDimension3D ↗ api.GPUSupportedLimits.maxUniformBufferBindingSize ↗ api.GPUSupportedLimits.maxUniformBuffersPerShaderStage ↗ api.GPUSupportedLimits.maxVertexAttributes ↗ api.GPUSupportedLimits.maxVertexBufferArrayStride ↗ api.GPUSupportedLimits.maxVertexBuffers ↗ api.GPUSupportedLimits.minStorageBufferOffsetAlignment ↗ api.GPUSupportedLimits.minUniformBufferOffsetAlignment ↗ api.GPUTexture ↗ api.GPUTexture.createView ↗ api.GPUTexture.createView.descriptor_format_parameter_accepts_rgb10a2uint ↗ api.GPUTexture.createView.descriptor_usage_parameter ↗ api.GPUTexture.depthOrArrayLayers ↗ api.GPUTexture.destroy ↗ api.GPUTexture.dimension ↗ api.GPUTexture.format ↗ api.GPUTexture.format.texture_rgb10a2uint ↗ api.GPUTexture.height ↗ api.GPUTexture.label ↗ api.GPUTexture.mipLevelCount ↗ api.GPUTexture.sampleCount ↗ api.GPUTexture.usage ↗ api.GPUTexture.width ↗ api.GPUTextureView ↗ api.GPUTextureView.label ↗ api.GPUUncapturedErrorEvent ↗ api.GPUUncapturedErrorEvent.GPUUncapturedErrorEvent ↗ api.GPUUncapturedErrorEvent.error ↗ api.GPUValidationError ↗ api.GPUValidationError.GPUValidationError ↗ api.HTMLCanvasElement.getContext.webgpu_context ↗ api.Navigator.gpu ↗ api.OffscreenCanvas.getContext.webgpu_context ↗ api.WGSLLanguageFeatures ↗ api.WGSLLanguageFeatures.@@iterator ↗ api.WGSLLanguageFeatures.entries ↗ api.WGSLLanguageFeatures.extension_packed_4x8_integer_dot_product ↗ api.WGSLLanguageFeatures.extension_readonly_and_readwrite_storage_textures ↗ api.WGSLLanguageFeatures.extension_unrestricted_pointer_parameters ↗ api.WGSLLanguageFeatures.forEach ↗ api.WGSLLanguageFeatures.has ↗ api.WGSLLanguageFeatures.keys ↗ api.WGSLLanguageFeatures.size ↗ api.WGSLLanguageFeatures.values ↗ api.WorkerNavigator.gpu ↗
id: webgpu