Watch Together. Stay in Sync. Anywhere.
Requires Java 17 or higher
Host watch parties. Manage rooms, sync, and chat.
Download Server~3.6 MB • JAR File
System Requirements
Global Playback Clock ensures frame-perfect synchronization.
Lenient thresholds work across continents worldwide.
Works with popular media players via Lua/IPC.
Colored usernames for easy conversation tracking.
Beautiful Dracula theme, easy on the eyes.
Multiple rooms with ready-check system.
Kick, ban, user info, server chat.
Works with ngrok or playit.gg.
Dark theme with colored usernames and activity chat
Admin panel with user management and room overview
Download from videolan.org
java -jar jsync-server.jar
java -jar jsync-client.jar
java -jar jsync-server.jarExternal Access (No Port Forwarding)
ngrok tcp 1389
java -jar jsync-client.jarPlay/Pause
Syncs to all users
Seek ±10s
Jump synced
Ready
Toggle ready state
Designed for worldwide watch parties
| Drift | Action | Description |
|---|---|---|
| 0-5 sec | ✅ None | In sync |
| 5-10 sec | 📝 Log | Debug only |
| 10-30 sec | ⚠️ Warn | User notified |
| 30+ sec | 🔧 Resync | Force seek |
JSP (JSync Protocol) v774
┌────────────────┬──────────────────┬─────────────────┐
│ Length (VarInt) │ Packet ID (VarInt) │ Payload (bytes) │
└────────────────┴──────────────────┴─────────────────┘
0 HANDSHAKE1 STATUS2 LOBBY3 WATCH| ID | Name | Payload |
|---|---|---|
0x00 | Handshake | version, username, room, state |
0x01 | SetFile | filename, duration, size |
0x02 | SetReady | ready (bool) |
0x10 | StateChange | play_state (0/1) |
0x11 | Seek | position_ms |
0x13 | PositionReport | position_ms |
| ID | Name | Payload |
|---|---|---|
0x00 | LobbyUpdate | user_count, [user_data...] |
0x02 | Notification | message |
0x03 | StartWatch | execute_at |
0x10 | SyncCommand | state, pos, execute_at, speed |
jsync/
├── jsync-server/
│ └── src/main/java/com/jsync/
│ ├── server/ # Server logic
│ │ ├── JSyncServer.java
│ │ ├── ClientHandler.java
│ │ ├── Room.java
│ │ └── SyncSettings.java
│ └── protocol/ # Protocol impl
│
├── jsync-client/
│ └── src/main/java/com/jsync/
│ ├── client/ # Client GUI
│ └── player/ # VLC/MPV integration
│ ├── VlcPlayer.java
│ └── MpvPlayer.java
│
└── lua/
└── jsync.lua # VLC Lua interface
Build from Source
cd jsync-server && gradle shadowJar
cd jsync-client && gradle shadowJar