繁體中文 | English
Last updated: May 9, 2026
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:
The following is stored in your local browser only and the developer cannot access it:
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.
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.
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.
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.
Shinkansen's outbound network connections are limited to the following, and are only initiated when the corresponding feature is used:
| Endpoint | Purpose | Data 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.
Shinkansen does not:
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.comNetwork 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.
activeTabUsed 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).
alarmsUsed to schedule service-worker idle wake-ups (e.g., maintaining translation streaming connections, periodic update checks). It does not collect data in the background.
webNavigationUsed 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.
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.
Shinkansen is not designed for children under 13. We do not knowingly collect children's personal information.
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.
If you have any questions about this Privacy Policy, please reach out:
Twitter (X): @jimmy_su