OpenRadar

Project · JavaScript · Added June 13, 2026

ffmpeg-webcli

ffmpeg-webCLI is a browser-based video editor powered by ffmpeg.wasm — 30+ media operations with zero uploads, full privacy, and offline PWA support.

571 stars 44 forks View on GitHub

ffmpeg-webCLI

Overview

ffmpeg-webCLI is a browser-based video editor that runs entirely client-side using WebAssembly. It hit 500 GitHub stars in under two weeks after its late-May 2026 launch, which tracks with how hungry developers are for tools that don’t ship their users’ files to someone else’s server.

The project is built by Tejaswi Gowda, a developer who’s clearly spent time dealing with the frustration of online media conversion tools. Every CloudConvert, Kapwing, and Ezgif alternative out there requires uploading your file first. ffmpeg-webCLI eliminates that step entirely. Your video stays on your device, gets processed in a Web Worker using ffmpeg.wasm, and the result downloads straight to your local filesystem.

The core problem it solves is simple but underappreciated: most media processing tasks people do daily — format conversion, compression, trimming, GIF creation, audio extraction — don’t need a server at all. A 2024 Mozilla Foundation survey found that 67% of users are uncomfortable uploading personal videos to online converters, yet they do it anyway because there hasn’t been a good browser-native alternative. ffmpeg-webCLI provides one. It bundles 30+ operations that cover the common workflows of at least ten different online tools, and it works offline after the first load.

Why it matters

WebAssembly has been “the future” for years now, but most WASM projects remain demos or niche tools. ffmpeg-webCLI is one of the few WASM applications that actually replaces a real workflow people do every day. It takes ffmpeg — the Swiss Army knife of media processing — and makes it accessible to anyone with a browser, no terminal required.

For fullstack web developers, this project is interesting on two levels. First, it’s a practical tool you can point your users to instead of explaining how to install ffmpeg locally. Second, the architecture is a masterclass in modern browser capabilities: WASM for heavy compute, Web Workers for non-blocking processing, IndexedDB for local persistence, PWA for offline support, and the Screen Wake Lock API to prevent the device from sleeping during long encodes. If you’ve been looking for a reference implementation that shows how to build a serious client-side application with these technologies, this is it.

The privacy angle matters more than developers tend to admit. Every major online video tool has had data breaches or privacy policy changes that exposed user uploads. ffmpeg-webCLI makes the problem disappear by never collecting the data in the first place. Zero server costs, zero liability, zero trust required.

Key Features

30+ Video and Audio Operations. The tool covers GIF creation, format conversion (MP4, WebM, MKV, MOV, AVI), compression with CRF sliders, trimming, speed adjustment, reverse, fade effects, filters, audio extraction, audio normalization, subtitle embedding, concatenation, picture-in-picture, and raw ffmpeg command access. That’s the combined feature set of at least ten different online tools, running in a single browser tab.

Complete Privacy Model. Files never leave the device. There’s no server component, no analytics, no tracking pixels, no cookies. The entire processing pipeline runs in a sandboxed Web Worker using ffmpeg.wasm. This isn’t a privacy policy promise — it’s an architectural guarantee backed by the browser’s security model.

Offline-First PWA. After the initial load, the application works completely offline. It’s installable as a Progressive Web App on desktop and mobile, appearing as a native application in your app drawer. The Service Worker caches all assets, so you can process videos on a plane, in a tunnel, or anywhere without connectivity.

Web Worker Processing. All ffmpeg operations run in dedicated Web Workers, keeping the main thread responsive. You can navigate the UI, adjust settings, and preview parameters while a long encode runs in the background. The worker architecture also means a crashed encode doesn’t freeze the browser.

Screen Wake Lock API. Long video encodes can take minutes. On mobile devices especially, the screen dimming and the device sleeping mid-encode is a real problem. ffmpeg-webCLI uses the Screen Wake Lock API to keep the display active during processing, then releases the lock when the job completes. Small detail, big UX improvement.

Live Size Estimates and Previews. Before you commit to a full encode, the tool shows estimated output file sizes based on your current settings. The CRF slider (18 = near-lossless, 51 = maximum compression) and encoding preset selector (ultrafast through veryslow) update the estimate in real time. No more guessing whether your compressed video will fit in an email attachment.

Raw ffmpeg Command Access. Power users can bypass the GUI entirely and type raw ffmpeg commands directly. This makes the tool useful for learning ffmpeg syntax — you can see what the GUI generates and tweak from there. It’s a surprisingly effective teaching tool for developers who want to understand video processing pipelines.

Use Cases

Pros and Cons

Pros:

Cons:

Getting Started

Open the live app directly in your browser:

https://tejaswigowda.com/ffmpeg-webCLI/

Or run it locally:

# Clone the repository
git clone https://github.com/tejaswigowda/ffmpeg-webCLI.git
cd ffmpeg-webCLI

# Install dependencies
npm install

# Start the development server
npm run dev

Open the local URL shown in your terminal. Drop a video file into the interface, pick an operation from the menu, adjust the settings, and hit process. The output downloads automatically when the encode finishes.

For developers who want to understand the architecture:

# The ffmpeg.wasm Web Worker is in src/worker/
# UI components are standard JavaScript/HTML
# PWA manifest and service worker are in the public/ directory
# No framework dependencies — vanilla JS with ffmpeg.wasm

Alternatives

CloudConvert — The most popular cloud-based file conversion service. Supports hundreds of formats with a polished API. The tradeoff is obvious: your files go to their servers. CloudConvert has a solid privacy track record, but any cloud service is one acquisition, one breach, or one subpoena away from changing the equation. Choose CloudConvert when you need format support that ffmpeg.wasm doesn’t cover, or when processing speed on large files matters more than privacy.

FFmpeg CLI (native) — The original. If you’re comfortable in the terminal, native ffmpeg is faster, handles larger files, and supports every codec. The ffmpeg-webCLI README itself acknowledges this — the tool exists for people who won’t or can’t use the command line. Choose native ffmpeg when you need maximum performance, have large files, or want to script batch operations.

Kapwing — A browser-based video editor with a polished UI for trimming, subtitling, and adding effects. Kapwing is more capable for creative editing (layers, transitions, text overlays) but requires uploads and has a freemium model with watermarks. Choose Kapwing when you need a visual editor with creative features rather than a processing tool.

Verdict

ffmpeg-webCLI is the kind of project that makes you wonder why it took so long to exist. The technology — ffmpeg.wasm, Web Workers, PWA — has been available for years. Someone just needed to assemble it into a usable product, and Tejaswi Gowda did exactly that. At 571 stars in two weeks, the developer community’s response confirms the demand. It’s not going to replace native ffmpeg for power users or CloudConvert for enterprise workflows. But for the 90% of media processing tasks that people currently do by uploading files to ad-supported websites — format conversion, compression, trimming, GIF creation — it’s a strictly better solution. Fullstack web developers should look at this project both as a practical tool to bookmark and as a reference architecture for building serious client-side applications with WebAssembly. The codebase is small enough to read in an afternoon, and the patterns it demonstrates (WASM compute, Worker isolation, PWA caching, Wake Lock) are directly applicable to other browser-native heavy-processing applications.

Related

Shared tags