Free to build · pay to launch
Make any game joinable.
One line. Everyone's in.
Joinable is an SDK and hosted relay that makes any web game multiplayer: invites, quick match, a waiting room, a synced countdown, results and rematch, with no server code. Add one line, give your coding agent our prompt, and we run the servers.
<script src="game.js"></script>
+ <script async src="https://relay.getjoinable.com/sdk.js" data-key="pk_…"></script>
First game · launching soon
Turbo Rally on Etheria
Press Race online, send the link, and you're on the grid together: rival cars you can bump, one podium, rematch in one tap.
Try the same race in our Kart Loop demo- ~7 KBSDK, gzipped, no dependencies
- 0servers for you to run
- 1 lineto load it, async, so your game never waits
How it works
Three steps. Your agent does most of it.
-
1
Add one script tag
Paste it into your game's page. It loads in the background, so if it can't load, your game simply stays single-player.
<script async src="https://relay.getjoinable.com/sdk.js" data-key="pk_…" data-connect="invite"></script> -
2
Give your coding agent the prompt
Claude Code, Cursor, Codex or any agent reads our kit, looks at your game, picks the right pattern for its genre and wires four hooks: start a round, report your player, draw the others, say who finished.
Joinable.game({ profile: 'race', start, local, remote, stop }) Joinable.finish({ time }) -
3
Run the self-test
Your agent runs our two-player self-test. It opens two real browsers, plays a round on both and reports what passed. When it's all green, ship.
$ npx getjoinable test http://localhost:5173/ ✓ two players in one room by invite link ✓ start() ran on both with one seed ✓ each sees the other player live ✓ one result on both ✓ rematch: round 2 started
What your players get
The whole multiplayer experience, not just a connection.
Joinable draws every screen around play, in your game's colours. Your game only draws the game.
- Play onlineInvite friends with a link, or quick match with whoever's online.
- Waiting roomWho's in, ready ticks, track or level picked by the host.
- 3 · 2 · 1The same countdown on every screen, from the room's clock.
- Play togetherLive standings. Rivals drawn by your game, with bumps on both sides.
- ResultsOne podium, the same for everyone.
- RematchOne tap, and you're back on the grid.
Plus reconnects into the same seat, watching a round in progress, and late joiners. No accounts: a link is all a friend needs.
Genres
The right netcode for your genre, picked for you.
The agent kit reads your game and chooses. You don't need to know what "dead reckoning" is.
- Full rounds
Racing
Each player drives their own car; rivals are predicted to the present and bump back.
- Full rounds
Arcade & score
Same seed for everyone, live scores, one leaderboard. Runners, puzzles, mini games.
- Play together
Co-op & shared worlds
One world everyone edits: builders, clickers, drawing, board games. Often just one line.
- Play together
Party & avatars
Platformers and top-down games where each player moves their own character.
- Play together
Turn-based
Board, card and word games, with whose turn it is kept in the shared state.
- Planned
RTS
Deterministic lockstep: only orders travel, so hundreds of units cost nothing.
Full rounds: Joinable runs the waiting room, countdown, live standings, podium, rematch and quick match. Play together: everyone shares one world in one room, without the round screens (yet). Fighting games and competitive shooters are next: they need rollback or a cloud host.
Where it stops working
We'd rather tell you now.
"One line" is true for a lot of games and not for all of them. Here's where it isn't, today.
- Fighting games and precise 1v1 action. They need rollback netcode. Not yet.
- Competitive shooters and ranked play. They need a server you can trust. That's our cloud host, which comes later.
- Cheating between strangers. Each device reports its own result. The room rejects impossible ones, but a public leaderboard isn't tamper-proof yet.
- Native games. Joinable is for games that run in a browser.
- Far-apart players. A room lives near the first player. Across continents, bumps soften so it still feels fair.
The agent prompt
Copy this into your coding agent.
Run it from your game's folder. Swap in your game's project key from your dashboard.
Make this web game multiplayer using the Joinable SDK (project key KEY). Read https://staging.getjoinable.com/kit/AGENTS.md first and follow it exactly: it says how to pick the right pattern for this game's genre, what to change, and how to test with two browser windows. Start with the smallest change that works (usually one script tag), test it with two windows, and only go further if the doc's checks fail for this game. Don't write any server code: the SDK's hosted relay does all of that. If the doc's self-test applies (full rounds), run it until it passes. When you're done, tell me which pattern you used, what you changed, and anything that doesn't sync.
Pricing
Free to build. Pay to launch.
Building and testing are always free. When your game goes live on its real domain, pick a plan: you pay for the hours people actually play.
Sandbox
Free
- Unlimited on localhost, previews and dev/test sites
- The full SDK, agent kit and self-test
- On your real domain: 100 free live player-hours a month with the Joinable badge, then a pause (no credit on Sandbox)
Starter
$4.99/month
- Go live on your real domain
- 1,000 player-hours a month
- 1 game, badge stays
Pro
$29/month
- 5,000 player-hours a month
- Up to 5 games, no badge
- Analytics dashboard soon
- Ghosts and bots soon
Studio
$99/month
- 20,000 player-hours a month
- Unlimited games
- Bigger rooms (16+ players)
- Custom lobby branding soon
- Priority support
Enterprise
Dedicated capacity, server-run games for competitive play, an SLA and invoicing.
- Beyond your plan: $0.006 per player-hour from prepaid credit. Top up $10, $25, $50 or $100. No surprise bills.
- Yearly: 2 months free.
- Players are never cut off mid-game. You're warned at 80% of your plan; past it, credit pays for each hour; when plan and credit are used up, new online rooms pause until you top up. Solo play always works.
- Per player-hour, not per concurrent player, so going viral never comes with a scary bill. Two friends racing for 30 minutes is one player-hour.
Prices are beta. "Soon" marks features on the way; they come with the plan when they arrive.
Questions
Asked so far.
Do I need a server?
No. Our relay runs on Cloudflare's network, one room per game session. Your agent never writes WebSocket or server code; the kit tells it not to.
Which engines does it work with?
Anything that runs in a browser: plain canvas, Phaser, PixiJS, Three.js, or a DOM game. If it uses requestAnimationFrame, it's a good fit.
Can my coding agent set it up?
Yes. Any agent that can read a web page and edit your files: Claude Code, Cursor, Codex, Windsurf and others. The kit is written for agents, with exact steps and a self-test they can run.
Which games doesn't it fit?
Fighting games and precise 1v1 action, which need rollback netcode, and competitive shooters or ranked play, which need a server you can trust. Both come later. RTS games are planned next. Native games that don't run in a browser aren't a fit.
What if Joinable is down, or blocked where my player is?
The script loads with async, so your game starts straight away whatever happens. If Joinable doesn't arrive, the game stays single-player and nothing breaks.
What does it cost?
Building and testing are free (Sandbox). Going live starts at $4.99 a month for 1,000 player-hours. Hours beyond your plan come from prepaid credit, so there are no surprise bills, and nobody is cut off mid-game.
Do my players need accounts?
No. A friend opens the link and they're in. Names and colours are picked for them, like "Lucky Gecko".
Can players cheat?
Between friends, it doesn't matter much. For public leaderboards, the room rejects impossible times and scores, and a verified mode that replays runs on our side is planned. See the limits above.
Does it work on phones?
Yes. Invite opens the phone's share sheet, every screen is made for touch, and a phone that locks mid-round gets back into its seat.
Make your game joinable.
Sign in with your email, add your game, and copy its script line. Sandbox is free, with no card.
Sign up free