Summary
iwatchuwatch is a Chrome extension plus a small relay server. There are no accounts and no database. The video you watch never leaves your browser; only small JSON messages for sync and chat pass through the server. Nothing is sold or handed to ad networks or analytics services. This website sets no cookies and runs no tracking code either.
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. Every piece of data it handles is used for that purpose only.
What is not collected
- E-mail, name, account details (there are no accounts).
- Browsing history or a list of visited sites.
- Video content, watch history, or any record of which video was watched.
- Analytics, advertising or tracking data.
- Cookies: neither the extension nor this site uses them.
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 “Neşeli 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 watch.gulucan.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, 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. |
Third parties
The relay server is operated by the project's owner. Neither the extension nor this site includes analytics, advertising or tracking SDKs. This site's fonts are served from the site itself; no request goes to Google Fonts at runtime. 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.