Multiplayer Jigsaw: Two Players, One Puzzle, One Link

A real-time multiplayer jigsaw puzzle for two people in different places, where friends separated by distance open the same link and build the same photograph together, piece by piece, in the browser.

Context: Personal project, 2026

Stack: Cloudflare Workers · PartyKit over WebSockets · PixiJS · React

Shape: A two-player web app · five-character room codes · 100 to 1,000 pieces · your own photographs

Multiplayer Jigsaw landing screen with a name field and a room code row
The whole entry: a name, then either a new puzzle or a five-character code. Nothing needs an account to start.

Why it exists

I moved away from London, and the thing I missed in the most specific way was puzzle nights with my friends, where we would sit around a table with a slightly ugly photograph of a mountain and pick through edge pieces for an hour while talking about something else entirely. Video calls carry the talking and leave the table behind, and the table turns out to be the load-bearing part, because a shared object in the middle lets a conversation wander without anyone working to keep it going. This puts the table back.

How a game starts

Starting a puzzle takes four steps and works before you have an account. You pick a picture, either from a small set of themes or by uploading your own JPEG, PNG or WebP up to 12MB. You choose 100, 200, 500 or 1,000 pieces, and it gets as close to that number as a tidy grid allows. You say whether you are playing alone or with a friend. Then you create it, and the app hands back a five-character room code and a link to copy. The code alphabet uses only the letters and digits that stay distinct when spoken aloud, which matters because a code like this gets read down a phone call as often as it gets pasted into a message.

The four-step create flow: picture, piece count, players, create
Four steps. The piece counts are approximate on purpose, because a tidy grid matters more than landing exactly on 200.

What the two players share

Inside a room, each player sees the other’s cursor moving across the board in their own color, and a piece held by one player locks for the other, so two hands can work the same pile without wrestling over the same piece. There is a timer either player can start or pause, a live count of pieces placed, and a chat box down the side for the talking that puzzles are really for. Pieces click into place when dragged close enough to where they belong, placed pieces stay put and become surface you can drag across to pan, and scrolling zooms toward the cursor. The board itself renders through PixiJS so that a thousand pieces stay smooth while both people are moving at once.

A puzzle board with 216 scattered pieces, progress bar, timer, room code and chat
A new room, 216 pieces. The code sits in the top bar so either player can read it down a phone.

Choosing the picture

The upload path carries most of the emotional weight, because a puzzle of a stock mountain is a puzzle, and a puzzle of a photograph from the last time everyone was in the same room is a way of spending an hour inside that evening again. The themes exist so a first game can start in ten seconds, and the photograph you brought is the reason to come back.

Coming back to it

Signing in gives you shelves: what you are currently solving and how far along it is, what you want to start next, and what you have finished. Completed puzzles keep their time, and the ones done with someone else are marked as a duo.

Puzzle shelves showing currently solving, want to do and completed rows
A thousand pieces with a friend took one hour and forty-three minutes. That number felt worth keeping.

Play it

The app is live at jigsaw.aaryaa-kamdar.workers.dev. Start a puzzle and send the link to someone far away.


[PLACEHOLDER: short screen recording, 20 to 30 seconds, of two players placing pieces at the same time and a piece snapping home.]

Leave a comment