繁體中文 | English

Shinkansen Privacy Policy

Last updated: September 14, 2026

TL;DR: Shinkansen does not collect, store, or transmit any personal data to our servers. All your settings and data live only in your own browser.

1. About Shinkansen

Shinkansen is a browser extension that translates foreign-language web pages, documents (PDF / EPUB / Word / TXT / Markdown / HTML / subtitle files), and YouTube and Google Drive video subtitles into your chosen target language (Traditional Chinese, Simplified Chinese, English, Japanese, Korean, Spanish, French, or German). Shinkansen performs translation through a translation engine you select; three engines are currently supported:

2. What We Collect

We do not collect any data. Shinkansen has no servers of its own and does not send any of your information to the developer. We do not use analytics tools, embed tracking pixels, or log user behavior.

3. Data Stored Locally

The following is stored in your local browser only and the developer cannot access it:

API Keys (Gemini / custom provider)

Your Gemini API Key and your custom-provider API Key are both kept in storage.local (not synced across devices) and used only to issue requests to the corresponding translation service. These keys are never transmitted anywhere except the endpoint you specified.

User Preferences

Translation-related settings (target language, UI language, model selection, temperature, auto-translate domains list, etc.) are stored in storage.sync, synced only between your own devices via the browser's built-in sync mechanism. The fixed glossary and blocked-word list are stored in storage.local (not synced across devices; move them with export / import on the settings page). On iOS, the app and the Safari extension on the same device share the API key and settings through an App Group; the data never leaves the device.

Translation Cache

Already-translated web page segments and document segments are cached in storage.local to avoid redundant API calls. By default, Shinkansen does not auto-clear the cache on extension version updates (to prevent users from losing data); you can manually clear the translation cache from the toolbar icon menu or the document-translation page at any time.

Usage Statistics

API call counts and token usage are recorded in your local browser's IndexedDB to power the usage charts on the settings page. This data never leaves your browser.

Instapaper link credentials (optional feature)

If you enable "Send to Instapaper" and link your account, Shinkansen stores an Instapaper access token (OAuth token) in storage.local (not synced across devices, not included in exports) and your account email in storage.sync. Your Instapaper password is only used at link time to exchange for the token, then discarded — it is never stored. The token is used solely to send page content to Instapaper when you trigger it.

Document-translation sessions and font cache

Sessions for EPUB / Word / text / subtitle-file translation (translations, your manual edits, the whole-document glossary, accumulated cost) are stored in your browser's local IndexedDB so you can resume after closing the page. This data is not affected by "clear translation cache"; it is deleted when you discard the document on the document-translation page. Fonts downloaded for translated PDFs in Simplified Chinese / Japanese / Korean are kept in the browser's Cache Storage and downloaded only once.

4. Data Sent to Third Parties

Shinkansen's outbound network connections are limited to the following. Apart from the once-a-day exchange-rate refresh, they are only initiated when the corresponding feature is used:

EndpointPurposeData sent
generativelanguage.googleapis.com Gemini API translation Your Gemini API Key, the text to be translated, and the translation system prompt
translate.googleapis.com Google Translate (key-free path) Text to be translated (no API Key, no identity)
Endpoint configured by you OpenAI-compatible translation (OpenRouter / Ollama / etc.) That provider's API Key, the text to be translated, and the translation system prompt
jimmysu0309.github.io Downloads the font used for translated PDFs (only when the target language is Simplified Chinese / Japanese / Korean and you translate a PDF; fetched once on first use, then kept in the browser cache) No user data, no document content
api.github.com Check for new Shinkansen versions (release metadata only; only builds installed manually from GitHub connect, at most once a day — store builds never do) No user data
open.er-api.com Fetch the USD↔TWD exchange rate (to display API costs in TWD; refreshed once a day in the background regardless of the currency setting) No user data
youtube.googleapis.com Google Drive video subtitle translation: re-fetches the caption file the player has already loaded The caption file URL, without login credentials
www.instapaper.com Send to Instapaper (optional, user-initiated) Your Instapaper access token, and the content, URL, and title of the current (translated) page. By default a short summary is generated with Gemini first (the article text is sent to Gemini; can be turned off in settings)

Data sent to the two Google endpoints (Gemini and Google Translate) is governed by Google's Privacy Policy and the Gemini API Terms of Service. When using a custom provider, your data is governed by that provider's own privacy policy and terms of service. When the Instapaper integration is enabled, page content is sent to Instapaper's own endpoint only when you actively click "Send to Instapaper" or press its keyboard shortcut, and is governed by Instapaper's own privacy policy. Please read the relevant terms before use.

5. What We Don't Do

Shinkansen does not:

6. Permissions

The extension requests the following browser permissions:

<all_urls> (access to all websites)

Translation needs to read and modify the text content of arbitrary web pages, which requires this permission. The extension only modifies a page when you actively trigger a translation (or visit a domain on your auto-translate list). Additionally, automatic local Chinese-variant conversion is on by default: pages in the opposite Chinese variant are converted in place with a built-in dictionary, with no network access; it can be turned off in the toolbar icon menu.

generativelanguage.googleapis.com / translate.googleapis.com

Network access to the Gemini API and Google Translate endpoints, declared explicitly. Declaring the permission alone does not initiate any connection — that only happens when you use the corresponding translation path.

www.instapaper.com

Network access to the Instapaper Full API endpoint, for the optional "Send to Instapaper" feature. No connection is made unless the feature is enabled and your account is linked.

storage (local storage)

Used to store settings, API Keys, the translation cache, and usage statistics.

alarms

Used to schedule service-worker idle wake-ups (e.g., maintaining translation streaming connections, periodic update checks, the daily exchange-rate refresh). It does not collect data in the background.

webNavigation

Used for cross-tab translation continuity (when you open a link from an already-translated page in a new tab, the new tab inherits the translation settings). Browsing history is not collected.

7. Data Security

Your API Keys live in the browser's local storage, protected by the browser sandbox. We recommend that you do not share your API Keys with anyone, and that you set appropriate usage limits on each Key in the corresponding service's dashboard.

8. Children's Privacy

Shinkansen is not designed for children under 13. We do not knowingly collect children's personal information.

9. Policy Changes

If this Privacy Policy changes substantively, the change will be announced alongside an extension update. You can always view the latest version on this page.

10. Contact

If you have any questions about this Privacy Policy, please reach out:

Twitter (X): @jimmy_su