Before you start.
Is my video uploaded anywhere?
No, and not because we promise not to: there is no upload endpoint in the product. OpenSubs reads the file directly in your browser, and transcription, styling, translation on your device and burning all run on your own machine. You can check it rather than take it on trust — open the Network tab and subtitle a video: you will see the app's own files loading from opensubs.app or your browser's cache, the speech model from Hugging Face the first time, and no request carrying your video or its audio. The only parts of your work that can ever leave your machine are subtitle text or audio, and only if you choose a cloud option.
Is my API key saved?
No. An API key you enter to use your own provider is held only in the page's memory. It is never written to localStorage, sessionStorage, IndexedDB or cookies, and your browser sends it directly to the provider you picked — OpenAI or another OpenAI-compatible server, Anthropic or DeepL — without passing through OpenSubs servers. Reloading or closing the tab clears it, so you enter it again next time.
Do I need an account to use OpenSubs?
Not to try the subtitle generator. Transcription, translation on your device, styling, trimming and subtitle files (.srt, .vtt, .ass, .txt) work without signing in. Burning subtitles into a video takes a free sign-in, and paying for cloud translation on our backend needs an account too. Your video is never uploaded either way.
How do I add subtitles to a video for free?
Drop the video into the subtitle generator at the top of this page
and it writes subtitles from the 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 to try and no watermark; burning an MP4 takes a free sign-in.
Step by step: add subtitles to a video.
How does OpenSubs generate subtitles from speech?
The subtitle generator runs OpenAI's Whisper locally — ONNX weights driven by transformers.js, on WebGPU where the machine has it and on WebAssembly otherwise. Three model sizes are offered: Tiny (English only, about 40 MB), Base (about 80 MB) and Small (about 250 MB). The model downloads once and is then cached by the browser; only the model is fetched, never the audio. The spoken language is detected every four seconds rather than once per file, so a video that switches between two languages comes out as one subtitle file containing both.
Can OpenSubs burn subtitles into the video file itself?
Yes, after a free sign-in. The subtitle generator renders them with libass — the same renderer ffmpeg
uses — compiled to WebAssembly, and encodes them 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 OpenSubs cost?
Everything the subtitle generator does on your machine is free: transcription, translation on your device, all 12 subtitle styles, word-by-word highlighting, trimming, burning into MP4 and every export format. There is no watermark, no file-size limit and no queue — none of those exist here because there is no server paying for the work. The one paid option is translation on our own backend, at $5 for 1,000 credits, with the price of a job shown before you run it and a failed job costing nothing.
Does it add a watermark?
No. This subtitle generator adds nothing to your video: a burned MP4 carries only the subtitles you chose, and the
exported .srt, .vtt and .ass files are plain subtitle files.
That is because the work runs in your browser rather
than on a server someone has to pay for.
Which languages can OpenSubs translate subtitles 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 OpenSubs work offline?
Not entirely. OpenSubs needs a connection to open. Once the page is open and the speech model has downloaded, transcribing and editing subtitles keep working if your connection drops, and the model stays cached in your browser for next time. Translating on your device uses Chrome's built-in translation models, which are also downloaded once. Burning subtitles into a video needs a connection.
Is OpenSubs open source?
Yes. The subtitle generator is open source, under the AGPL-3.0-or-later. 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.
How do I add captions to a video?
Drop the video into the subtitle generator on this page. The speech is written down in the tab, you correct any line that came out wrong, pick a style, and then either burn the captions into the picture or export them as a file to send alongside. Nothing is uploaded and there is no watermark; burning the captions in takes a free sign-in. The longer version, with the two ways a platform will take captions, is in how to add captions to a video; the caption generator page walks through it step by step.
Can it generate an SRT file from a video?
Yes, and that is the usual way to leave the subtitle generator with one. Once the subtitles are written and corrected, export .srt, .vtt or .ass. An .srt is a plain text file holding a line number, a start and end time, and the words — anything that takes subtitles will read it. Step by step: the SRT file generator.
Is there a free AI subtitle generator that makes an SRT file?
Yes. This subtitle generator is free and makes an .srt from a video's speech: choose a video, generate the subtitles from the audio, correct any line, then export .srt. Whisper runs in your browser, so the video is not uploaded, and saving the .srt needs no account. The same subtitle generator also saves .vtt, .ass and .txt.
How accurate is the subtitle generator?
As accurate as Whisper at the model size you pick. On three single-language clips of synthesised speech, measured on 2026-09-09, the Base model (about 80 MB) had a 7.7% word error rate in English and character error rates of 3.4% in Chinese and 4.3% in Japanese; the Small model (about 250 MB) had 0.0%, 1.7% and 4.3%. Those clips have no accent, music or room noise, so they are a floor: real footage scores worse, which is why every line can be corrected before you export.
Can I edit the timings as well as the words?
Yes. In the subtitle generator on this page each cue's start and end time can be typed or set from the current playback position. A cue has to start before it ends, cannot overlap the cues beside it and cannot run past the end of the video. Cues can also be added, deleted, split and merged, and every step can be undone. Exports and the burned MP4 use the edited cues. There is no timeline to drag them on, and the phone apps get this in a later store update.
Is there a browser extension?
Yes. It takes the subtitle generator to whatever is playing in the tab: subtitles generated as it plays, in Chrome, Edge and Firefox. It is in the Chrome Web Store, on Firefox Add-ons and in Edge Add-ons, and it is free.
What do I need to run it?
The subtitle generator needs a browser with WebAssembly: Chrome, Edge, Safari or Firefox. WebGPU makes transcription faster but is not required. The speech model is downloaded once, about 40 to 250 MB depending on the size you pick, and then cached by the browser. iOS 17 Safari cannot run the recogniser; iOS 26 works.
How do I get in touch or report a problem?
Email hello@opensubs.app.