gitwtfhub

wtf is ffmpeg.wasm?

ffmpegwasm/ffmpeg.wasm — explained in plain English

Analysis updated 2026-06-24

17,475CAudience · developerComplexity · 3/5LicenseSetup · moderate

TL;DR

WebAssembly port of FFmpeg that runs in the browser, so video and audio can be recorded, converted, and streamed client-side without a server.

Mindmap

mindmap
  root((ffmpeg-wasm))
    Inputs
      Video files
      Audio files
      Stream data
    Outputs
      Transcoded media
      Recorded clips
      Browser streams
    Use Cases
      In-browser editor
      Format converter
      Client-side encoding
    Tech Stack
      WebAssembly
      JavaScript
      C
      FFmpeg

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Build a browser-based video format converter that runs entirely client-side

REASON 2

Add audio trimming or transcoding to a web app without server processing

REASON 3

Record webcam input in the browser and convert to mp4 before upload

REASON 4

Create a static video editor demo for GitHub Pages with no backend

What's in the stack?

WebAssemblyJavaScriptCFFmpegNode

How it stacks up

ffmpegwasm/ffmpeg.wasmreactos/reactosbrunodev85/winlator
Stars17,47517,51517,588
LanguageCCC
Setup difficultymoderatehardhard
Complexity3/55/54/5
Audiencedeveloperdevelopergeneral

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · moderate Time to first run · 30min

Requires SharedArrayBuffer, so pages need COOP and COEP headers set correctly to load the wasm core.

MIT license - free to use, modify, and ship in commercial products with attribution.

Wtf does this do

ffmpeg.wasm brings FFmpeg, one of the most widely used tools for converting and processing video and audio files, directly into a web browser. Normally, FFmpeg is a command-line program you install on your computer. This project ports it to WebAssembly (a format that lets compiled code from other languages run in a browser at near-native speed), which means you can record, convert, and stream video and audio entirely in the browser without sending files to a server. This opens up possibilities like in-browser video editors, format converters, or audio tools that work completely client-side. The project is written in C and JavaScript, marked as experimental, and licensed under MIT. The README does not provide further detail about supported formats, browser compatibility requirements, or usage examples beyond what is described above.

Yoink these prompts

Prompt 1
Show me a minimal HTML page that loads ffmpeg.wasm and converts an uploaded mp4 to webm in the browser
Prompt 2
Build a React component that uses ffmpeg.wasm to extract audio as mp3 from an uploaded video file
Prompt 3
How do I configure ffmpeg.wasm in a Vite project with the right COOP and COEP headers for SharedArrayBuffer
Prompt 4
Use ffmpeg.wasm to trim a video between two timestamps and download the result
Prompt 5
Compare performance of ffmpeg.wasm vs running FFmpeg on a Node server for short clips

Frequently asked questions

wtf is ffmpeg.wasm?

WebAssembly port of FFmpeg that runs in the browser, so video and audio can be recorded, converted, and streamed client-side without a server.

What language is ffmpeg.wasm written in?

Mainly C. The stack also includes WebAssembly, JavaScript, C.

What license does ffmpeg.wasm use?

MIT license - free to use, modify, and ship in commercial products with attribution.

How hard is ffmpeg.wasm to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is ffmpeg.wasm for?

Mainly developer.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.