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
- Use a modern browser that supports WebCodecs ImageDecoder (recent Chrome/Edge; check caniuse).
- For rendering, use Remotion's Chromium-based headless renderer which bundles WebCodecs support.
- 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
- Feature-detect ImageDecoder before relying on animated images.
- Provide static fallbacks for older browsers.
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
- Could not determine animated image duration
- No supported configs
- Got no body
- No selected track
- No frame found
AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12).
Data as JSON: /api/errors/a0e94e05cdcf95cd.
Report an issue: GitHub.