Docs / Advanced / Privacy & data

Privacy & data

What Ditto does and doesn't send to the internet, what it stores on your machine, and what other apps can see.

The short version

Audio

When you record:

  1. The renderer captures audio with getUserMedia and MediaRecorder — the same APIs a website uses for a “record voice” feature.
  2. The audio is decoded, resampled to 16 kHz mono, and converted to 16-bit PCM in the renderer process.
  3. The PCM is sent to the main process over IPC as an ArrayBuffer.
  4. Main writes it to a temporary .wav file in %TEMP%.
  5. whisper-cli.exe reads the WAV, transcribes, prints the text to stdout.
  6. The temp .wav is deleted in the finally block of the IPC handler, immediately after transcription.

The audio never crosses a network boundary. The only time it touches disk is the temp WAV, which is removed right after use. If the app crashes mid-transcription, leftover WAVs are cleaned up by Windows’ temp folder maintenance.

Transcriptions

Same story. Once Whisper produces text, Ditto:

  1. Sets your clipboard to the text.
  2. Optionally simulates Ctrl+V into the active app.
  3. Optionally restores your previous clipboard content.

That’s it. The transcription is not logged to a file, not stored in a history, not sent anywhere. If you need it after the paste, copy it out of the target app.

Models

Ditto downloads Whisper models from HuggingFace’s CDN on demand:

The full URL pattern is https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-<size>.bin, served by HuggingFace’s standard CDN. They may keep their own access logs; that’s between you and HuggingFace.

Settings and other local data

Ditto stores everything related to your configuration in:

%APPDATA%\ditto\config.json

This is plain text JSON, managed by electron-store. You can open it in any editor to inspect or back up. The schema matches the DittoSettings type in the code.

What’s in there:

What’s not:

Telemetry, analytics, crash reports

There is none. Ditto does not include:

If a future release adds any of those, it will be opt-in and disclosed in the release notes.

Microphone permission

Windows treats microphone access as a sensitive permission. The first time Ditto records, Windows pops up a permission prompt. Ditto needs that to work — without it, no audio reaches the app.

You can review or revoke the permission at any time:

Ditto only uses the mic during an active recording. There’s no background listening, no wake-word detection, no continuous capture. The getUserMedia stream is requested when you press the shortcut and stopped the moment you press it again.

Clipboard

Ditto reads the clipboard only to snapshot it for the “Keep previous clipboard” feature, and only when both auto-paste and that option are on.

Ditto writes to the clipboard when transcription finishes — your text goes there before the simulated Ctrl+V (or as the only effect, if auto-paste is off).

That’s the entire interaction Ditto has with the clipboard. It doesn’t read the clipboard outside of recordings. It doesn’t store clipboard history.