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.

This is Sparta!

Word-by-word highlighting, timed to the speech — rendered by libass, so the preview is exactly what gets burned in.

Four steps, none of them on a server.

Drop a video in and work straight through. Every step below runs on your own machine unless you explicitly choose otherwise.

Features

Free

Transcribe the speech

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.

Free

Translate into 20 languages

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.

Free

Style it, and see it

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.

Free

Burn it into the video

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.

“Private” here means there is no server to send it to.

Most subtitle tools upload your video, process it, and promise to delete it. OpenSubs is built the other way round.

The video never moves

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.

The one thing that can leave

Subtitle text, and only if you pick a cloud translator. The on-device option sends nothing at all, and it is the default.

Your key stays in the tab

Bring your own API key and it is used from your browser and never stored, never sent to us, and never written to disk.

Free for everything that runs on your machine.

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.

Credits
$5  for 1,000 credits
  • Cloud translation on our backend
  • No key and no account with anyone else
  • The price of a job is shown before you run it
  • You are charged exactly that, never more
  • A job that fails costs nothing
  • Credits never expire

Before you start.

Is my video uploaded anywhere?

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 thing that can leave your machine is subtitle text, and only if you choose a cloud translation option.

Do I need an account?

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.

How does it generate subtitles from speech?

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.

Can it burn subtitles into the video file itself?

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.

What does it cost?

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.

Which languages can it translate into?

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.

Does it work offline?

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.

Is it open source?

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.