remotion-dev/remotion · error · Error
No WebGPU adapter available
Error message
No WebGPU adapter available
What it means
After confirming navigator.gpu exists, getGpuDevice() calls requestAdapter() to obtain a hardware adapter. If the system returns null (no suitable GPU adapter available, drivers blacklisted, or WebGPU disabled at the OS/flag level despite the API being present), the promise rejects with this error. This is a hardware/driver-level failure beyond Remotion's control.
Source
Thrown at packages/core/src/effects/gpu-device.ts:30
export const getGpuDevice = (): Promise<unknown> => {
if (devicePromise) {
return devicePromise;
}
devicePromise = (async () => {
if (typeof navigator === 'undefined' || !('gpu' in navigator)) {
throw new Error('WebGPU is not available in this environment');
}
const {gpu} = navigator as unknown as {
gpu: {requestAdapter: () => Promise<unknown>};
};
const adapter = (await gpu.requestAdapter()) as {
requestDevice: () => Promise<unknown>;
} | null;
if (!adapter) {
throw new Error('No WebGPU adapter available');
}
return adapter.requestDevice();
})();
return devicePromise;
};
// Test-only: reset the cached device. Not exported from `remotion`.
export const _resetGpuDeviceForTesting = (): void => {
devicePromise = null;
};
View on GitHub (pinned to 78fe4bb3fd)
Solutions
- Update GPU drivers and remove GPU blocklist overrides; ensure Chrome is not launched with --disable-gpu.
- In headless, use --enable-unsafe-webgpu and a software adapter (SwiftShader) where available.
- Fall back to a webgl2 effect when no adapter is available.
Example fix
// launch headless chrome with webgpu + swiftshader // before: chrome --headless --disable-gpu // after: chrome --headless=new --enable-unsafe-webgpu --use-gl=angle --use-angle=swiftshader
Defensive patterns
Strategy: fallback
Validate before calling
const adapter = await navigator.gpu?.requestAdapter();
if (!adapter) {
// no adapter: fall back to webgl2 backend
} Try / catch
try {
const device = await getGpuDevice();
} catch (e) {
if (String(e?.message).includes('No WebGPU adapter')) {
// fall back to a webgl2 effect
} else throw e;
} Prevention
- Keep GPU drivers updated and avoid launching Chrome with --disable-gpu.
- For headless/CI, use a software adapter (SwiftShader) and WebGPU flags.
- Provide a non-WebGPU fallback path for environments without a usable adapter.
When it happens
Trigger: Running on a machine whose GPU/driver is blocked by Chrome's blocklist (common on Linux with certain drivers, in some VMs, or when GPU acceleration is disabled), or in headless Chrome where the GPU adapter is unavailable.
Common situations: Headless/CI Linux without proper GPU drivers; VMs without GPU passthrough; Chrome launched with --disable-gpu; outdated or blocklisted drivers.
Related errors
- WebGL context was lost during canvas effect rendering. This
- WebGPU is not available in this environment
- WebGPU is not available in this environment for canvas effec
- Failed to create WebGL buffer
- Failed to create WebGL texture
AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12).
Data as JSON: /api/errors/d56f166c840e22bb.
Report an issue: GitHub.