A compiler toolchain that turns C and C++ code into WebAssembly so it can run in browsers, Node.js and other Wasm runtimes.
ffmpegwasm/ffmpeg.wasm
A pure WebAssembly and JavaScript port of FFmpeg that lets browsers record, convert and stream video and audio.
- Stars
- 17,896
- Forks
- 1,119
- Open issues
- 458
- Last commit
- 22 days ago
What is it?
ffmpeg.wasm brings FFmpeg to the browser by compiling it to WebAssembly and wrapping it in a JavaScript API. Web applications can use it to record, convert and stream audio and video without sending files to a server, since processing happens on the client.
The project is distributed as npm packages under the @ffmpeg scope and is used by calling a JavaScript API to load the core, write input files into an in-memory file system, run FFmpeg command-line style arguments, and read the output back. It is marked as experimental in its badges.
The repository also hosts a documentation site covering installation, the API reference, and a FAQ, along with contribution guides for the core library.
Key features
- 01Runs FFmpeg entirely in the browser via WebAssembly, with no server-side processing required.
- 02Provides a JavaScript API for loading the core, writing files, executing commands and reading outputs.
- 03Supports converting, recording and streaming video and audio.
- 04Distributed as npm packages under the @ffmpeg scope.
Use cases
- Converting or trimming user-uploaded videos on the client before upload.
- Recording audio or video in a web app and transcoding it to another format.
- Building browser-based media editors that keep files local to the user's device.
Things to know
- The README marks the project as experimental in stability.
Topics
FAQ
- What is ffmpeg.wasm?
- A pure WebAssembly and JavaScript port of FFmpeg that lets browsers record, convert and stream video and audio. ffmpeg.wasm brings FFmpeg to the browser by compiling it to WebAssembly and wrapping it in a JavaScript API. Web applications can use it to record, convert and stream audio and video without sending files to a server, since processing happens on the client.
- Is ffmpeg.wasm free to use? What license does it have?
- ffmpeg.wasm is open source under the MIT license. Check the license terms before using it in commercial products.
- Is ffmpeg.wasm still maintained?
- Actively maintained. The last commit to ffmpeg.wasm was on Sep 29, 2026.
- What can I use ffmpeg.wasm for?
- Converting or trimming user-uploaded videos on the client before upload. Recording audio or video in a web app and transcoding it to another format. Building browser-based media editors that keep files local to the user's device.
- Where can I get ffmpeg.wasm?
- The source code and installation instructions are on GitHub: https://github.com/ffmpegwasm/ffmpeg.wasm
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A cross-platform FFmpeg GUI for lossless cutting, trimming and remuxing of video and audio files without re-encoding.
An x86 PC emulator that runs in the browser, translating machine code to WebAssembly at runtime to boot real operating systems.
Run ffmpeg on a remote GPU machine from any client over one TCP port, without GPU passthrough or shared filesystems.
A React framework for building full-stack web applications, with Rust-based tooling for fast builds.
A React-based framework for creating videos programmatically, with code as the source of truth for video timelines and animations.