DuoDub

Privacy, in plain words

Updated 5 October 2026.

DuoDub lets two people watch the same film in two languages, each in their own headphones. This is everything it touches, and everything it doesn’t.

What DuoDub does

It presses the streaming site’s own play, pause and seek controls, and it tells Chrome which headphones each window should play through. That is all it does to the film.

It never records, copies, captures or re-sends the picture or the sound, and it never gets around copy protection. No audio or video ever leaves your browser.

The microphone

Chrome hides the names of your headphones from websites until the microphone is allowed. DuoDub asks for it only so that Chrome will show those names, and turns the microphone off the moment they appear. Nothing is recorded, listened to or sent anywhere.

Chrome gives that permission to netflix.com, the page DuoDub asks from, not to DuoDub. Chrome keeps it until you remove it, even after you remove DuoDub, so netflix.com could use the microphone later without asking again. Chrome shows a red dot on the tab whenever a page uses the microphone. DuoDub itself turns the microphone on only when you click Continue or Try again on its microphone card, and turns it off at once.

DuoDub can’t remove the permission for you. To remove it, do this in each of your two windows: open netflix.com, click the icon to the left of the address, open Site settings, and set Microphone to Ask. If you still use DuoDub, it will ask again the next time it needs the names.

What the two windows tell each other

To stay together, your two windows send each other short control messages. That is all they send:

They never contain sound, pictures, passwords or your viewing history.

How the messages travel

They go through a relay: Supabase Realtime, a message service run by Supabase in the European Union (Frankfurt). It passes each message straight on to the other window and does not keep it. Like any internet service, Supabase sees the internet address each window connects from, and keeps ordinary server logs under its own privacy policy. When neither of your windows is in use, each closes its connection to the relay and checks in about once a minute, so it can still join when the other one starts watching.

Every message is signed with a key that only your two windows know. The relay could read what a message says, which is only the list above, but nobody without the key can change a message or fake one, so nobody else can press play or pause in your windows.

To keep strangers off the relay, each window may first ask our server for a pass to its own channel. A pass works for one hour, on that one channel only. To get one, the window sends a code made from your pairing key that can’t be turned back into the key, or, while you pair, the six-digit number. Like our checkout, the server counts these requests for a day, by a salted hash of the internet address they come from (never the address itself), by channel and by number. It keeps nothing else.

DuoDub’s settings file

About once an hour, DuoDub reads a small settings file from duodub.app. It lets us pause DuoDub or ask for an update if a version goes wrong, tune how the two windows keep together, show a short note about a known problem, and move your windows to another relay we run. DuoDub takes a relay move only when it carries our signature, so nobody who changes the file can send your messages elsewhere. The request carries nothing about you or what you watch. Like any website, duodub.app, hosted by Vercel, sees the internet address it comes from. If DuoDub can’t reach the relay for a minute, it also asks duodub.app whether the relay is down for everyone, so it can tell you it isn’t your Wi-Fi. That request carries nothing about you either.

The pairing link

The link you copy in the first window carries that key after the # sign. Browsers keep everything after # to themselves and never send it to a server, this website included. The pairing page only checks that the link arrived whole. It has no analytics, sets no cookies, and loads nothing from anywhere else. A window that is already paired never switches to another pairing from a link; you forget the old pairing first.

A new window joins only after someone clicks ‘Pair this window’ on DuoDub’s own page in that window, and once your two windows are paired the link lets no other window in. Keep the link to yourselves all the same: anyone who has it could read the messages listed above. If you shared it by mistake, forget the pairing in DuoDub’s Details and pair again, which makes a new key.

If you pair with the six-digit number instead, the first window asks you to click the word that the other window shows, then sends the key through the relay encrypted for that window alone: nobody else on the relay can read it, even if they saw the number. The number stops working when your windows are paired, or after thirty minutes. The link never puts the key on the relay at all, so it is still the more private way to pair.

Buying DuoDub

