For HTML games · No backend

Leaderboards and unlocks for your web game.

One script tag gives a browser game high-score boards, achievements and unlockable characters. It works wherever you host the game — itch.io, GitHub Pages, Netlify or your own domain — and you don't write or run a server.

See it in action

Glowdeep

A fast, top-down roguelite shooter: dig through destructible caves, stack mutations and face the Warden every fifth level. Its daily and all-time boards and its unlocks run on Unbase, with nothing on the game side but a static page on itch.io.

Play on itch.io ↗

Leaderboards

  • All-time, daily, weekly, monthly or seasonal boards
  • Rank by up to three fields: deepest level, then most kills, then fastest time
  • Keep each player's best run, or every run
  • "You're #212" with the player's neighbours on the board
  • A drop-in table widget you can theme with CSS

Progression

  • Lifetime stats per player: runs, best level, total kills…
  • Achievements and unlockable characters, with chains ("requires") and secret unlocks
  • A progress board ranking who has unlocked the most
  • Save codes to move a player's progress to another browser or phone
  • Works offline at startup from the last progress seen

Add it in a few lines

Paste the script, call start() when a run begins and submit() when it ends. Every call fails soft, so a network hiccup never crashes your game.

<script src="https://api.unbase.dev/v1/leaderboard.js" data-key="YOUR_ANON_KEY"></script>
<div id="leaderboard"></div>
<script>
  const lb = UnbaseLeaderboard;
  const board = lb.widget(document.getElementById("leaderboard"), { boards: ["all", "daily"] });
  let run;

  async function onGameStart() {
    run = await lb.start();               // starts the server's clock
  }

  async function onGameOver(score) {
    const res = await lb.submit(run, { name: lb.getName() || "Player", values: { score } });
    if (res.ok) showMessage("You placed #" + res.rank.all);
    board.refresh();
  }
</script>
Step 1

Create a project

Free and instant. Copy its anon key — it's safe to ship in the page.

Step 2

Describe your game

In the dashboard: the score fields, the boards, plausibility rules and the unlocks. Presets for arcade, roguelite and speedrun games.

Step 3

Paste the script

Scores and unlocks start flowing. Moderate from the dashboard: flagged runs, shadow-bans and per-player tools.

Hard to cheat, easy to clean up

A browser game can always be tampered with, so nobody can promise cheat-proof scores. What Unbase does is make cheating hard and cleaning up easy:

  • Single-use run tokens, and a server clock that catches impossible run times.
  • Your own plausibility rules, such as "at most 75 kills per level": reject the score, or accept it and flag it for review.
  • Rate limits, plus an allowlist of the sites your game may be played on.
  • Unlocks are granted by the server, only from runs it accepted, so they're as hard to fake as a score.
  • Shadow-ban a cheater: they keep seeing their score, and nobody else does.
  • Review flagged runs, delete runs, and grant or revoke unlocks from the dashboard.

Ready to add it to your game?

Anonymous projects expire after 7 days. Claim yours with an email before you ship.