Introducing wasmpeg

15 June 2026

This is the first post on the wasmpeg blog. It’s a placeholder you can edit or delete — the blog is wired up and ready for release notes, deep-dives, and announcements.

Why wasmpeg

Most browser FFmpeg builds aim to be the whole CLI. wasmpeg aims at one thing: the decode → display loop. Load a video, get RGBA frames, scale them on the GPU, probe metadata, grab thumbnails — from a 3.2 MB gzipped WASM, with no SharedArrayBuffer and no COOP/COEP headers required.

import wasmpeg from 'wasmpeg';

await wasmpeg.load();

const dec = await wasmpeg.decode(file);
let frame;
while ((frame = dec.nextFrame())) {
    // frame is a Uint8ClampedArray of RGBA8 pixels
}
dec.close();

What’s next

Release notes and technical write-ups will land here. For now, head to the documentation to get started, or browse the FFmpeg → wasmpeg recipes.