How to add captions to a video without uploading it
Last updated
In CutXflow the video file is never uploaded. Your browser reads it, extracts a small audio track (16 kHz mono, about 240 KB per minute) and sends only that audio for transcription. Captions are drawn and the MP4 is encoded on your own device. The audio does leave your device, so CutXflow is not a fully offline tool.
What does “without uploading” actually mean in CutXflow?
It means the video file itself, the frames and the original audio, stays on your device. It does not mean that nothing is sent. To transcribe speech, CutXflow has to send the speech somewhere, so it sends a small speech-only audio track. Everything else, including drawing the captions and encoding the MP4, happens in your browser.
What exactly leaves your device?
| Data | Leaves your device? | Where it goes, and why |
|---|---|---|
| Your video file | No | It is read from disk into your browser's memory. A copy is cached in your browser's own storage (IndexedDB) so a saved project can reopen. Clearing the site's data removes it. |
| The extracted audio track | Yes | A speech-only track, 16 kHz mono, about 240 KB per minute of video. It goes to CutXflow's server and is forwarded to ElevenLabs's speech-to-text service to produce the transcript with word timings. |
| Language, video length, sign-in token and a hash of the audio | Yes | Sent to CutXflow's server with the audio: to bill the right account, apply limits, and avoid charging twice if a request is retried. |
| The transcript and your caption settings | Only if you are signed in | Kept in your browser. When signed in, the caption text, word timings, style settings, the video's duration and frame size, and its file name (used as the project title) are saved to your account. The video and the audio are not. |
| The exported MP4 and SRT | No | Created in your browser and saved to your Downloads folder. |
| Payment details | Not to CutXflow | Handled by Cashfree Payments. CutXflow receives confirmation of payment and your plan status. |
Who receives the audio, and is it kept?
The audio goes to CutXflow's server, which checks that you are signed in, forwards it to ElevenLabs's speech-to-text service, and returns the transcript. The transcription route does not write the audio to a database or to file storage. It logs the language, length, word count and credits used, not the audio and not the words. CutXflow's privacy policy says CutXflow does not save the audio and that ElevenLabs may keep a copy under its own policy.
What happens to the audio at ElevenLabs is governed by ElevenLabs's own terms and account settings, not by CutXflow. Its documentation says customers by default have history preservation enabled, and describes an optional Zero Retention Mode, offered to enterprise customers, in which speech-to-text audio and text are deleted as soon as the request completes (ElevenLabs: Zero Retention Mode (opens in a new tab)). So the accurate short statement is that the audio is sent to a third party for transcription. How long that provider keeps it is set out in its documentation and in CutXflow's privacy policy; read both if it matters for your footage.
Why does the audio still have to be sent?
Transcription runs on a hosted speech-to-text model, not inside your browser. CutXflow cannot produce word-level Hindi transcripts without sending audio to that service. If a clip cannot leave your device in any form, CutXflow is the wrong tool for it, and a fully offline workflow is the right one.
How does the video stay on your device while captions are added?
- Reading. The browser reads the file you chose into the tab's memory. No request is made for it.
- Extracting the audio. CutXflow uses the browser's own WebCodecs (opens in a new tab) where it is available, and otherwise an audio engine compiled to WebAssembly, about 31 MB, fetched from CutXflow's own site. Either way it runs on your device. The result is 16 kHz mono Opus at 32 kbps.
- Drawing and encoding. The captions are drawn onto each frame in the browser, the frames are encoded by the browser, and the finished file is saved from memory to your Downloads folder. During export the only requests the app makes are account and billing checks and loading the watermark image from its own site. No video data is involved.
You can check this yourself. Open your browser's developer tools, go to the Network tab and caption a clip. The one large upload is the audio request to /api/transcribe, and the editor reports how many kilobytes of audio were sent once transcription finishes.
Is that private enough for your footage?
It is a good fit if the thing you want to avoid is sending a whole video file to a third party, and you are comfortable with the speech in it being processed by a transcription service under CutXflow's privacy policy. The audio track is a small fraction of the size of the video, and the picture never leaves your machine.
What else does CutXflow store about you?
According to the privacy policy, CutXflow stores:
- Your email address and, for Google sign-in, your display name, through Firebase Authentication.
- If you are signed in, your project data: caption text, timings and style settings, as in the table above.
- Payment confirmation and plan status from Cashfree, never your card, UPI or bank details.
- Standard server logs, including IP address, for rate limiting and abuse prevention.
The policy also says CutXflow does not sell personal data and does not use your content to train machine-learning models. For the captioning steps themselves, see how to add Hindi captions to Reels and Shorts.
Sources and how this was checked
What is sent and what is not was checked against CutXflow's code and interface text as of 21 September 2026. What ElevenLabs does with audio is described from ElevenLabs's own documentation, read on the same date.
- Zero Retention Mode, ElevenLabs Documentation (opens in a new tab): confirms customers have history preservation enabled by default, and Zero Retention Mode, offered to enterprise customers and enabled with enable_logging=false, covers speech-to-text.
- Create transcript, ElevenLabs API reference (opens in a new tab): confirms the speech-to-text endpoint's enable_logging option, and that zero retention mode may only be used by enterprise customers.
- WebCodecs API, MDN Web Docs (opens in a new tab): confirms WebCodecs lets a web page encode and decode video and audio in the browser, using hardware acceleration.
Try it on your own clip
Open CutXflow, sign in and drop in a video to see how your captions come out. Your video file stays in your browser.
Open Create
