Browser-local captioning
Auto Captions, No Upload
Every other caption generator on the internet uploads your video to a server. The marketing page may not say so, but watch the Network tab in DevTools while you drop a file in and you will usually see the upload go out. The reason every competitor does this is historical: speech recognition models like Whisper used to be too large to ship to a browser. That changed a few years ago, when WebAssembly-compiled builds of Whisper started running at usable speed inside the tab.
Drop your video or audio file here
or click to browse
Supports video and audio files up to 2048MB
About Auto Captions, No Upload
This page takes the on-device path. When you select a video, the bytes are read by JavaScript into browser memory. A Web Worker downloads the Whisper model on first run (about 290 MB on desktop, about 150 MB on phones, cached after that) and runs the speech recognition pass entirely inside the worker thread. The browser's WebCodecs API handles the audio decode and the optional burn-in step. The final output, whether an SRT file or a captioned MP4, comes off your own disk.
The verification you can do in 30 seconds: open DevTools before you drop the file, switch to the Network tab, filter to XHR and fetch. You will see the app bundle, the one-time model fetch, and a few small anonymous usage and error-report pings that carry no media. What you will not see is a request anywhere near the size of your video. Run the same filter on an upload-based caption tool and the multi-megabyte upload is hard to miss.
When this fits
NDA and embargoed content
Sponsorship material before launch, unreleased product demos, and any video tied to a confidentiality clause should not be uploaded to a third-party caption server, even briefly.
Medical and legal recordings
Patient consultations and legal depositions carry storage requirements that a cloud captioning service usually cannot satisfy. Browser-local processing keeps the question off the table.
Locked-down networks
Once the page and the model are loaded, transcription and burn-in need no connection. Corporate networks that block uploads to consumer SaaS still allow this flow, because nothing is uploaded.
Enterprise compliance reviews
When the security team has to approve a captioning tool for internal use, "no upload" is a much shorter conversation than "uploads but encrypted in transit and at rest with these specific retention guarantees".
How to caption a video without uploading
1 Open the page
The Whisper model (about 290 MB on desktop, 150 MB on phones) downloads on first visit and is cached for future runs.
2 Drop the file
Your video stays in browser memory. The Network panel in DevTools will confirm no outbound request includes your media.
3 Verify locally
While the transcription runs, watch the Network panel. You will see no upload, only the app, the cached model, and small analytics pings without media.
4 Export
Download the SRT, VTT, or burned-in MP4. The output is written back to your disk by the browser, with no server involvement.
Frequently asked questions
How can a caption tool run without uploading anything?
Speech recognition (Whisper) runs as WebAssembly inside a worker, and audio decoding and burn-in use WebCodecs, the media API built into modern browsers. Your browser executes all of it locally against your video file. The tab is doing the work that other captioning services do on their servers.
Is this slower than cloud-based captioning?
For short videos it is competitive, because cloud captioning pays its time cost in upload and queue wait that browser-local skips. Whisper here runs at roughly one to three times realtime on a laptop CPU, so a long recording is slower than a GPU server would be. There is no queue, though, and no minute cap.
What is the one-time download on first visit?
The Whisper model: about 290 MB on desktop (base.en) or about 150 MB on phones (tiny.en), served from VidStudio's own model host and cached by your browser after the first run. Your video is never part of any request. The only other traffic is anonymous usage events and error reports, which carry no media.
How do I verify that nothing is uploaded?
Open DevTools, switch to the Network panel, filter to fetch and XHR requests. Drop a video in and let it transcribe. You will see the app bundle, the model fetch on first visit, and a few small analytics pings. None of them carry your media, and nothing in the list is anywhere near the size of your file. This check works against any web tool claiming to be browser-local.
What if my IT policy blocks WebAssembly?
Some enterprise security policies disable WASM in browsers. If WASM is blocked, this page will fail at the captioning step. The simplest workaround is to load the page on a personal device or in a browser profile that allows WASM. There is no server fallback because the entire pipeline depends on WASM running.
Related Tools and Resources
Auto Captions, No Signup
Same browser-local engine with no account gate either.
Free Captions, No Watermark
Clean burn-in output, no logo, no signup wall.
Private video editor
Same browser-local architecture applied to full video editing.
Video editor, no upload
Technical explanation of the WebCodecs editor.