How this recorder works
How this recorder works, written to be checked rather than believed. If you are evaluating it for confidential work, this is the page to hand to whoever needs to assess it.
The full path, step by step
- You press Record. The page calls
navigator.mediaDevices.getUserMedia({ audio }), which triggers your browser's permission prompt. - The browser returns a
MediaStream. This is a live in-memory handle to the microphone, not a file. - The stream is connected to an
AudioContext, and anAnalyserNodereads it to draw the waveform and level meter. - For WAV and MP3, a processing node collects raw float samples into an array as you speak. For native output,
MediaRecorderencodes the stream directly. - On Stop, the samples are converted — to 16-bit PCM with a RIFF header for WAV, or through a JavaScript LAME encoder for MP3.
- The result becomes a
Blob, andURL.createObjectURL()produces ablob:URL pointing at your own memory. - That URL is attached to a download link. Clicking it writes the file to your disk.
No step involves the network. The blob: URL scheme is specifically a reference to in-memory data in your browser, not a remote address.
Verifying it
- Network tab. Open developer tools, select Network, record and stop. No outbound request carrying audio appears.
- Read the source. The recorder is a single unminified JavaScript file at
/recorder.js. It contains nofetch,XMLHttpRequestorWebSocketcall. Search it and confirm. - Test offline. Load the page, disconnect from the network, then record and download. It works, because none of it needs a connection.
- Check the download link. Right-click Download and copy the address — it begins
blob:, which is in-memory data, not a server URL.
The offline test is the most convincing. A tool that requires an upload cannot function without a network; this one is unaffected.
What each format does technically
- WAV
- Float samples converted to 16-bit integers, prefixed with a 44-byte RIFF header. No compression, no library.
- MP3
- Samples passed through LAME compiled to JavaScript, running on your processor. 128 kbps CBR mono.
- Native
- Browser's own MediaRecorder — Opus in WebM on Chrome, Edge and Firefox; AAC in MP4 on Safari.
What the site loads
Everything is served from this domain. Fonts are self-hosted rather than pulled from a font CDN, so no third party learns that you visited. The MP3 encoder is served from this origin and loaded only when you select MP3. There are no third-party scripts on recorder pages.
The limitations this design imposes
Being local-only costs real capability, and it is worth stating plainly:
- No shareable links. Those require hosting the audio.
- No recovery. A closed tab means a lost recording.
- Memory-bound length. Recordings are held in RAM until downloaded.
- No background recording. The tab must stay visible.
- No server-side processing. Timeline editing, format conversion and noise reduction are not available.
These are consequences of the architecture, not oversights. A tool that fixed them would need to upload your audio.
- PrivacyWhat is and is not collected.
- How browser recording worksThe general technical background.
- Browser supportWhich browsers implement what.
- ContactTechnical questions welcome.
Questions
How can I be sure my audio is not uploaded?
Three checks: watch the Network tab while recording, read /recorder.js for any fetch or WebSocket call, or disconnect from the network entirely and confirm recording still works.
What is a blob: URL?
A reference to data held in your browser's memory. It is not a web address and points at nothing remote — which is how the download works without a server.
Is the code available to read?
The recorder is served unminified at /recorder.js. Open it directly in your browser and read it.
Does the MP3 encoder send audio anywhere?
No. It is a JavaScript library served from this domain that runs on your processor. It has no network capability.
Why can't I recover a lost recording?
Because nothing is stored. That is the direct cost of the design — the same property that means we never have your audio means we cannot return it.
Does the site load anything from third parties?
No. Fonts, styles and scripts are all served from this domain, so visiting does not reveal anything to an outside party.