How to verify nothing is uploaded (don't take our word for it)
Every tool that handles sensitive files claims to respect your privacy. The claims are cheap and mostly unfalsifiable, which is why you should not extend this site any more trust than the others until you have checked. Here is how — arranged from the fastest test to the most thorough.
The useful thing about this particular claim is that it is the kind you can check. “We delete your files after 24 hours” is unverifiable from outside. “Your file is never transmitted” is visible in any browser’s developer tools.
1. The thirty-second version: pull the plug
Load this site. Transcribe a short file once, so the speech model downloads and caches. Then:
- On a laptop: turn off Wi-Fi. Genuinely off, not “disconnected from this network”.
- Or in the browser: open developer tools (F12), go to the Network tab, and set the throttling dropdown to Offline.
Now drop in another file and transcribe it. It works. The transcript appears, the player plays, the downloads download.
That is the whole argument, really. Software that was sending your audio somewhere cannot function with the network off. There is no cached-response trick that would let it — a transcript of a file it has never seen has to be computed on the spot.
2. Watch the network tab while it runs
More informative, still quick.
- Press F12 (or right-click → Inspect) and open the Network tab.
- Tick Preserve log so nothing disappears on navigation.
- Reload the page, then transcribe a file.
You will see a long list of requests. Read the Method column: every single row says GET. A GET
request asks a server for something; it is how the page, the stylesheet, the script and the model
weights arrive. Sending a file requires POST or PUT, and there are none.
You will also see the model download — a run of requests to /models/whisper-base.en/…, some
ending in .part0, .part1 and so on. Those are the weights arriving in pieces, because
the host refuses files over 25 MiB. They come down.
Nothing corresponding goes up.
Sort by Size if you want the quick version: your recording is probably the largest thing in the session, and it is not in the list at all, because it was never transmitted.
3. Check where the requests go
Still in the Network tab, look at the Domain column (you may need to right-click the column headers to enable it). Every request goes to this site’s own domain. There is no request to an AI provider, no analytics vendor collecting your content, no CDN fetching a model from somebody else’s bucket.
That last one is worth dwelling on, because it is where similar tools quietly leak. Most in-browser AI demos load their model straight from Hugging Face’s CDN — which means a third party learns your IP address, which model you loaded and when, every time you use it. Your audio is still private, but your usage is not. This site self-hosts the model files and the inference runtime for exactly that reason, and the automated test suite fails the build if a cross-origin request ever appears.
4. Read the source
The site is static files. Press Ctrl+U to view the page source, or open the Sources panel in developer tools and read the JavaScript. It is not minified beyond recognition and there is not much of it.
What you are looking for is any fetch() or XMLHttpRequest with a method other than GET, or any
FormData, or a WebSocket. You will not find them. What you will find is a Web Worker that loads
model weights, an audio decoder that calls the browser’s own decodeAudioData, and a lot of code
about subtitles.
If you would rather not read JavaScript, the strongest structural argument is this: the site is hosted as static files on a CDN, with no backend of any kind. There is no server-side code in the project to receive an upload. Adding one would not be a configuration change — it would be a different kind of website.
What is stored, and where
Being precise about this matters more than a blanket “nothing is stored”:
- The speech model is cached in your browser’s Cache Storage, roughly 45–81 MB per model tier. That is what makes the second visit instant and the offline test work. It contains no data of yours. You can delete it from the Options panel, or by clearing site data.
- Your theme choice (light or dark) is one entry in localStorage. Not tracking, and not shared.
- Your audio and your transcript are held in the tab’s memory while you work and are gone when you close it. They are never written to the site’s cache and never leave the page. Export anything you want to keep.
- Analytics, if enabled, is Cloudflare’s cookieless page-view counter. It records that a page was viewed. It cannot see your file, your transcript or anything you type, and it sets no cookies — which is why this site has no cookie banner.
The honest caveats
Verification tells you about this visit to this version of the site. To be complete:
- A future version could change. The tests in the repository assert that no non-GET and no cross-origin request occurs, and the build fails if one appears — but you are trusting that those tests are run. Re-check occasionally if it matters to you.
- Your browser, your operating system and any extensions you have installed can see what you do in a tab. A tool running in a browser cannot protect you from the browser. If your threat model includes your own machine, no website is the answer.
- Downloading a transcript writes a file to your disk, which is then subject to whatever backup, sync and search indexing you have running. That is usually the least-considered leak of all.
None of these are reasons not to check. They are reasons to know what checking proved.