Guide · 9 min read
Is browser transcription private? What stays on your device
Is browser transcription private? In this tool, audio is decoded and transcribed inside the tab, so the media file is not uploaded. A static site can still receive ordinary hosting logs, and the first run downloads model files from Hugging Face. Privacy therefore depends on the device and browser context, not only on the lack of an upload button.
By Abdul Samad · Last updated
Key facts
| Item | Detail |
|---|---|
| Media handling | The selected file is read in the page and decoded by FFmpeg running in a browser worker |
| Speech recognition | Whisper runs in a web worker through Transformers.js; audio is not posted for inference |
| Model download | The first run fetches ONNX model files from Hugging Face and caches them |
| Ordinary web logs | A static host may still record IP address, user agent, requested page and time |
| Local storage | Consent and theme preferences use localStorage; the transcript stays in page memory |
| Not a guarantee | A shared device, a malicious extension or screen recording is outside the tool's control |
Try it with your own clip
The generator runs locally and exports SRT, VTT or TXT. Nothing is uploaded.
Generate subtitles from your own clipThe short answer: the audio stays in the tab
When you choose a file, the browser reads it locally. FFmpeg, compiled to WebAssembly, extracts a mono 16 kHz audio track inside a worker. That audio is passed to another worker that runs Whisper. There is no API endpoint in this application that accepts your video, and no account is needed to start a transcription. The text appears in the page, and the download buttons create a file on your own machine.
That is the core of the privacy claim, and it is narrower than a promise that nothing leaves the device. The page itself came from a server, the model comes from a model host, and the browser may keep logs or storage. A useful answer separates the file content from the surrounding metadata. The main generator describes the intended workflow; this guide examines the boundary.
Browser transcription privacy starts with local processing
Local processing means the machine doing the recognition is the one displaying the page. The media worker uses the bundled FFmpeg build to decode the container and resample the audio; the transcription worker loads the selected model and processes 30-second chunks. The worker messages carry audio buffers and text results between parts of the same tab. They do not travel over the network.
This design removes a whole class of risk: there is no server-side copy of the recording to breach, retain or hand to a third party. It also means the result is limited by the device. A phone that cannot hold the model will fail locally rather than quietly sending the file somewhere else. If a future change introduced a server fallback, that would be a material change to the privacy model and should be visible in the source and on the privacy policy.
What a static site can still see
A static site is still a website. The hosting provider receives an HTTP request for the page, the JavaScript bundles, the FFmpeg core and any fonts or images. Those requests normally include an IP address, a user agent, the requested path, a referrer if the browser sends one, and a timestamp. The provider may keep access logs for security, billing or troubleshooting. None of that requires the audio file, and none of it contains the transcript.
The distinction matters when someone asks whether a tool is anonymous. Local transcription can keep the content private while the visit is still attributable at the network layer. If the page is served through a CDN, the CDN also sees the request. If the site is opened through a corporate proxy or a managed browser, that layer may log more. The privacy policy should describe the deployment's actual providers rather than relying on a generic slogan.
Hosting logs and analytics are separate from transcription
Analytics and advertising are separate scripts with their own requests. This site has a consent banner and an advertising switch; when ads are disabled, the ad component renders nothing. When analytics or ads are enabled on a deployment, those scripts may send page-level events such as the page URL, a timestamp or a browser identifier. They do not need the audio or the subtitle text, and the transcription worker does not hand either to them.
Consent choices are stored in localStorage under a small set of keys, and the theme preference is stored the same way. Those values are not the transcript. The editor keeps cues in the page's memory, and the interface tells the user to download the file because nothing is saved to the site. Closing the tab without downloading can therefore lose the work. That is a data-retention property, not only a privacy one.
Model download requests to Hugging Face
The first run fetches the selected ONNX model from Hugging Face. Those requests reveal that a browser at a particular IP address requested a model file, along with the usual request metadata. They do not contain the audio being transcribed. The model host does not need your media to serve a public weight file, and the inference happens after the download on your machine.
The download is also cached. Transformers.js is configured to use the browser cache, so a later run can reuse the files instead of requesting them again. That is convenient, but it means the first run has a visible network dependency. If you need a fully offline session, load the exact model once while online, keep the browser profile, and test with the network disabled. An uncached model cannot appear from nowhere.
Local storage, browser cache and offline limits
There are three different storage stories here, and mixing them up causes bad advice. The transcript lives in memory and is exported as a download. Preferences and consent live in localStorage. Model weights live in the browser's cache, managed by the Transformers.js runtime and subject to eviction. None of these is a server-side transcript archive, but all of them can persist on the device.
Offline use works only after the required files are cached and the page is already loaded. A previously used model can run without a connection inside that tab, but a new model variant or a cleared cache needs the network. Reopening the site from scratch while offline depends on whether the browser still has the page assets. A private browsing window may discard storage when it closes. On a shared device, the next person may be able to reopen the page, but they cannot read a transcript that was never saved; they may, however, see cached model files and stored preferences.
How to verify the network behaviour yourself
You do not have to take the claim on trust. Open the browser's developer tools, switch to the Network panel, clear the list, and start a short transcription. Watch the requests that appear. You should see the page assets, the FFmpeg core, and the model files. You should not see a request whose body is your video or a multipart upload containing the audio.
Filter by Fetch/XHR to reduce noise, then inspect the request method, URL and payload for the largest requests. A POST with a media body would be the thing to question; model downloads are normally GET requests for static files. Repeat the test with the network set to offline after a successful run. If the cached model still transcribes, that is strong evidence that inference is local. Also check the Console for errors and the Application panel for cache and localStorage entries.
- Open DevTools before selecting a file, so the first request is captured.
- Clear the Network log, then start a ten-second transcription.
- Check that model requests go to a model host and that no request carries the media bytes.
- After one successful run, switch the network to offline and repeat with the same model.
- Inspect localStorage and the cache to see what persists on the device.
Threat model: shared device, extensions and screen recording
Local processing does not protect you from the device itself. A browser extension with permission to read page content can read the transcript as it appears. A person using the same unlocked computer can open the page or watch the screen. Screen-recording software, remote-support tools and a compromised operating system sit below the browser and can capture what the tab displays. The tool cannot defend against a hostile environment it does not control.
There is also the question of who owns the recording. Transcribing a conversation does not by itself give you the right to record or publish it. Consent, workplace policy and local law still apply. If the material is sensitive, use a device you control, close unnecessary extensions, lock the screen when you step away and download the subtitle file to a location with appropriate access controls. Working offline through a cached model reduces the network dependency but not the human ones.
What we do not claim
We do not claim that the tool is perfectly secure, anonymous or invisible to every intermediary. We claim that the media is processed in the browser and is not uploaded for transcription. That claim can be checked in the code, in the worker messages and in the Network panel. It is a statement about the application's data flow, not a warranty about the hosting provider, the browser vendor, the model host or the device.
A realistic privacy decision weighs the content, the people who can access the device and the network path. For a confidential interview, local processing removes the biggest third-party copy, but it does not remove every risk. Keep the review workflow on a trusted machine, export deliberately and delete files you no longer need. The how Whisper works guide explains why the model must be downloaded before the first run, which is the main external request you will see.
Worked example: a network timeline for a short clip
This is the order to look for in the Network panel, not a capture from a particular machine. Exact times and file names depend on the browser, cache state and model, but the separation between model traffic and media traffic is the point.
00:00.000 Page, scripts and styles load.
00:02.140 Model configuration and tokenizer files load.
00:02.480 Encoder and decoder weights download (measured 41 MB for tiny on WASM).
00:06.900 FFmpeg core runs; the local audio track is decoded.
00:07.400 Transcription worker starts; no media-sized POST appears.
00:18.200 Cues appear in the editor; export creates a local file.Frequently asked questions
Is my video uploaded to a server?
No. The file is read by the page and decoded in a browser worker, and the audio is passed to the local Whisper worker. There is no upload endpoint for the media. You can confirm this by watching the Network panel during a run and checking that no request carries the video bytes.
Is my file uploaded to a server?
The media file is not sent to the site's server. The page, scripts and model weights are downloaded to your browser, which is the opposite direction. If you use a cloud-synced folder or a browser profile that syncs downloads, the exported subtitle file may leave the device through that separate service.
Does browser transcription work offline?
It can, once the page is open and the selected model has been cached. A model that has never been downloaded cannot be fetched without a connection. Test the offline case in the same browser profile you plan to use, and keep the tab open because a mobile browser may discard the worker.
What data does the hosting provider see?
The provider can see ordinary request data such as IP address, user agent, requested URL and time. It does not receive the audio or the transcript through the transcription flow. CDNs, proxies and corporate network tools may add their own logs, so the exact answer depends on how the site is served.
Can browser extensions read my subtitles?
An extension with permission to access page content can read text displayed in the tab, including a transcript. That is outside the control of the site. Use a clean browser profile or disable unnecessary extensions when the material is sensitive, and treat the device as part of the privacy boundary.
What are the risks on a shared computer?
Someone else may see the screen, reopen the page, inspect browser storage or use the same account. The transcript is not saved to the site, but it can remain visible in the tab and in any file you export. Lock the device, use a private profile where appropriate and move downloads to protected storage.
Sources and further reading
Abdul Samad — Creator and maintainer. About Abdul Samad.
Last updated · Published
Related guides
- How does Whisper work? The model behind browser subtitlesHow does Whisper work? Follow audio through a log-Mel spectrogram, an encoder-decoder Transformer and 30-second windows, then see how it runs on WebGPU or WASM.
- Whisper model sizes compared: tiny, base and small in a browserWhisper model sizes compared using measured browser downloads: tiny, base and small, their parameters, memory tradeoffs and a practical way to choose.
- How to improve Whisper accuracy for cleaner subtitlesHow to improve Whisper accuracy with better audio capture, explicit language selection, measured model sizes, overlap handling and a practical human review workflow.