SubShadow — Privacy Policy
Last updated: 14 October 2026
SubShadow is a language-study app that reads the subtitles of what you're watching on your own media server and lets you look words up and save them for review. It is built to be private by default.
Summary
SubShadow does not collect any personal data and has no user accounts, no advertising, and no cross-app tracking. Everything you create in the app — your library activity, saved words, and review history — stays on your device.
Apart from talking to the media server you connect it to, only two things leave your device
on their own: anonymous, aggregate usage analytics (for example, how many people
finish onboarding or start a study session), which help us understand how the app is used and
improve it, and a small configuration file the app fetches from
subshadow.app at launch, which sends nothing about you or your media. The analytics
are not tied to your identity and can be turned off at any time in Settings → General →
"Share anonymous usage data." Details are in the sections below.
Two other things leave your device only when you ask for them: searching an external subtitle service sends the title of what you are watching to that service, and emailing support sends whatever you write plus a short diagnostics block. Both are described below.
Information stored on your device
All of the following is stored only on your device and is never transmitted to the developer:
- Media server connection details. The address (URL) of the Plex or Jellyfin server you choose to connect to is saved in the app's local preferences. Your server access token is stored securely in the iOS Keychain and is never written to logs or ordinary preferences.
- Your study data. Saved words, decks, and review history are kept in a local database on the device.
- Captured study media. When you save a word, the app can attach a still frame and a short audio snippet of the line it came from. These are copies of your own media, stored inside the app's private storage. SubShadow never uploads them anywhere. They can leave the device only if you export them yourself — see "Exporting your data" below.
- Subtitle-service credentials. If you choose to use a subtitle source (see "Network connections"), the API key or account details you enter are stored securely in the iOS Keychain.
- On-device media. If you use SubShadow without a media server, the video files you bring in — over Wi-Fi transfer, or by dragging them in with the Files app — are stored in the app's own folder on your device. SubShadow never uploads them anywhere. Because that folder is exposed to the Files app, you can browse, add, and delete these files yourself at any time, and deleting the app removes all of them.
- App preferences. Settings such as subtitle language, furigana, and review options are stored in the app's local preferences.
Device backups. If iCloud Backup or a computer backup is turned on for your device, iOS includes this data in it, as it does for any app — on-device videos and captured study media included. That backup belongs to your own Apple Account or computer; SubShadow has no access to it.
Deleting the app removes all of this data except what is in the Keychain. iOS can keep Keychain items after an app is deleted, so your server access token and subtitle-service credentials may still be there if you reinstall. To remove them too, use Sign out (or Disconnect) under Settings → Connection and clear the subtitle-source fields under Settings → Subtitles before deleting the app.
Anonymous usage analytics
To understand how SubShadow is used and to improve it, the app collects anonymous usage analytics through TelemetryDeck, a privacy-focused analytics service.
What is collected: anonymous records of in-app events — for example, that a paywall was shown, that a study session was completed, or that a word was saved — along with simple counts and durations (such as the number of cards reviewed or seconds watched). Each record carries a small set of non-identifying properties: whether the user has a paid plan, which plan it is and whether it is in a free trial, which media backend is in use, and the app version. Purchase events also record which plan was chosen and whether it began with a free trial — never a price paid, an Apple Account, or a receipt.
What is not collected: none of your personal or media content ever leaves your device for analytics. We do not collect or transmit your media library, the titles you watch, subtitle text, the words you look up or save, your server address or access token, your name, or your email. We do not collect the device advertising identifier (IDFA) and we do not track you across other apps or websites.
How it stays anonymous: events are associated with a randomly generated identifier created on your device and combined with a one-way hash. This identifier cannot be linked back to you, to your Apple Account, or to your activity in any other app. TelemetryDeck processes this data on servers in the European Union.
Your control: analytics are on by default but are entirely optional. You can turn them off at any time in Settings → General → "Share anonymous usage data." Switching it off sends one last anonymous event that records the switch, so we can count opt-outs; after that, the app sends nothing.
Network connections
SubShadow only makes the network connections required to do its job:
- Your media server. The app connects to the Plex or Jellyfin server you configure — on your local network or wherever you point it — to detect what's playing and fetch its subtitles. This connection is between your device and your server. With Plex, the app can also send playback commands (pause, play, seek) straight to the Plex player you're watching on, such as your TV, over your local network and with your server's access token, as Plex's own remote apps do.
- Plex account services (Plex only). When you connect a Plex server, the
app may contact
plex.tvusing the token you provide, to discover your servers and players. This is a connection to Plex, not to the SubShadow developer. - Subtitle sources (only when you use them). If your media has no usable
subtitle track, you can search an external subtitle service from inside the app. A search is
always something you start. Two sources are available:
Jimaku (
jimaku.cc), where you create a free account and paste your own API key (until you do, Jimaku can't be searched); and OpenSubtitles (api.opensubtitles.com), which works with no setup: the app identifies itself with its own key. Signing in with an OpenSubtitles account is optional and only raises your daily download limit; if you do sign in, your username and password are sent to OpenSubtitles to obtain an access token, exactly as they would be on their website. To find a match, a search sends what identifies what you are watching — its title or its catalogue ID (TMDB or AniList), and where relevant its year and the season and episode number — to that service. This is the one case where information about your media leaves your device, and it goes to the subtitle service you chose — not to the SubShadow developer. - Dictionary data. The Japanese–English dictionary ships inside the app. The app does not download dictionary data in this release.
- App configuration. At launch the app fetches a small configuration file
from
subshadow.app. The request sends no personal data and no information about you or your media; it exists so app-level settings can be corrected without an App Store update. - Anonymous analytics. When enabled (the default; see "Anonymous usage analytics" above), the app sends anonymous event records to TelemetryDeck. No personal or media content is included.
Apart from the anonymous analytics described above, no personal information, media content, or diagnostics logs are sent to the developer, and nothing is sent to any advertising service.
Exporting your data
Your data is yours, and SubShadow can hand all of it back. Every export below is something you start, and the file goes only where you send it in the iOS share sheet — SubShadow has no account, no sync, and no server of its own to upload it to.
- Vocabulary (
.tsv). A plain text file: expression, reading, meaning, and example sentence. - Anki deck (
.apkg). A standard Anki package. This one contains your captured study media — the actual still frames and audio snippets attached to your cards are copied into the file, so the cards work after you import them into Anki. - Backup (
.sqlite). Your saved words, decks, review history, statistics and known words, and which subtitle file goes with which video. It does not include your settings, downloaded subtitle files, or captured media.
A note on the media in an exported deck. Those frames and audio snippets are short excerpts of whatever you were watching. Keeping them for your own study — on your phone, in your own Anki collection, in your own backups — is what they are for. Publishing or selling a deck that contains them is a different thing entirely, and is very likely to infringe the copyright in the source material. Please don't. SubShadow limits every capture to a single frame and at most 15 seconds of audio, and shows you a reminder the first time you export a deck.
Permissions
- Local Network. iOS asks for permission to access devices on your local network, for two reasons. To reach your media server — the app uses this only to connect to the Plex or Jellyfin server you configure and, with Plex, the player you're watching on (to pause, play, and seek it). And for Wi-Fi transfer: while that screen is open, the app runs a temporary web server on your device so a computer on the same network can send video files to it, and advertises that server over Bonjour so your browser can find it by name. The transfer server accepts connections only from your local network, only while the screen is open, and stops as soon as you leave it. It only receives files — it never sends anything off your device.
Diagnostics
SubShadow includes an optional in-app log view (Settings → Help & Support → App Logs) to help you troubleshoot connection issues. These logs stay on your device and are never sent automatically. Server tokens, API keys, and other credentials are removed from every log line before it is recorded, so they never appear in the log at all.
The one way a log can leave your device is if you choose to attach it to a support email (Settings → Help & Support). If you do, it is redacted first — server addresses are masked, and media titles, subtitle text, and the words you have looked up are withheld — and you can read the message before sending it. Nothing is sent unless you tap send.
Children's privacy
SubShadow does not collect personal information from anyone, including children. The anonymous usage analytics described above contain no personal information.
Third-party services
Any third party that receives data from SubShadow on our behalf — today, only TelemetryDeck — provides the same or equal protection of that data as this policy describes.
- TelemetryDeck receives the anonymous usage analytics described above. See TelemetryDeck's own privacy policy at https://telemetrydeck.com/privacy/.
- Jimaku and OpenSubtitles receive a subtitle search only when you run one, as described under "Network connections". Their own policies apply to what they do with it: jimaku.cc and opensubtitles.com.
- The bundled Japanese–English dictionary and names dictionary are derived from the JMdict and JMnedict dictionary files, which are the property of the Electronic Dictionary Research and Development Group (EDRDG) and are used in conformance with the Group's licence. This is attributed in the app under Settings → About.
Changes to this policy
If this policy changes, the updated version will be posted at this page with a new "Last updated" date.
Contact
Questions about this policy can be sent to: support@subshadow.app
If you contact us from inside the app (Settings → Help & Support), the message is prefilled with a short diagnostics block — app version, iOS version, device model, which media server type you use, and your plan. It contains no server address, no access token, and none of your saved vocabulary. You can see and edit everything before it is sent, and it is sent from your own mail app.