Summary
iWatchUWatch is a Chrome extension, a small relay server and an account service. Joining a room requires an account; your e-mail address, a hash of your password and your subscription status are kept in a database.
Sync itself keeps no records. The video you watch never leaves your browser; only small JSON messages for sync and chat pass through the relay server. Chat is never stored on the server, who watches what is never recorded, and a room is dropped from memory when the last person leaves.
Nothing is sold or handed to ad networks or analytics services. This website runs no analytics, advertising or tracking code.
Single purpose
The extension has one purpose: to play the same video at the same time in more than one browser, and to let the people in the room chat while doing so. The account layer has one purpose: to know who has a subscription and open room access accordingly. Every piece of data handled is used for those two purposes only.
Account data
When you open an account, the account service's database keeps:
| Data | Why | Legal basis |
|---|---|---|
| E-mail address | Identity at sign-in, verification and password-reset links, subscription notices; the key for adding friends — another member who knows your address can send you a request, and sees the address if you accept | Performance of contract |
| Hash of your password | To verify sign-in. The password itself is never stored; an argon2id hash is kept and cannot be reversed | Performance of contract |
| Display name | So people in a room see who you are | Performance of contract |
| Language choice | The language of e-mails and the interface | Performance of contract |
| Subscription status and access end date | To decide whether room access is open | Performance of contract |
| Payment record: amount, currency, status, invoice link | Accounting and handling refund requests | Legal obligation |
| Session records: device label, created and last-used time | So you can see open sessions and drop them all if something looks wrong | Legitimate interest |
| Audit log: action name, time, a hash of the IP address, browser string | Detecting abuse and account takeover | Legitimate interest |
| Trial ledger: a salted hash of the e-mail address | Preventing a second trial on the same address. The address itself is not in this table | Legitimate interest |
IP addresses are never kept in plain text. The audit log holds only a hash: enough to tie a record to a user, not enough for someone reading the log to learn the address.
Card details never reach us. Payment is taken on the provider's own page. We hold only the amount, the status and the identifier the provider gives us.
Your friend list, friend requests and the people you block are also stored against your account. Who is online, in contrast, is held in memory only and never written to disk.
What is not collected
Having an account does not mean the following is collected. These are never collected:
- Browsing history or a list of the sites you visit.
- Video content, watch history, or any record of which video you watched.
- The text of chat messages. It passes through the server, is relayed, and is not stored.
- Any lasting record of who was in which room. That lives in memory only, while the room is open.
- Full name, phone number, address, date of birth or national ID.
- Card numbers or payment instrument details.
- Analytics, advertising or tracking data.
- Location data.
No cookies are used. Neither the extension nor this site writes a cookie. When you sign in on the site, the session key is kept in the browser's localStorage; that is not a cookie, it is never sent automatically, and it stays in that browser only. Signing out deletes it.
Messages that pass through the server
The extension connects to the server over WebSocket and sends the messages below. The server relays them to the other members of the room as they are; it doesn't process their content, it only tracks room membership and the last playback state.
| Message | Content | When |
|---|---|---|
join | Room code, display name | On entering a room |
heartbeat | Position, playing or not, clock, in an ad or not, seeking or not | Once a second during playback |
control | Action (play, pause, seek, rate, stall, ad started/ended), position, clock | When an action happens |
chat | Message text, at most 1000 characters | When a message is sent |
page | The host's page URL and title | Only from the host, when the page changes |
sync-ping | Local timestamp | 5 times on connect, then every 5 minutes |
The display name is a random name generated by the extension (like “Cheerful Panda”); if you change it, the name you typed is sent instead. The page URL is taken only from the person who created the room and shown to the other members as an “Open the video” suggestion.
What the server keeps
In memory, while the room exists: the members' connections and display names, who the host is, the host's page URL and title, and the last play/pause/seek command. The room is deleted entirely when the last member leaves. There is no persistent record, database or backup.
Application log: joins and leaves (room code, display name, member count), playback commands and the host's page URL are written to the log. Chat text is not logged. Logs are read only for debugging, rotated regularly, and not kept permanently.
Web server log: the web server in front of the relay (nginx) keeps a standard access log: IP address, time and request path. These logs are used for server administration and rotate regularly.
The server runs at relay.iwatchuwatch.com and is operated by the project's owner. You can point the extension at your own server in Settings › Server; in that case this section does not describe your server.
What is stored on your device
These live only in your browser, in Chrome's extension storage, and are never sent anywhere.
- Persistent (
chrome.storage.local): display name, last room code, server address and environment choice, auto-connect preference, language choice, theme (light/dark), chat toast preference. - Session only (
chrome.storage.session, cleared when the browser closes): chat messages (at most 200), and the id, URL and title of the tab holding the video.
When you remove the extension, Chrome deletes all of it.
Extension permissions
Chrome asks for the permissions below at install time. For each one, why it is needed and what it is not used for:
| Permission | Why it is needed | What it is not used for |
|---|---|---|
Access to all sites (<all_urls>) and the content script | To find the video element on the page you're watching, read its playback state (position, paused, ad class), and draw the sync button and chat toast over the video. All sites, because which site you'll watch on can't be known in advance. The script runs in all frames, because players are often inside iframes. | Reading page content, forms, cookies or passwords. On a page without a video element the script waits and sends nothing. |
sidePanel | The extension's interface opens in Chrome's side panel. | — |
storage | Keeping the preferences and session data above on your device. | Sending anything outside the extension. |
tabs | Knowing which tab holds the video; sharing the host's page URL and title with the room; switching to the right tab from “Open the video”. | Reading the content of other tabs. Only URL and title, only for the tab in the room. |
scripting | Injecting the content script into tabs that were already open when the extension was installed or updated. | — |
alarms | An alarm that fires every minute so the Manifest V3 service worker doesn't sleep and the WebSocket stays open. | — |
notifications | Showing a chat message as a Chrome notification (sender's name and message) while the panel is closed. | No other notification is ever sent. |
Retention and deletion
| Data | How long |
|---|---|
| Rooms and chat | Not stored. A room is dropped from memory when the last person leaves |
| Account record | While the account is open. Permanently deleted 30 days after a deletion request |
| Session keys | Refresh key 30 days; revoked immediately on sign-out or password change |
| Verification and reset links | 24 hours, or once used |
| Audit log | For the life of the account; when the account is deleted the user link is severed and the record is left anonymous |
| Payment record | As long as tax law requires. Even if the account is deleted, the amount and date remain with the identity link severed |
| Trial ledger | Permanent. Only a salted hash of the e-mail address; deleting an account does not delete this record, otherwise "delete and re-register" would be an endless trial |
| Server logs | Rotated regularly, not kept permanently |
When you delete your account, access stops immediately and open sessions are dropped. You can undo the deletion by signing in within 30 days; after that the record is permanently deleted.
Your rights
Under Turkish data protection law (KVKK no. 6698) and, where it applies, the GDPR, you can: learn whether your data is processed and ask for information about it, learn the purpose of processing, know the third parties it is transferred to at home or abroad, ask for correction if it is incomplete or wrong, ask for erasure or destruction, ask for those actions to be notified to third parties it was transferred to, object to a result reached solely by automated analysis, and claim compensation if you have suffered damage.
Two of those rights can be exercised in one step:
- Download your data: the account service exposes an endpoint that returns everything on your account in machine-readable form (
/me/export). The audit log comes through that export with the IP hash, not the plain address. - Deletion: you can close your account from the extension or the account page; the periods above apply.
For anything else, write via the contact page.
Legal basis: account and subscription data are processed to perform the contract, so no separate explicit consent is asked. Security records rest on legitimate interest, payment records on legal obligation.
Third parties
The relay server and the account service are run by the project's owner. Neither the extension nor this site contains an analytics, advertising or tracking SDK. This site's fonts are served from the site itself; no request goes to Google Fonts at runtime.
Two external services are used:
| Service | What for | What is sent |
|---|---|---|
| Payment provider | Subscription billing, invoices, customer portal | E-mail address and account identifier. Card details go straight to the provider and never reach us |
| E-mail delivery server | Verification, password reset and subscription notices | E-mail address and the message text |
The payment provider may act as the merchant of record for the sale; in that case it issues the invoice and its own privacy policy applies too. The provider's identity and contact details are on the distance sales agreement page.
Transfer abroad: the payment provider and the e-mail server may be located outside Türkiye. Such transfer is made because it is necessary to perform the contract.
Installing the extension from the Chrome Web Store is subject to Google's own terms.
Children
The extension is not directed at children and collects no personal data, including age.
Changes
If this text changes, the effective date at the top of the page is updated. A change that expands the data handled is also noted in the extension's release notes.
Contact
For questions, see the contact page.