MovieNight: The Watch Party App I Built When Teleparty and Rave Weren't Enough

A laptop screen showing a streaming service browse page, the kind of movie night screen that is hard to keep in sync across two different devices

My friend and his girlfriend live in two different cities. Every time they tried to watch a movie together over a call, one of them was three seconds behind, the other one's phone kept dying, and by the end neither of them had actually watched the movie. So I built them a fix.

A friend of mine called me one evening, a little frustrated. He and his girlfriend try to have a "movie night" together every week, him on his laptop, her on her phone, hundreds of kilometers apart. It never worked the way it does when you're actually sitting next to someone. Someone would pause to answer a message and the other person would keep watching. Someone's video call would freeze right at the best part. And a laptop and a phone are just built differently, so nothing about the process felt equal for both of them.

He asked me if there was an app for this. There sort of is, several, actually. But when I looked into them properly, none of them solved his actual problem. So I spent a weekend building one that does, and I'm putting it out for free for anyone else in the same situation.

What's already out there, and where it falls short

If you search for a "watch party app" or "watch movies together online," you'll run into the same handful of names: Teleparty (the app formerly known as Netflix Party), Rave, Kast, Watch2Gether, Scener, and Metastream. They're all solving a version of the same problem, and honestly, a few of them are genuinely well built. But every one of them comes with a catch that mattered for my friend's specific case.

  • Teleparty is a Chrome browser extension. That's fine on a laptop, but there's no real equivalent on a phone, and his girlfriend was watching from her phone.
  • Rave and Watch2Gether both work across devices, but they're built around streaming links and shared rooms with strangers able to join if a link leaks, plus ads on the free tier.
  • Scener is built specifically around syncing with Netflix and a few other services, so it only helps if you already have matching subscriptions.
  • Kast and Metastream both need an account, a desktop client, or a specific browser setup that a phone just can't match.
  • None of them put your actual face and voice next to the movie by default. You still need a separate video call running alongside, which is exactly what kept freezing and falling out of sync for my friend.

None of this makes those apps bad. They solve "watch the same video at the same time" reasonably well for two laptops on the same service. What none of them solve is the exact situation my friend was in: one phone, one laptop, no shared subscription, and wanting to actually see each other's face while watching, not just hear a laggy voice call fighting for bandwidth against the video stream.

What I actually needed to build

Once I understood the real problem, the list of requirements was short:

  • It had to work the same on a phone and a laptop. Not "mostly the same," identically, because that mismatch was the whole complaint.
  • One person plays the movie, the other person's screen mirrors it instantly. Play, pause, and seek should never need to be repeated in a chat message.
  • Their faces and voices needed to be part of the same screen, not a second app running in a different window that eats half the phone's battery.
  • No account, no ads, no strangers able to join. This is two people watching a movie, not a public room.
  • It shouldn't depend on both people having the same streaming subscription. One person hosts a video file, and that's the movie for the night.
A television showing the Netflix logo with a remote control pointed at it, representing a shared movie night

That list ruled out reworking one of the existing tools. So over a weekend, I built MovieNight, a small, free, open-source watch party app made for exactly two people.

How MovieNight actually works

The idea behind MovieNight is simple: one person is the host, the other is the guest, and the whole thing runs from one shared page that looks and behaves the same whether you're opening it on a laptop or a phone.

  • Synced playback. The host plays, pauses, or skips ahead, and it mirrors on the guest's screen instantly. No "wait, are you paused too?" messages.
  • Real webcam and microphone, not a separate call. MovieNight uses WebRTC, the same peer-to-peer video technology behind most modern video calling, so you see and hear each other right alongside the movie, not in a different app competing for the same connection.
  • Live chat and quick reactions. For the moments where you'd normally lean over and say something, but you're not in the same room.
  • Works properly on a phone. You can even add it to your phone's home screen so it opens like a normal app, which was the entire point for my friend's girlfriend.
  • Private by default. Each person gets their own password (HTTP Basic Authentication), the pages are blocked from search engines, and there's no public room anyone can stumble into.

Under the hood, it's deliberately boring in the best way. It's built in plain PHP and vanilla JavaScript, no framework, no database, no build step. The host runs it on any small server, or even a laptop exposed through a free tunnel like Cloudflare Tunnel for one night, points it at a video file, and shares the link. That's genuinely the whole setup. When a connection struggles to link up directly, MovieNight can optionally fall back to Cloudflare's free relay service to keep the video call stable, but for the most part it's just two browsers talking straight to each other.

Why I made it free and open source

I could have kept this as a one-off favor for a friend. But the exact situation he was in, one person on a phone, the other on a laptop, no shared streaming account, wanting to actually see each other during the movie, is not rare. Long-distance couples deal with this constantly, and so do friends and family spread across cities and time zones. If a small, honest tool fixes it for him, it'll fix it for a lot of other people too.

Being open source also means anyone can read exactly what it does before trusting it with a webcam and microphone, which matters a lot more for something this personal than it does for, say, a hosting panel. Nothing about MovieNight phones home or tracks anyone. It's just two people, one video, and a password each.

MovieNight now sits alongside the other small, free tools I've put out, Control Pulse, Server Toolkit, Server Editor, and Server Audit, all listed on my resources page. They come from the same instinct: something in everyday life was more annoying than it needed to be, so I built a small, auditable fix for it instead of settling for whatever paid or ad-supported option existed.

Try it yourself

If you and someone you care about are stuck watching movies apart, on mismatched devices, fighting with a video call app that keeps dropping, MovieNight is free on GitHub. Clone it, point it at a video, share the link, and have an actual movie night, phone, laptop, or anything in between.

My friend and his girlfriend used it for the first time last week. No more "wait for me," no more frozen faces mid-scene. Just a movie, playing at the same time, with both of them actually watching it together.

← All posts Reply by email