About this site

I am one person. I have been writing software for about twenty years, mostly cross-platform desktop clients and the servers behind them, and I run a handful of small browser-based tools of which this is one. There is no company, no team and no investor behind this page — which is the reason it can exist as a free thing that does not upload your files, and also the reason it gets fixed on evenings and weekends.

I built it because subtitling is the video task with the worst ratio of "how hard the computer work actually is" to "how much you are asked to give up to have it done". Every service wants the whole video, an account, and a card on file, for a job that a modern laptop can now do by itself in a tab.

Why it runs in your browser

A subtitle service needs the entire video, not a thumbnail of it. That means a multi-hundred-megabyte upload out of a home connection, a copy of your recording living on somebody's disk for some period described in a policy you did not read, and a per-minute price that exists because someone has to pay for the servers doing the work.

Running it locally removes all three at once. Your file is opened the way a media player opens it. The speech model runs on your processor or your graphics card. There is no bandwidth bill, so there is no quota and no paywall, and there is no copy of your interview, your lecture or your client's footage anywhere but on your own machine. The site is paid for by ads on the page, which is a worse business than subscriptions and a much better deal for you.

What it is built with

Speech recognition is OpenAI's Whisper, running in the browser through Transformers.js on top of ONNX Runtime Web — WebGPU when your browser has it, WebAssembly when it does not. Audio is demuxed and decoded with mediabunny, which is what lets a browser read an MP4 or MKV container without a 30 MB software decoder.

The site itself is a static Astro build on Cloudflare Pages. There is no application server, no database of your content, and no login. The only server-side code on this domain counts page views and receives messages from the contact form.

Known issues

Subtitle generation does not work on phones. The speech model needs more memory than a mobile browser will give it and there is no usable WebGPU there. Editing and exporting work fine on a phone; generating needs a desktop browser. I do not have a fix for this, and I would rather say so than let you find out after a five-minute wait.

Very long recordings are slow, and how slow depends entirely on your hardware — a machine with WebGPU is several times faster than the same machine falling back to WebAssembly. There is no progress estimate I trust enough to show you a finishing time.

Burning subtitles into the picture happens entirely in memory, so a long clip at high resolution can run a browser tab out of room. The editor will tell you before it starts if the finished file looks too big, and point you at the subtitle file instead. Generating subtitles has no such limit — the audio is processed in pieces.

On stretches with no speech — room tone, music, traffic — the model used to invent a line anyway; “Thank you.” and “Subtitles by…” are the classic ones. The page now checks the audio for real speech before transcribing and filters those out afterwards, so you should not see them. If you do, the line is wrong rather than the file — right-click it and choose Delete, and please tell me what the clip sounded like.

Export Video holds the whole finished file in memory while it works, so a long recording at high resolution can run a browser tab out of room. Six-minute clips are comfortable; a feature-length file is not, yet. Translation is not implemented and is a deliberate line, because it cannot be done well without sending your text somewhere.

Getting in touch

Bugs, a file it refused to open, a language it handled badly, a feature that would save you real time: the form on the contact page reaches me, or write to hello@videosubtitleeditor.com. I read everything. I do not reply to all of it, but the things that get fixed are overwhelmingly things somebody wrote in.