BackendGen.dev
Generate a self-hosted Node.js backend for your Unity, Godot or Unreal game, your app or your business in minutes. You get the full source code: no monthly platform fees, no lock-in, host it anywhere.
Free account to try it, pay once to download. No subscription. Already have an account? Sign in
Watch the video on its own page, with chapters
Prefer to generate inside the Unity Editor? Universal Backend Generator is available now on the Unity Asset Store. New versions reach the web generator first, while Asset Store updates wait a few days for Unity's review. Bought it there? Your web licence is free.
🎮 Play the demo game
A 60-second Godot game in your browser. Pick a gamertag, set a score and watch it land on the live leaderboard. Sign-in, scores and cloud saves all run on a backend made with BackendGen.dev.
Play now →Deploy with confidence
Every backend comes with a self-test. Point it at your live server and you get a pass/fail report in seconds: is it reachable over HTTPS, is the admin side locked down, can players only change their own data, are old game versions turned away, are backups recent.
In Unity it's the Verify My Backend button. Anywhere else, one command. New to servers? Follow the step-by-step deploy guide.
Verify My Backend - https://api.mygame.com PASS [server] Server is reachable PASS [config] Admin password is strong PASS [admin] Tampered admin session is refused PASS [security] Anonymous users cannot download the whole database PASS [security] Path tricks (../) are refused PASS [security] Outdated game versions are refused (426) PASS [rules] A player cannot sign in on someone else's gamertag PASS [rules] Players cannot change someone else's data PASS [routes] Writes the rules forbid are refused (28 tried) PASS [backups] Backups are recent ... 31 passed, 0 warning(s), 0 failed
| Path | Who can write |
|---|---|
| users/ | The player in {player} |
| chat/ | Any signed-in player (Sender must be them) |
| friend_requests/ | The player in {from} or {to} |
| chat/ | The player in {player} |
Would this be allowed? Bob writes users/Alice/profile
Security you can see
Every access rule your backend enforces is listed in plain English: who can read and who can write each part of your players' data. Change one with a drop-down or add your own. Any write route you forget gets an owner-only rule automatically, so nothing is left open by accident.
Then ask the question that matters: could Bob change Alice's profile? Would this be allowed? answers before you ship, step by step, and names the rule that decides. Try it free with an account.
Measured, not guessed
We load-tested a generated backend with the Advanced features switched on. First on SQLite, the database every licence gets, on one server with no tuning. Then in Advanced's PostgreSQL mode, with 1, 2 and 4 servers behind a load balancer. Test players saved their data, read each other's profiles, sent presence and played the leaderboards, and the load kept rising until the backend couldn't keep up.
On SQLite, a desktop-class server comfortably answered 2,200 requests a second, and a small 8 GB Windows VPS 500. With PostgreSQL, four servers on the same desktop answered 3,750. Real players call the backend far less than once a second. At once every 30 seconds, 3,750 requests a second is over 110,000 players online.
Adding servers adds capacity: two did 1.7 times as much as one, and four did 2.5 times as much. All four shared one 6-core PC with the database and the load balancer, and they still hadn't reached their limit when the test stopped. Every download includes load-test.js, so you can measure your own server before launch.
Measured on 3 to 5 November 2026 (the VPS on 4 November, with the previous, slower version). "Comfortably" means at least 98% of requests answered, 95% of them within 100 ms (plus the network delay), and under 0.1% errors. Your results depend on your server and your game.
| Setup | Requests / second | 95% within | Players online* |
|---|---|---|---|
| SQLite · desktop PCRyzen 5 5600X, one server, home network | 2,200 | 53 ms | ~66,000 |
| SQLite · Windows VPS8 GB, Contabo (US), tested from London | 500 | 100 msincl. 77 ms across the Atlantic | ~15,000 |
| PostgreSQL · 1 serverAdvanced, same desktop PC | 1,500 | 15 ms | ~45,000 |
| PostgreSQL · 2 serversbehind an nginx load balancer | 2,600 | 21 ms | ~78,000 |
| PostgreSQL · 4 serversthe most we sent; not yet at its limit | 3,750+ | 52 ms | ~110,000+ |
* If each player calls the backend once every 30 seconds (sign-in, saves, presence, a leaderboard check). Gameplay itself runs on your game servers, not the backend. Test mix: save player data 28%, read a player 33%, presence 22%, leaderboard reads 11% and scores 6%. Test players send presence every few seconds, far more often than a real game, and the backend skips repeated presence writes, so presence costs a little more in a real game than it did here. One PostgreSQL server answers fewer requests than SQLite: PostgreSQL mode is for running several servers.
Real-time, tested on a cloud server
Advanced includes a real-time connection for chat, lobbies, parties and live updates. We tested it on a rented Linux cloud server (Hetzner CCX33: 8 dedicated cores and 32 GB, about €0.27 an hour), with the test players sent from a second server in the same data centre. Players sat in rooms of 20, so every message went to the 19 others.
50,000 players stayed connected at once, and six backend servers delivered 76,000 room messages a second, 95% of them within 32 ms. Everything ran on that one machine: the database, Redis, the load balancer and the backends.
Rooms can span several servers. Through PostgreSQL alone that tops out at about 2,000 messages a second; with Redis (included in the Advanced set-up) the limit was the machine itself, so more machines go further. Fast gameplay, such as positions many times a second, still belongs on your game servers.
Measured on 9 November 2026. "Comfortably" means at least 99% of messages delivered, 95% of them within 100 ms, no errors and no dropped connections. The load rose in steps of 1,000 messages a second.
| Setup | Messages / second | Delivered / second | 95% within |
|---|---|---|---|
| SQLite · 1 serverthe database every licence gets | 1,000 | 19,000 | 3 ms |
| PostgreSQL · 4 serversrooms shared through PostgreSQL | 2,000 | 38,000 | 3 ms |
| PostgreSQL · 6 servers + Redisrooms shared through Redis | 4,000 | 76,000 | 32 ms |
| Connected at once4 servers + Redis, held for a minute | 50,000 | 0 dropped | 86 msping |
Each message goes to everyone else in its room, so 1,000 messages a second in rooms of 20 means 19,000 deliveries. The test players were sent from a separate server that never used more than 57% of its CPU, so these are the backend's limits, not the tester's.
Player identity, match results and skill ranking out of the box. The Advanced Add-on runs everything around your game servers: matchmaking, parties, guilds, economy and live ops.
Included
With the Advanced Add-on
A JSON data API with per-path access rules, a typed JavaScript client and an OpenAPI spec, so it works with any front end, not just Unity.
Included
With the Advanced Add-on
Chat, friends and notifications as data paths, with push, social sign-in and moderation in the Advanced Add-on.
Included
With the Advanced Add-on
The Advanced Add-on comes with the Advanced licence, or as an upgrade if you already own Base.
Works offline, even at a game jam. The database (SQLite) is built in, so your backend runs on your own PC with no internet, no cloud account and no Docker: double-click start-local (or Generate & Boot Local Server in Unity) and point your game at localhost. Teammates on the same Wi-Fi or LAN can connect to your PC's address. You only need the internet once, to install its packages the first time.
A program for Windows and Linux servers that starts your Unity or Unreal dedicated servers, keeps them running, adds one when a game mode fills up and lists them in your backend so players can find them. It can carry voice chat between your players too.
Unity with -batchmode -nographics, Unreal with -NullRHI, on cheap Windows or Linux VPS nodes with no graphics card. Your normal Unreal build can run as a listen server, with UE4SS for console commands.
Crashed servers restart straight away, long-running ones restart on a schedule to clear built-up memory, and another server starts when a game mode fills up.
Pay once for Advanced and rent a plain Windows or Linux VPS by the month, an EU node and a US node, say. No per-minute orchestration fees like the big cloud services charge.
Import the setup file from your download and add a ubgs1. server key with only the fleet and matches scopes: your admin password never touches a game server machine.
More about Omni Cluster → · Voice chat included · Compare with GameLift, Edgegap and PlayFab · Windows or Linux · included with Advanced
For studio R&D teams, incubators and anyone pitching a game: find out if the loop is fun before anyone builds a server.
It runs on a laptop in minutes: no cloud account, no Docker, no waiting for IT to set up servers. Teammates on the same network can join straight away.
Not a mock: real sign-in, saved data and match rankings from day one, plus leaderboards and matchmaking with Advanced, through the Unity, Godot and Unreal clients that come with it.
The same code goes on a server, and Advanced adds PostgreSQL and more servers when you grow.
Scrapped? It cost a licence, not weeks of backend work.
More on prototyping and R&D → · Several people on the team using the generator? See studio licences.
Generated code is often a mess nobody wants to touch. This is plain JavaScript and Express, commented, in files named for what they do. Tick what your game needs and see what you'd get.
Needs Base · 43 files
A taste of the generator: the real one has every setting, and each says what it does and which file it ends up in. Try it free.
You get
// StarRaidersClient.cs is in your download: add it to a GameObject
var backend = StarRaidersClient.Instance;
backend.SignIn("Ann", callback: (ok, reply) =>
{
if (!ok) { Debug.LogWarning("Sign-in failed: " + reply); return; }
// access-rules.json lets Ann change her own profile, nobody else's
backend.SetDbNode("users/Ann/profile/bio", "\"Top fragger\"");
backend.GetDbNode("users/Ann/profile", (_, json) => Debug.Log(json));
});
// =====================================================================
// 11. MATCH HARVESTER
// =====================================================================
app.post('/api/matches/upload', route(async (req, res) => {
// ... checks the caller and the match format first ...
const payload = JSON.stringify(matchObj);
// insertIfAbsent is the atomic "claim": a re-upload (or the same match
// on another replica) is a no-op.
const isNew = await store.tx(async (t) => {
if (!(await t.insertIfAbsent(matchKey, payload))) return false;
await t.rawMatchInsert(payload, matchKey);
return true;
});
if (!isNew) return res.status(200).json({ success: true, duplicate: true, matchId });
const sr = await processMatchSREngine(matchObj, matchKey);
const out = { success: true, matchId, sr: sr.status };
{
"rules": [
{ "path": "users/{player}", "write": ["owner:player"] },
{ "path": "presence/{player}", "write": ["owner:player"] },
{ "path": "player_stats/{player}", "write": ["owner:player"] },
{ "path": "chat/global/{message}",
"write": [{ "who": "player", "fields": { "Sender": "me" } }] },
{ "path": "friend_requests/{to}/{from}", "write": ["owner:from", "owner:to"] },
{ "path": "notifications/{to}", "read": ["owner:to"] },
{ "path": "bug_reports", "write": ["player"] }
]
}
The calls and files come from real backends generated for “Star Raiders”. The server part is a short excerpt; your download has every file, in full. Play the Star Raiders demo to see it running.
No custom framework and no black box. Your backend is plain, readable code on a standard stack, so any Node.js developer can pick it up and change it.
Base
Base
Advanced
Works with the networking you already use. Use Mirror, Netcode for GameObjects or Fish-Net for the gameplay itself. Your backend runs everything around it: accounts, player data and rankings, plus matchmaking and your game-server fleet with Advanced. Step-by-step guides with the code: Mirror, Fish-Net, Netcode for GameObjects, Godot 4 multiplayer and Unreal Engine.
How a backend you own compares with a hosted platform such as PlayFab, Firebase or BACKND.
| Compared | BackendGen.dev | Hosted platformPlayFab, Firebase, BACKND… |
|---|---|---|
| How you pay | Once, for the licence. Then your own hosting: a small server is enough for most games. | Free to start, then usage-based charges that grow with your players. |
| Source code | Yours: plain Node.js and Express. Change any line. | Closed. You use their API and SDKs. |
| Your data | On your server, in your own database. | On the platform's servers. |
| Moving away | Nothing to move away from. It doesn't need BackendGen.dev to run. | Usually means rewriting the parts of your game that talk to it. |
| Running it | You do, with automatic backups, a self-test and step-by-step guides. | They do it for you. |
The full comparison, including when BackendGen.dev isn't the right choice →
Hosted platforms' features and prices change over time; this describes how they work in general, as of November 2026. PlayFab is a trademark of Microsoft. Firebase is a trademark of Google. BACKND is a product of AFI, Inc.
Pay once and keep it: unlimited projects, code that's yours to ship, and free updates for all of 1.x.
Everything you need for a single-server backend.
Base plus the Advanced Add-on, for live production games and apps.
Advanced for several people, cheaper than single licences. You give each seat to someone by email on your account page, and move it when people change. Everyone shares the code.
Prices are shown in your local currency, exactly as the checkout will charge them.
Base is $249, £199 or €229; Advanced is $449, £359 or €409; the add-on for Base owners is $249, £199 or €229. Prices include VAT for buyers in the UK and EU. Elsewhere, any sales tax that applies is added at checkout, and the checkout always shows the final price before you pay.
When a new major version comes out, owners get a discounted upgrade.
No. You pay once and keep it, with free updates for all of 1.x. The only running cost is your own hosting: a small server (VPS) from a few dollars a month is enough for most games, and you can start on your own PC for free.
Yes. The backends and client files you generate are yours to use, change, host and ship in commercial products, with no royalties, for your own projects or for clients. What you can't do is resell the generator itself or pass generated code off as a starter kit. The terms have the details.
Not to get started: you double-click start-local and it runs. Putting it online takes a few more steps, and the included guides walk you through them. Knowing some JavaScript helps when you want to change how the server works, because it's all plain, commented code.
On SQLite, the default, one server comfortably answered 2,200 requests a second on a desktop Ryzen 5 and 500 on a small 8 GB Windows VPS in our load test. If each player calls the backend once every 30 seconds, that's roughly 66,000 and 15,000 players online. For more, Advanced's PostgreSQL mode runs several servers behind a load balancer: four on the same desktop answered 3,750 requests a second (over 110,000 players online). Gameplay itself runs on your game servers. Every download includes load-test.js so you can measure your own server. For real-time chat and lobbies (Advanced), one 8-core cloud server kept 50,000 players connected and delivered 76,000 room messages a second.
No: updates are modular and non-destructive. Your own game endpoints and scheduled jobs go in their own plugins/ and jobs/ folders (one .js file each), so your custom logic is never overwritten. Updates never touch your settings files, .env or the database either. Only the files the generator makes, such as server.js, are swapped for the newer version. If you edited one of those directly, the preview lists it before anything changes and keeps your copy in update-backups/. And if the server doesn't come back healthy, the update rolls back by itself.
Your backends keep running. They never connect to BackendGen.dev: there's no licence check, no phone-home and no telemetry in the code. The only outside services a backend talks to are the ones you switch on yourself, such as Steam sign-in or push notifications. The code you've downloaded is yours to keep and change.
No, it works alongside them. Your networking library runs the gameplay; your backend runs accounts, player data and rankings, plus matchmaking and your game-server fleet with Advanced. Your game server checks each player's session with the backend before letting them in: see the guides for Mirror, Fish-Net, Netcode for GameObjects and Godot 4 multiplayer.
One person generates the backend, and everyone on the team can use and change the code it makes: it's yours. Each person who uses the generator needs their own licence. Buying for several people? A studio licence gives you 5 or 10 Advanced seats for less than single licences: you give each seat to someone by email on your account page, and move it when people change. For a bigger team, email hello@backendgen.dev.
Yes. Create a free account and try the generator: every setting and check works, Add-on included, and you see exactly which files you'd get. You only need a licence to download, and your settings are kept while you buy. If you change your mind after buying but before downloading anything, you get a full refund within 14 days.
No. Your BackendGen.dev web licence is free: claim it with your invoice number. It's also the quickest way to get updates: new versions reach the web generator first, while Asset Store updates wait a few days for Unity's review.
No. The free licence only works one way: Asset Store buyers get a free web licence, but a BackendGen.dev licence doesn't include the Unity Asset Store package (the version that runs inside the Unity Editor), which is sold by Unity. You don't need it to make Unity games: every download includes the Unity C# client to add to your project.
No. BackendGen.dev has nothing to do with other projects, packages or repositories with a similar name, such as the backendgen projects on GitHub. It's made and sold only here, by Michael Rowley in the UK, and it's the web version of Universal Backend Generator on the Unity Asset Store. Licences, downloads, updates and support only ever come from backendgen.dev and hello@backendgen.dev, so code, issues or support from those other projects aren't ours.
Unity, Steam, Epic Games, Google Play, Apple, Game Center, Discord and other names are trademarks of their respective owners. BackendGen.dev is not affiliated with or endorsed by them.