OmniSubs · Browser Extension
Subtitles, on any video.
Generated, translated, and rendered back over the player — without leaving the page.
01 · How it works
Five steps. Roughly real-time.
- 1
Open the side panel
Pin the OmniSubs icon to your browser toolbar and click it on any page that has an HTML5 video element. The side panel lists every video it found in the active tab — including videos sitting behind tabs, carousels, and lazy-loaded sections.
- 2
Pick a target language and tone
Choose any of 73 target languages, then pick a tone: natural, formal, casual, technical, or literal. Re-translating is free for 24 hours — change tone or language without re-running transcription.
- 3
Click start
The extension captures the video’s audio in 10-minute chunks and uploads each chunk to omnisubs.app/api/transcribe. The original video file is never uploaded.
- 4
We transcribe and translate
OpenAI Whisper transcribes each chunk; Google Gemini translates the resulting cues into your chosen language while preserving timestamps. Hallucinations and Whisper’s common boilerplate phrases are filtered out before subtitles ever leave the server.
- 5
Subtitles appear over the player
The finished VTT file is rendered back as a transparent overlay anchored to the video element. Refreshing the page or navigating within the same site re-applies the cached subtitles automatically.
02 · Where it works
Open web, yes. DRM, no.
The extension can caption any HTML5 video element whose stream isn’t protected by Encrypted Media Extensions. We refuse DRM-protected players up front rather than letting users discover it the hard way.
✓Compatible
- YouTube
- Vimeo
- Dailymotion
- Crunchyroll
- Tubi
- Pluto TV
- Freevee
- Kanopy
- Hoopla
- Viki
- ARTE
- NHK World
Plus most personal sites, university archives, news sites, public-broadcaster catch-up players, and any video element with crossorigin="anonymous".
✕Refused (DRM)
- Netflix
- Disney+
- Amazon Prime Video
- Apple TV+
- Max (HBO)
- Hulu
- Paramount+
- Peacock
- Crave
- Stan
- Now TV
- TVING
- Wavve
- Disney+ Hotstar
- iQiyi
- Youku
For DRM-protected catalogs, upload your own copy at omnisubs.app/upload instead — the same pipeline runs on a file you already own.
03 · Privacy
Selected media only. No hidden tracking.
- Only selected audio, subtitle text, subtitle files, and job metadata leave your browser. Video files are never uploaded in full.
- No ads or tracking in the extension. No third-party analytics, ad trackers, telemetry pings, or remote code. The full policy names every processor and host involved.
- User-initiated work only. Page/video data goes to OmniSubs only when you start a job, search/download subtitles, or submit a report. The side panel never reads passwords, form fields, or page text.
- DRM streams are refused, not bypassed. Encrypted Media Extension videos (Netflix, Disney+, Prime Video, etc.) are detected up front; the extension surfaces a clear refusal and stops.
- Auth tokens stay in session storage. Bearer tokens live in chrome.storage.session and are cleared when the browser closes. They are never shared with websites you caption.
- You own your transcripts. Generated subtitles are stored under your OmniSubs account and can be deleted at any time from your generations history.
04 · Permissions
Why each one is requested.
Chrome shows these at install. Here is what every permission is used for, line by line.
storage- Saves your language and tone preferences, applied subtitles per tab, and the session-only auth token.
activeTab+scripting- Reads video elements in the tab you are actively using and injects the subtitle overlay onto that page. No cross-tab access.
alarms- Refreshes the short-lived auth token every 30 minutes so long jobs don’t stall partway through.
webNavigation- Clears the per-tab video registry when you navigate so stale thumbnails from the previous page don’t show up in the side panel.
webRequest- Observes (does not modify or block) media-asset network requests so we can recognize HLS / DASH manifests and progressive MP4s sitting alongside video elements.
sidePanel- Hosts the extension UI as a side panel that stays open while you interact with the player.
- Host permission
<all_urls> - Detects video elements on whatever site you choose to caption. Each tab is handled in isolation; there is no cross-site correlation, and page/video data is sent to OmniSubs only when you start a job, search/download subtitles, or submit a report.