If you buy DuoDub on duodub.app/buy, the payment form there comes from Stripe, and the sale goes through Link, Stripe’s checkout, which takes the payment and sends the receipt under its own privacy policy. Stripe’s script on that page may set its own cookies to prevent fraud. To open the form, the page tells our checkout service which button you pressed, and nothing else.

When you have paid, Stripe brings you back to duodub.app/thanks. That page first takes Stripe’s reference for the payment out of the address bar, then asks our licence service for your key with it. If the service doesn’t answer, the page keeps that reference in the tab’s own storage, which Chrome clears when you close the tab, and asks again for a while. The service makes your key, shows it there, and emails it to the address you gave at checkout through Resend, an email service, under its own privacy policy. It reads that address from Stripe only to send the email, and does not keep it.

If DuoDub is already in that Chrome, the thanks page shows an “Add to DuoDub” button. Only when you click it does DuoDub take the key from the page and check it, as described under “Your licence key”. This happens inside your browser: DuoDub tells the page only that it is there, whether the key was added and, if not, why (for example, that another key already works here). The page sends none of that anywhere.

For each key, our licence service keeps only a hash of the key (never the key itself), its last 4 characters, whether it is active or refunded, Stripe’s references for the payment and when the key was emailed; and for each window that uses it, a random id, the window’s random name and when it last checked. It stores no names and no email addresses. While DuoDub waits for the Chrome Web Store, we use the email address Stripe holds for your purchase once, to send you the install link. If our licence service was down when you paid, we also use it once to send you your key.

Our checkout and licence services run on Supabase, in the same place as the relay. To stop abuse, they count requests for a day under a salted hash of the internet address they come from, never the address itself. Keys bought through Gumroad, our first store, work as below.

Your licence key

When you enter a key that starts with DUO-, or add it with “Add to DuoDub” on the thanks page, DuoDub sends it, with this window’s random name, to our licence service to check it, and again about once a day. Nothing else is sent with it: no names, no titles, nothing about what you watch. One key works in up to 10 windows. Removing the key in Details frees its place, and a window unseen for 30 days stops counting.

If your key came from Gumroad, DuoDub sends it, with DuoDub’s product id, to Gumroad to check it, and again about once a day. Nothing else is sent with it. Gumroad counts how many windows have used the key and, like any internet service, sees the internet address the check comes from, under its own privacy policy. Gumroad’s answer also carries details of your purchase, such as your email; DuoDub reads only whether the key works and that count, and neither keeps nor sends the rest. Removing the key in Details forgets it on this computer. Gumroad’s count stays as it is, so if the key ever says it is in use in too many windows, write to us and we’ll free a place.

Your other window gets the key over the signed messages above and checks it the same way. Like everything in those messages, the relay could read it.

What stays on your computer

DuoDub keeps its settings in Chrome on your computer: the pairing key, the headphones and language each of you chose, how far setup has got, when your free trial started and how much of it is used, and your licence key, whether you entered it or it came from your other window, with whether it works, when it was last checked, and a random name for this window, such as “DuoDub k3f9qa”, which leaves your computer only with a DuoDub key, to our licence service. “Forget this pairing” in Details removes the pairing key. Removing DuoDub from Chrome removes everything it keeps. It does not remove the microphone permission Chrome keeps for netflix.com: see The microphone.

Asking for help

“Copy a report for support” in Details puts technical facts about your two windows on your clipboard: the DuoDub and Chrome versions, settings, timings, error codes and language codes. It leaves out names, titles, Netflix addresses and headphone names, and says only whether both windows play the same title, never which one. Nothing is sent unless you paste it into a message to us yourself. Please email it to us rather than posting it in public.

“Contact us” in Help opens a new email to us in your own mail app, with one line about your setup, such as the DuoDub and Chrome versions, and copies the same report for you to paste in. Nothing is sent until you send that email yourself.

No accounts, no tracking

There is nothing to sign up for. DuoDub has no analytics, no advertising and no tracking. We keep no record of what you watch, and we sell or share nothing beyond what this page describes.

Questions

Write to support@duodub.app.