繁體中文 | English

Shinkansen Privacy Policy

Last updated: May 9, 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, PDF documents, and YouTube 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, glossary, blocked-word list, etc.) are stored in storage.sync, synced only between your own devices via the browser's built-in sync mechanism.

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 popup or settings 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.

4. Data Sent to Third Parties

Shinkansen's outbound network connections are limited to the following, and 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
api.github.com Check for new Shinkansen versions (release metadata only) No user data
open.er-api.com Fetch USD↔TWD exchange rate (to display API costs in TWD) No user data

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. 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).

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.

storage (local storage)

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

activeTab

Used to enable translation logic on the currently active tab when you trigger translation (content scripts are injected via the declarative content_scripts manifest field; no dynamic scripting permission is required).

alarms

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

webNavigation

Used to detect SPA navigation changes (so translation state can follow page transitions) and to support 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