Video
Subtitles
Whisper runs here, in your browser, and writes the subtitles from the video’s own audio. Nothing is uploaded and no account is needed.
Subtitle any video, without uploading it anywhere.
OpenSubs transcribes the speech, translates it, styles it and burns it into the picture — all inside your browser. The video file never leaves your machine, because there is nowhere for it to go.
No account. No upload. No watermark. Open source.
Looking for an existing subtitle file to download? See where to find subtitles.
Whisper runs here, in your browser, and writes the subtitles from the video’s own audio. Nothing is uploaded and no account is needed.
The four steps above, in more detail. Every one of them runs on your own machine unless you explicitly choose otherwise.
Whisper runs in your browser, on the GPU where your machine has one. Pick a model between 40 MB and 250 MB; it downloads once and is cached after that. Only the model is fetched — the audio stays put.
Chrome's built-in translation runs on your device at no cost. Bring your own Claude, OpenAI or DeepL key for better results on long dialogue, or use ours and pay in credits.
Twelve presets, from clean broadcast captions to bold social styles, each previewed over your own footage. Words can grow and glow as they are spoken.
Export a finished MP4 with the subtitles in the pixels, encoded in
the browser with WebCodecs. Or take the .srt,
.vtt or .ass and use them elsewhere.
The page above needs nothing installed. These do, and in return they do things a page cannot — subtitle a video already playing in a tab, or burn a two-hour file without a browser in the way. All of it is the same Rust engine, so the output is identical.
Subtitles over whatever is playing in the tab, generated as it
plays. Chrome, Edge and Firefox. Not in the stores yet — the
build is a .zip you load yourself.
macOS, Windows and Linux, for long files and batches. It drives
ffmpeg to burn, so it needs one built with the
ass filter — brew install ffmpeg-full
on macOS. The builds are unsigned.
One command per file, for scripting and for CI. Same engine, same
presets, same output. Build it from source; it has the same
ffmpeg requirement as the desktop app.
The engine, the web app, the extension, the desktop app and the command line are one repository. Read what runs on your machine rather than take this page's word for it.
Current builds are release candidates. They are complete and tested; the version number says they have not been through a stable release yet.
Most subtitle tools upload your video, process it, and promise to delete it. OpenSubs is built the other way round.
It is read through an object URL and decoded by your browser. There is no upload endpoint in this product, so a footage leak is not something we have to promise against — it is not possible.
Subtitle text, and only if you pick a cloud translator. The on-device option sends nothing at all, and it is the default.
Bring your own API key and it is used from your browser and never stored, never sent to us, and never written to disk.
Which is nearly all of it. We charge only where we spend money on your behalf, and we tell you the price before you press the button.
No. OpenSubs reads the file directly in your browser and every step — transcription, styling, burning — runs on your own machine. The video is never sent to a server. The only things that can leave your machine are subtitle text or audio, and only if you choose a cloud option.
No. The key is held only in this page’s memory and used to send requests straight to the provider you chose. It never passes through our servers and is not saved in your browser, so reloading or closing the tab clears it.
No. Transcription, translation on your device, styling, trimming, burning and every export work with no account and no sign-in. An account is only needed if you choose to pay for cloud translation on our backend.
Drop the video onto this page and generate subtitles from its audio. Whisper runs on your machine, so nothing is uploaded and nothing is charged. Correct any line by editing its text, pick a style, then export the subtitles as .srt, .vtt or .ass, or burn them into an MP4. No account and no watermark.
It runs Whisper locally — ONNX weights driven by transformers.js, on WebGPU where available and on WebAssembly otherwise. The model is downloaded once, from 40 MB to 250 MB depending on which you pick, and then cached by the browser. Only the model is fetched; the audio stays on your machine.
Yes. Subtitles are rendered by libass — the same renderer ffmpeg uses — compiled to WebAssembly, and encoded back into an MP4 using WebCodecs. What you see in the preview is what ends up in the pixels, and the audio is copied through untouched.
Everything that runs on your machine is free and always will be, because it costs us nothing to provide. The one paid option is translation on our own backend, at 1,000 credits for $5. The price of a job is shown before you run it, you are charged exactly that, and a job that fails costs nothing.
No. A burned MP4 carries only the subtitles you chose, and the exported .srt, .vtt and .ass files are plain subtitle files. Nothing is added, because the work runs in your browser rather than on a server someone has to pay for.
Twenty, including Simplified and Traditional Chinese, Japanese, Korean, Spanish, Portuguese, French, German, Italian, Russian, Arabic, Hindi, Indonesian, Thai, Vietnamese, Turkish, Polish, Dutch and Ukrainian. Fonts for non-Latin scripts are bundled, so Chinese and Arabic subtitles burn correctly instead of coming out as empty boxes.
After the first visit, largely yes. The speech model is cached by your browser after its first download, and everything except cloud translation runs locally.
Yes, under the AGPL-3.0. The same engine — cue segmentation, line breaking, reading-speed limits, the style presets, the ASS writer — is compiled to WebAssembly for the browser and to a native binary for the desktop app and command-line tool, so all three produce identical output.