WebGPU
Published
WebGPU — WebGPU exposes GPU rendering and compute to the web via navigator.gpu.requestAdapter()/requestDevice() and the WGSL shading language.
Browser & ecosystem support
Section titled “Browser & ecosystem support”- Legend
- Yes
- Partial
- Flag
- No
- Unknown
| Browser / Platform | Support | Versions | Confidence | Source | Notes |
|---|---|---|---|---|---|
| Chrome (Desktop) | Partial | 113 → 144 | high | source | 12 |
| Chrome (Android) | Yes | 121 | high | source | — |
| Edge (Desktop) | Partial | 113 → 144 | high | source | 345 |
| Firefox (Desktop) | Partial | 141 | high | source | 67891011 |
| Firefox (Android) | No | — | high | source | 12 |
| Safari (macOS) | Yes | 26 | high | source | — |
| Safari (iOS) | Yes | 26 | high | source | 13 |
| Samsung Internet | Yes | 25.0 | high | source | 14 |
| WebView (Android) | Yes | 121 | high | source | 15 |
- Supported on ChromeOS, macOS, Windows, and Linux (Intel Gen12+ GPUs only).
- Supported on ChromeOS, macOS, and Windows.
- Supported on ChromeOS, macOS, Windows, and Linux (Intel Gen12+ GPUs only).
- Supported on ChromeOS, macOS, and Windows.
- Derived by browser-compat-data mirroring from Chrome.
- Supports all contexts except service workers. See bug 1942431 (https://bugzil.la/1942431).
- Supports Windows since Firefox 141. See bug 1972486 (https://bugzil.la/1972486).
- Supports macOS Tahoe on Apple silicon since Firefox 145. See bug 1992212 (https://bugzil.la/1992212).
- Supports older macOS versions on Apple silicon since Firefox 147. See bug 1993341 (https://bugzil.la/1993341).
- Does not support macOS on Intel CPUs. See bug 2004105 (https://bugzil.la/2004105).
- Does not support Linux. See bug 2006676 (https://bugzil.la/2006676).
- No Firefox for Android support is recorded in browser-compat-data.
- Derived by browser-compat-data mirroring from Safari.
- Derived by browser-compat-data mirroring from Chrome Android.
- Derived by browser-compat-data mirroring from Chrome Android.
How to use it
Section titled “How to use it”Request an adapter, then a device from that adapter, before issuing any GPU work:
async function getGpuDevice() { const adapter = await navigator.gpu.requestAdapter(); if (!adapter) { throw new Error('No WebGPU adapter available.'); } return adapter.requestDevice();}How to detect it at runtime
Section titled “How to detect it at runtime”Check for navigator.gpu before requesting an adapter, and give the reader a fallback path
both when the API is absent and when no adapter is available:
async function initGpu() { if (!('gpu' in navigator)) { showFallbackRenderer(); return; } try { await getGpuDevice(); } catch { showFallbackRenderer(); }}Practical checklist
Section titled “Practical checklist”requestAdapter()can resolve tonulleven whennavigator.gpuexists — the user agent may decline to return an adapter, so check the resolved value before callingrequestDevice()on it.- Chrome for Android has shipped WebGPU since Chrome 121 — check the support table above rather than assuming every device on that version supports it.
- Firefox enabled WebGPU by default on Windows starting in Firefox 141; support on other platforms differs — check the support table above for the current per-OS status.
- Safari enabled WebGPU by default starting in Safari 26; earlier Safari versions do not support it.
Where to go next
Section titled “Where to go next”For the full reference, see WebGPU: GPU rendering and compute in the browser.
See also WebCodecs API.
← Back to the Compatibility explorer.