Where your audio goes
HyperWhisper has three transcription paths. Each path has a different effect on your privacy:HyperWhisper Cloud
HyperWhisper Cloud sends your audio to a backing speech-to-text provider. It also sends your transcribed text to a backing LLM for post-processing. HyperWhisper does not store your audio on its own servers. The edge servers process the audio in memory, then delete it after they return the response.Every HyperWhisper Cloud engine that you can select sends your audio in the request. No such engine writes your audio to a temporary bucket. The Google Gemini 3.5 Transcribe engine has the smallest limit: audio of more than 14 MB gets a “file too large” error. For the limits of each engine, see File Transcription.
- If a provider has a per-request no-train / no-store flag, HyperWhisper sets the flag on every call (for example, the
mip_opt_outflag of Deepgram). - If the control is account-level, HyperWhisper enables zero-data-retention on the HyperWhisper account (for example, Groq).
- If a provider has neither control, HyperWhisper deletes the transcript immediately after it gets the transcript (for example, AssemblyAI). HyperWhisper also opted out of model training with AssemblyAI.
Which app made the request
Every request to HyperWhisper Cloud says which app sent it, through two headers:macos, windows, or ios. The version is the app version you run. HyperWhisper writes both to the server log for the request, so a fault can be traced to one platform and one app version. Neither header names you, your device, or your account.
The Linux app does not send these two headers. Its requests show as unknown in the server log.
Timing measurements
HyperWhisper Cloud times each provider call and stores the timing. These timings make the public latency page, which shows how fast each provider answers in each region. One stored row holds only these facts:- The provider, and the model. If the call worked, this is the model that ran. If it failed, no model ran, so it is the model the call asked for.
- The server region that made the call.
- Which clip-length group the audio is in: under 10 seconds, 10 to 30 seconds, or more than 30 seconds. The group comes from an estimate of the length, calculated from the size and the format of the audio. The length itself is not stored.
- The position of the call in the fallback sequence: 1 for the first provider, 2 for the next one, and so on.
- How long the provider took, in milliseconds.
- Whether the call worked, and the failure type if it did not.
- The hour in which the call happened. HyperWhisper stores the time rounded down to the hour, and no more accurately.
How to stop the measurements
Open Settings → General and turn off Share anonymous speed data. The change applies to your next transcription. Your transcriptions do not change when you turn this off. The same providers run, at the same speed, and you get the same result. The only difference is that the server does not store the timing. Under the hood, the app adds one request header:- App versions that predate this setting. The switch arrived in macOS 2.43.0 and Windows 1.10.0. Sharing is on by default, and the server does not apply that default to a build that could not turn it off. Older versions are not measured at all. Update to take part.
- Direct calls to the HyperWhisper Cloud API. A caller who is not one of the apps never saw the setting, so nothing it sends is stored. You do not need to send any header.
Error reports
Error reports go to the crash reporter (Sentry). They are on by default on all three platforms. They hold no audio and no text. To stop them, turn off Error logging (macOS), Send error reports (Windows), or Send privacy-filtered crash and performance diagnostics (Linux) in Settings → General. Read General Settings for that setting. The switch takes effect immediately, on all three platforms. The app does not need a restart.On Linux, the setting sends no transcript, no audio, no prompt, and no credential content. A build that you compile yourself has no release crash-reporter address, so it stays fully offline even when the setting is on.
Export a diagnostics archive (Linux)
Linux can also write a diagnostics archive to a file that you choose, for a support request. Open Settings → Privacy-safe diagnostics, then click Choose destination and export diagnostics…. Nothing leaves your computer until you send the file yourself. The archive holds three entries and nothing else:
HyperWhisper writes the file so that only your user account can read it. Review the archive before you send it.
The no-speech diagnostic
A transcription that finds no speech is usually correct: you said nothing, or the microphone heard nothing. HyperWhisper does not report that case. But an engine can also return an empty result for a recording that does contain speech. To find these faults, the app measures the audio after each No speech detected result. If the measurement contradicts the result, the app sends one error report. If the measurement agrees that the recording is silent or very quiet, the app sends nothing. The report holds measurements and provider metadata only. It holds no audio and no transcript text. On both macOS and Windows, it can hold:- Whether the measurement worked, and the error if it did not
- The length of the recording, in seconds, and the size and extension of the file
- The sample rate, the number of channels, and the decoded and measured sample counts
- The peak level and the average level, in dBFS, and how much of the recording is above the silence threshold
- The selected input device and whether the provider reported no speech
- The provider type, the Cloud provider, or the local engine
0 for the raw-result length means that the provider returned an empty string. The report never includes the string itself.
The app sends one report for each recording. To send none, turn the error-report setting off.
Streaming error diagnostics (macOS)
When a streaming session fails on macOS, the error report includes the state of that session. The metadata can include:- The provider, model, and stage of the session
- The elapsed time for the session, the current connection, and microphone audio
- The number of final and partial results delivered
- The reconnect count and audio-send failure count
- The WebSocket close code, whether the session-complete message arrived, and whether the app started the close
- The streaming session ID and, when available, the network error domain and code
Your own API keys (BYOK)
If you configure your own API key in Model Library → API Keys, your device sends the audio directly to that provider. The request uses your account with that provider, under the terms of that provider. For direct Meta Muse, the device connects toapi.meta.ai. The Meta key stays in the operating system’s secure credential store, and the audio request does not reach HyperWhisper servers. Meta’s public speech-to-text documentation does not state its retention, logging, or model-training rules, so review your Meta account terms before use.
Deepgram BYOK — HyperWhisper opts out for you
For Deepgram, HyperWhisper does this work for you on macOS and Windows. Every direct Deepgram request from the app includesmip_opt_out=true in the query string. The flag applies to each request, so you do not change any setting on your Deepgram dashboard. To make sure of this, open a recent request in console.deepgram.com under Usage → Logs. The request detail shows mip_opt_out: true.
Other providers — quick reference
This table shows the public policies at the date of this page. Providers can change their terms. If the policy of a provider is critical to your use, do a direct check with the prompt in the next section.
How to do a check on any provider
Provider data policies change. Providers rename pages and redesign settings. The most reliable check is a question to a current language model. Open ChatGPT, Claude, or another LLM with web access. Then paste this prompt:If you already used a key without an opt-out
You can do these three things:- Opt out now. Most providers stop the training use of new requests immediately after you change the setting. This applies even if they used your past requests.
- Request a deletion. Many providers accept deletion requests for content that you sent before. Use the same LLM prompt with this question: “how do I request deletion of past API data on
{PROVIDER}?” - Rotate the key. For a clean cut-off point, generate a new key on the provider dashboard. Then replace the old key in Model Library → API Keys.
Summary
- Local: the audio stays on your device.
- HyperWhisper Cloud: HyperWhisper does not store your audio. It applies each provider’s strongest documented no-train / no-store control. Most providers store nothing. Some providers store data for a short time for abuse monitoring, and do not train on it. ElevenLabs stores data by default, until HyperWhisper completes an enterprise zero-retention upgrade. Meta does not document retention, request logging, or model-training use for Muse API data in its public speech-to-text documentation. HyperWhisper stores anonymous timing rows for the public latency page, and deletes them after 1 year. To stop them, turn off Share anonymous speed data in Settings → General.
- Your own API key: the opt-out is mostly your responsibility. Deepgram is the exception, because HyperWhisper adds
mip_opt_out=trueto every request from the app. - Error reports: these hold no audio and no text. To stop them, turn off Error logging (macOS), Send error reports (Windows), or Send privacy-filtered crash and performance diagnostics (Linux) in Settings → General.
Related documentation:
