Privacy Policy
Nothing about what you watch leaves your Mac.
Private Captions generates live, translated captions for whatever's playing on your Mac. This page explains, in full, what that requires and what it doesn't — there's no shorter version hiding behind it.
Summary
Private Captions has no server, no user account, and no analytics. Every model, every transcription, and every translation runs on your Mac. Speech models are downloaded from Hugging Face's public model repository. Apple's services handle translation language downloads and App Store subscription purchases and validation. Your captured audio and captions are not uploaded by Private Captions. We could not see what you've captioned even if we wanted to.
The rest of this document is the detail behind that sentence.
What Private Captions does
Private Captions reads audio from a source you pick, then transcribes it, translates it into your chosen subtitle language, and displays both as a floating caption overlay. Two kinds of source are available:
- System audio — whatever your Mac is already playing: a movie in Safari or VLC, a call in FaceTime, Zoom, Microsoft Teams, or an iPhone Mirroring phone call. This uses Apple's ScreenCaptureKit framework, optionally filtered to just one app. macOS will ask you to approve Screen & System Audio Recording access before any of this can start.
- Microphone — speech in the room, picked up by your Mac's built-in or connected microphone, for captioning a live conversation rather than app audio. macOS will ask you to approve Microphone access separately before this source can be used.
Private Captions cannot capture from either source without the corresponding explicit, revocable macOS permission, and it does not access your camera under any circumstance.
If you use a call-audio source (FaceTime, Zoom, Teams, or a phone call via iPhone Mirroring), you are transcribing and, if History is on, storing the other participant's speech locally on your Mac — and if the optional Save Audio setting is also on, an actual audio recording of that call, not just its transcript. That's between you and the people you talk to — consider letting them know, and be aware that many places legally require every participant's consent to record or transcribe a call. Private Captions shows a confirmation before Save Audio can be turned on for exactly this reason.
Audio & speech recognition
Captured audio — from either source — is held in memory just long enough to transcribe it, then discarded, unless you turn on the optional Save Audio setting (see "What's stored, and where" below), in which case the original spoken-language audio behind each caption is written to a local file instead. Either way, Private Captions never transmits audio anywhere. Transcription runs on Whisper: an open-source Core ML speech model that runs entirely on your Mac via Apple Silicon's Neural Engine. The model file itself (not your audio) is downloaded once from Hugging Face's public repository and then reused from disk on every later launch — no further network access.
Translation
Subtitle translation uses Apple's built-in Translation framework. Per Apple's own documentation, translation runs on-device once the relevant language pair is downloaded; Apple may log operational metadata such as which language pair was requested, but Private Captions never sends the caption text itself anywhere outside Apple's on-device translation pipeline. See Apple's Privacy Policy for how Apple's own frameworks handle this.
What's stored, and where
Everything Private Captions keeps stays in your Mac's local, sandboxed app storage — never in iCloud, never synced, never uploaded:
- Caption history — if you leave "Save History" on, each Start–Stop session's transcribed and translated lines are saved to a local file inside Private Captions' app container so you can review or delete them later.
- Saved audio (optional, off by default) — only available when History is also on. If you turn on Save Audio, the original spoken-language recording behind each caption is saved as a local audio file alongside its transcript and translation, so you can play it back later from History. This uses more disk space per entry and is never uploaded, synced, or transmitted anywhere.
- Preferences — your chosen languages, engine, subtitle appearance, and caption-window position, stored via standard macOS app preferences.
- The downloaded speech model — a multi-hundred-megabyte file cached locally so it's never re-downloaded.
Use Clear All in History to delete saved transcripts and recordings before uninstalling. Removing the app alone may leave local app data on your Mac.
Network access
Network access is used to download Whisper speech models from Hugging Face. Apple also provides translation language downloads and App Store subscription services. These services may require an internet connection; caption audio and text are processed locally. Private Captions does not operate a server or send analytics or diagnostic reports to its developer.
What we don't collect
To be explicit, Private Captions has no mechanism to collect any of the following, because it has nowhere to send them even if it tried:
- No account, sign-in, or device identifier
- No analytics or advertising SDKs
- No crash or diagnostic reporting to us or any third party
- No copies of your captions, translations, or audio, ever leaving your Mac
Your controls
You can turn history off entirely with the Save History toggle before starting captions. The separate Save Audio toggle (only shown when Save History is on) is off by default and requires confirming a one-time consent notice each time you turn it on. Existing sessions can be renamed, deleted individually, or cleared all at once from the History tab — deleting a session or clearing History also deletes any audio files saved for it. Screen & System Audio Recording, Microphone, and any other system permission can be revoked at any time in System Settings → Privacy & Security.
Children's privacy
Private Captions is not directed at children and does not knowingly collect information from anyone, of any age — there is simply no collection mechanism to distinguish between users in the first place.
Changes to this policy
If Private Captions' data handling ever changes, this page will be updated and the effective date above will change accordingly. Material changes will also be noted in the app's release notes.
Contact
Questions about this policy or how Private Captions handles data can go to contact@pinenode.com.