Limited Availability
WebGPU
id: 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 and is missing in at least one major browser engine.
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 ↗