CoWatcher (Smart Watch History, AI Dual Subtitles, Real-Time Translation, Language Immersion & More)
English Documentation | 简体中文文档 | 📖 Detailed Popup UI Guide | 🌟 Contributors & Sponsors
We support:
- Subtitle translation for Netflix & TVer & YouTube
- Official bilingual subtitle display from supported platforms
- Support YouTube ASR(automatically generated) subtitles merging into ordinary subtitles.
- Background vocabulary detection with seamless Anki learning workflow integration
- Character name consistency enforcement and manual glossary editing
- Subtitle translation caching so your tokens are never wasted on rewatches
- Native-grade subtitle typography: horizontal, vertical, and pixel-perfect native rendering
- Multi-tab support: stream across multiple tabs and platforms simultaneously without conflict
- Free traditional translation services (Google Translate), local Ollama models, and cloud OpenRouter models
- One-click vocabulary saving for effortless language acquisition
- Instant hover/click word definitions without leaving the player
- Track your watching, to know how much time you spent on it
- Support for both Chrome and Firefox
Your CoWatcher!
- ⚡ Fast Translation Model:
- Compatible with lightweight, efficient models such as
translategemma:4b. Delivers smooth, real-time local subtitle translation on mainstream GPUs (e.g., RTX 2070 or equivalent).
- Compatible with lightweight, efficient models such as
- 🧐 Supervisor Model:
- Compatible with high-reasoning models such as
gemma4:e2b/gemma4:e4b. - Character & Alias Consistency Audit: Inspects translations in micro-batches, dynamically extracting new character names, nicknames, honorifics, and aliases (e.g.,
Shou-chan->Shoko Nishimiya), rectifying naming discrepancies, and maintaining a unified glossary.
- Compatible with high-reasoning models such as
- Cross-Episode Memory Inheritance: Character names and terminology established in Episode 1 automatically carry over to Episode 2, Episode 3, and beyond without manual setup.
- Language-Scoped Context Isolation: Stored independently per
showName_targetLanguage(e.g., English context vs. Chinese context never cross-contaminate), allowing seamless target language switching with dedicated show memories. - Visual Glossary Management: View and edit character aliases in the extension popup. Manually add, edit, delete entries, or reset show memory at any time (also supports AI-driven character name extraction from Wikipedia and multilingual background synopses).
- 15 Target Translation Languages: English, 简体中文 (Simplified Chinese), 繁體中文 (Traditional Chinese), 日本語 (Japanese), 한국어 (Korean), Español (Spanish), Français (French), Deutsch (German), Italiano (Italian), Português (Portuguese), Русский (Russian), Tiếng Việt (Vietnamese), Bahasa Indonesia, ภาษาไทย (Thai), and العربية (Arabic).
- 4 UI Languages: Full interface localization for English (default), 中文 (Chinese), 日本語 (Japanese), and 한국어 (Korean).
- Global Toggle Shortcut (
Alt + T): Instantly toggle AI subtitle translation on or off while watching Netflix or TVer. - Native Player Control Bar Button: Embedded directly into the native player control bar (
AI Sub ON/AI Sub OFF) with single-click toggling and live status indication. - Zero-Friction Native-Style Embedding: Hides default raw subtitles while rendering subtitles in the platform's native typography and layout (including vertical subtitles), creating an experience that feels completely built-in.
- Smoothly handles episode transitions, autoplay recommendations, and next-episode binging without losing the subtitle translation flow.
- Operates automatically in the background with zero need for manual page refreshes.
- Deep Netflix Ad-Supported Plan Support: Intelligently monitors commercial breaks and synchronizes timeline offsets, ensuring subtitles stay perfectly aligned after ad breaks without drifting.
- Cloud Platform Access: Connect directly with your personal OpenRouter API Key to leverage state-of-the-art models worldwide without local hardware constraints.
- Out-of-the-box support for free Google Translate, requiring zero model setup or API configuration.
- Automated Vocabulary Detection: LLM identifies unfamiliar words and key terminology in real time; save words with one click for effortless Anki deck export.
- Primary / Secondary Subtitle Swap: Swap original and translated subtitles with a single click to tailor for intensive reading or active listening.
- Your tokens are never wasted: translations are cached based on the active LLM. When rewatching episodes or jumping back, previous translations load instantly.
| Action | Shortcut / Control | Description |
|---|---|---|
| Toggle Subtitles | Alt + T | Toggle AI subtitle translation on/off with on-screen toast feedback. |
- Download the
cowatcher-extension.zipfrom the latest release in github. - Extract the zip file and it will generate a new folder/dir called
cowatcher-extension. - Open Google Chrome and navigate to:
chrome://extensions/. - Enable Developer mode in the top-right corner.
- Click Load unpacked in the top-left corner.
- Select the project directory
cowatcher-extensionproduced under step2. - Confirm that
CoWatcheris loaded and active.
☕ Love this project? Buy me a coffee on Ko-fi to help us cover developer fees and bring CoWatcher to the official Chrome Web Store!
Ensure Ollama is installed and running locally:
ollama servePull the recommended translation and supervisor models:
# 1. Fast Translation Model (Recommended)
ollama pull translategemma:4b
# 2. Supervisor Model (Recommended)
ollama pull gemma4:e2b- Obtain an API key from openrouter.ai/keys.
- Open the extension popup, and select OpenRouter in the AI Service Provider dropdown.
- Paste your API key and click Connect.
- Select your preferred models:
- Translation Model: Recommended
deepseek/deepseek-chat(cost-effective with exceptional cinematic quality) orgoogle/gemini-2.5-flash(lightning-fast). - Supervisor Model: Recommended
google/gemini-2.5-flash. - Or enter any custom OpenRouter model ID!
- Translation Model: Recommended
- Navigate to any Netflix or TVer video playback page.
- In the native audio/subtitles menu, ensure an original subtitle track is selected (e.g. English [CC] or the video's original language).
- Click the extension icon in the Chrome toolbar:
- Confirm that the status indicator shows 🟢 Connected.
- Review or fine-tune models, target language, and display preferences.
- For a comprehensive breakdown, consult the Detailed Popup UI Guide.
- As playback begins, bilingual subtitles will appear seamlessly at the bottom; toggle anytime with
Alt + T.
- Support additional streaming platforms.
- Watch history & data synchronization: integrate with our companion tracking app to curate personal viewing archives and social sharing.
- Multi-user synchronized co-watching (Watch Party / Co-Watching): watch together with friends remotely with synchronized playback and shared bilingual subtitles.
- Audio-based translation fallback: audio-to-text (STT) for videos without native subtitles, with graceful fallback to real-time interpretation.
This project welcomes any pull requests, forks, or issues(bugs or feature requests)! Read contributing and architecture for more information!
Important
All code contributors, documentation writers, bug reporters, and sponsors will be permanently acknowledged in our Contributors & Sponsors Roll and across official documentation!
If this project enhances your streaming and language learning experience, consider buying the author a coffee! Every bit of support fuels continued development and maintenance.
👉 Support on Ko-fi (https://ko-fi.com/sfbb49898)
This project was inspired by:
This project is licensed under the MIT License.