Skip to main content

Failed to acquire WebGL2 context

You may see an error like this when rendering a composition that uses WebGL:

Failed to acquire WebGL2 context for blur effect. Pass --gl=angle when using the CLI, set chromiumOptions: { gl: "angle" } when using SSR APIs, or set "OpenGL render backend" to "angle" in the Advanced section when rendering in the Studio. See https://remotion.dev/docs/troubleshooting/webgl2-context

Fix: use the ANGLE renderer

Enable the ANGLE OpenGL backend so Chromium can create a WebGL context.

CLI

Pass --gl=angle to your render command:

npx remotion render MyComp out/video.mp4 --gl=angle

You can also set it as the default in remotion.config.ts:

remotion.config.ts
Config.setChromiumOpenGlRenderer('angle');

Server-side rendering APIs

Pass gl: "angle" in chromiumOptions:

await renderMedia({
  composition,
  serveUrl,
  codec: 'h264',
  outputLocation: 'out/video.mp4',
  chromiumOptions: {
    gl: 'angle',
  },
});

This applies to renderMedia(), renderStill(), renderFrames(), getCompositions(), and the Lambda and Vercel equivalents.

Remotion Studio

When rendering from the Studio UI, open the render modal, expand Advanced, and set OpenGL render backend to angle.

Machines without a GPU

If you are on a machine without a GPU (for example AWS Lambda), use --gl=swangle instead. This is the default on Lambda.