Chrome extension · free · no card required

The same video, at the same second, on separate computers.

One of you creates a room and shares the code; the other joins with it. The video starts and pauses at the same moment on both sides. It works on any page with a video; it isn't tied to one service.

You
Other side
Two computers side by side: the same video plays on both at the same frame, pauses on both at the same moment, and shows the same timecode. The extension's purple button sits over the video; the dashed line between them is the once-a-second heartbeat.
people
2
latency
41 ms
drift
0.08 s
Setup

Three steps, one code

iWatchUWatchRoom code
Room codek7mq2xw4

Waiting for the other side…

  1. Create a room

    The extension generates an 8-character code, like k7mq2xw4. The letters l and o and the digits 0 and 1 are left out because they get confused.

  2. Send the code

    The other person picks “Join a room” and types it in. A wrong code doesn't open an empty room; it says “No such room”.

  3. Start together

    Press the purple button over the video. After a 3-second countdown both sides start at the same moment, from the same second.

heartbeat interval
1 s
rate nudge
2–5%
stall threshold
700 ms
people per room
5
viewing records
0
Sync

They drift. It closes the gap.

Every second each side reports its position. For a gap between 50 ms and 1 second, the side that's behind speeds up by 2 to 5 percent; you can't hear it.

Beyond 1 second it seeks. If one side buffers for more than 700 ms, the other pauses too; they resume together.

The gap grows to 0.41 s, the side that is behind speeds up to 1.04×, and once the gap drops under 0.02 s the rate returns to normal.
Pause together
21:04:17.002  heartbeat                        drift=0.312 age=38
21:04:17.004  nudge-started                    drift=0.312 rate=1.031
21:04:18.001  heartbeat                        drift=0.281 age=41
21:04:19.003  heartbeat                        drift=0.250 age=39
21:04:20.998  nudge-rate                       drift=0.187 rate=1.020
21:04:30.412  nudge-ended
Six lines from the “Copy log” output

More than play and pause

Ads

YouTube, JW Player and Video.js add a class to the player during ads; the extension polls for it every 400 ms. If you're in an ad, the other video waits. When both are done, both resume.

Ad on the other side

Chat, even in fullscreen

With the panel closed and the video in fullscreen, an incoming message shows at the bottom right of the video for 6 seconds. With the panel closed you also get a Chrome notification.

On any page

It hooks the page's video element, not a service. It finds players hidden inside shadow DOM too. If the host is on another page, the panel offers “Open the video”; sync waits until you're on the same page.

Video foundUse this tab

Privacy and limits

Three of the questions people ask

Which sites does it work on? Does it work on Netflix?

It works on any page with a video element: YouTube, Vimeo, Twitch, news sites, corporate players and players embedded inside shadow DOM included. Netflix, Disney+ and Prime Video work too. The extension hooks the page's own player, and DRM protects the content, not the play/pause controls — the stream stays encrypted and untouched.

Does the video go through your server?

No. Everyone watches in their own browser with their own account. Only small JSON messages pass through the server: position, play/pause, chat. The host's page URL is sent so the others can be offered “open the video”.

Is it paid?

No. It is completely free right now: opening a room and joining one, with no card and no trial clock. If paid features come later, we will tell you by e-mail at least 60 days ahead, and nothing turns into a charge on its own. If that day comes, accounts that have hosted a real session with at least one other person get 50% off the first year.

All questions →

Open a room, send the code.

Start freeSign in →Free. No card required. Chrome 116 or newer.