remotion-dev/remotion · error · Error

Your browser does not support the WebCodecs ImageDecoder API

Error message

Your browser does not support the WebCodecs ImageDecoder API.

What it means

Thrown when the WebCodecs ImageDecoder global is undefined. Remotion's animated image decoding (GIF/animated WebP/AVIF) relies on this API; if the browser lacks it, decoding cannot proceed.

Source

Thrown at packages/core/src/animated-image/create-image-decoder.ts:13

export const createImageDecoder = async ({
	resolvedSrc,
	signal,
	requestInit,
	contentType,
}: {
	resolvedSrc: string;
	signal: AbortSignal;
	requestInit?: RequestInit;
	contentType: string | null;
}) => {
	if (typeof ImageDecoder === 'undefined') {
		throw new Error(
			'Your browser does not support the WebCodecs ImageDecoder API.',
		);
	}

	const response = await fetch(resolvedSrc, {...requestInit, signal});
	const {body} = response;
	if (!body) {
		throw new Error('Got no body');
	}

	const decoder = new ImageDecoder({
		data: body,
		type: contentType ?? response.headers.get('Content-Type') ?? 'image/gif',
	});
	await Promise.all([decoder.completed, decoder.tracks.ready]);

	const {selectedTrack} = decoder.tracks;
	if (!selectedTrack) {

View on GitHub (pinned to 78fe4bb3fd)

Solutions

  1. Use a modern browser that supports WebCodecs ImageDecoder (recent Chrome/Edge; check caniuse).
  2. For rendering, use Remotion's Chromium-based headless renderer which bundles WebCodecs support.
  3. Detect support and fall back to a static image or non-animated format.

Example fix

// before
import animatedGif from './flag.gif';
<Img src={animatedGif} />;

// after
import animatedGif from './flag.gif';
import staticFrame from './flag-static.png';
const src = typeof ImageDecoder === 'undefined' ? staticFrame : animatedGif;
<Img src={src} />;
Defensive patterns

Strategy: type-guard

Validate before calling

const supportsImageDecoder = typeof ImageDecoder !== 'undefined';
const src = supportsImageDecoder ? animatedSrc : staticFallbackSrc;

Type guard

const supportsAnimatedImage = (): boolean =>
  typeof ImageDecoder !== 'undefined';

Prevention

When it happens

Trigger: Rendering an animated image in a browser or environment (older Safari, headless browsers without WebCodecs) where ImageDecoder is not implemented.

Common situations: Old browser versions, locked-down enterprise browsers, some testing/headless setups, or running in Node without a WebCodecs polyfill.

Related errors


AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12). Data as JSON: /api/errors/a0e94e05cdcf95cd. Report an issue: GitHub.