BG Pips
Dice, a clock and a scorekeeper in your pocket — made for backgammon on a real board.
What it is
It's built for over-the-board play, and it's at its best with a travel set. Tap for a provably-fair roll instead of shaking tiny dice that skitter off a rimless board, land cocked, or vanish under a train seat — and you never have to pick them up and re-cup them again. The last few rolls stay on screen, so there's no "wait, what did I just throw?".
When you want a full game it keeps a tournament-standard reserve clock, the doubling cube (with the Crawford rule) and match scoring too. Each player sets their own clock speed from a hare/tortoise icon, so a stronger player can hand a weaker one extra time — a built-in handicap for a fairer match. It works equally well at a club table or on a plane in airplane mode.
Under the hood it's a small, dependency-free progressive web app. There's no build step and no framework — just HTML, CSS and a few plain JavaScript files. It installs to your home screen, runs full-screen, and works offline once loaded. No account, no store, nothing to carry.
How it works
The app is a few independent pieces, each doing one job:
-
clock.js— the timing model: a pure, drift-free calculation that takes the current time and returns each player's remaining delay and reserve. It holds no timers and touches no screen, so it's easy to reason about and test. -
dice.js— fair two-dice rolls (see below). -
sound.js— a tiny Web Audio synth. Every cue is generated on the fly; there are no audio files to download. -
app.js— wires the model to the screen: the tick loop, the two facing halves, the settings, and the undo flow. -
sw.js— a service worker that caches the app so it keeps working with no connection.
The dice
Rolls use cryptographically-strong randomness with rejection sampling, so there's no modulo bias — every face is equally likely, and opening rolls exclude doubles exactly as the physical game requires.
The algorithm is a faithful JavaScript port of
Backgammon Galaxy's dice_roller
Elixir library, which is open source under the MIT licence. All credit
for the rolling approach belongs to its authors; this app reimplements
their method in the browser.
The timing
The clock follows the two-shot, reserve-time format used in online and tournament backgammon, popularised by Backgammon Galaxy: each turn gets a short free delay, and only time spent beyond it draws down your reserve bank. The presets mirror common settings —
- Fast — 10s per turn · 1:00 reserve
- Standard — 12s per turn · 2:00 reserve (the tournament norm)
- Casual — 15s per turn · 3:00 reserve
This project is an independent, unofficial hobby app. It is not affiliated with, endorsed by, or connected to Backgammon Galaxy; their name and marks belong to them and are used here only to describe where the timing conventions come from.
Privacy
Your settings stay on your device. There are no accounts and no personal data is collected. The host may record privacy-first, anonymous page-view counts; nothing that identifies you.
Licence
The app's own code is released under the MIT licence — free to use, modify and share, with attribution.
MIT License · Copyright © 2026 swervo
Bundled open-source credit: the dice algorithm is derived from
Backgammon-Galaxy/dice_roller, MIT License · Copyright ©
2025 Tadorne Ventures Limited. Its licence and copyright notice are
retained as required.
Credits
- Dice algorithm — Backgammon-Galaxy/dice_roller (MIT)
- Timing format inspired by Backgammon Galaxy
- Built with no frameworks — plain HTML, CSS and JavaScript.