How footbadle Builds Its Daily Puzzles (A Look Under the Bonnet)
Every day at midnight Central European Time, footbadle's six puzzles change at the same instant for every player on Earth — whether you're opening the site in Manchester, Mumbai or Montevideo. People occasionally write in asking how that works: is there a person picking the day's mystery player? A server broadcasting the answer at midnight? Neither, as it happens. This is a look at how the machine actually works, straight from the people who built it.
There is no hand on the wheel
The honest answer to "who picks the daily puzzle?" is: arithmetic.
When your browser loads footbadle, the game works out today's date in Central European Time, combines it with the name of the mode you're playing and a version number, and feeds that string — something like player|2026-07-12|v2 — through a hash function called FNV-1a. FNV-1a is a tiny, 33-year-old algorithm that turns any text into a large, effectively random-looking number. That number, divided by the size of the answer pool with the remainder kept, picks the day's answer.
Because the recipe has no randomness in it — same date in, same number out, on every phone and laptop in the world — everyone gets the same puzzle without any server telling them what it is. Your device computes the answer locally, which is also why footbadle keeps working on a flaky train connection once the page has loaded.
One nerdy detail for the programmers reading: we deliberately don't use the hash function built into our programming language, because its output is allowed to differ between platforms. If we had, iPhone players could have quietly received a different mystery player than Android players on the same day — the kind of bug you'd only discover when two friends compare notes. FNV-1a gives the same answer everywhere, bit for bit.
Why midnight CET, of all things?
Daily games need a rollover moment, and every choice is wrong for somebody. We anchored footbadle to midnight Central European Time because the game's heart is European club football — the Premier League, La Liga, Serie A, the Bundesliga, Ligue 1, the Primeira Liga, the Süper Lig and the Eredivisie — so the puzzle day aligns with the football day for most of the leagues we cover.
The awkward part is summer time. Europe shifts its clocks twice a year, and we wanted the reset to follow the wall clock in Europe, not drift an hour twice a year. So the game computes the EU daylight-saving rules itself: summer time runs from the last Sunday of March to the last Sunday of October, and the rollover tracks it. It's a small thing, but it's the difference between "the puzzle changes at midnight" being true all year and only being true for half of it.
The pools the puzzles draw from
Each mode has its own pool of hand-checked material, and the sizes vary more than you might expect:
- 4,504 players power Guess the Player and the other player-based modes, spread across the eight leagues.
- 161 clubs and their squads underpin the club-flavoured clues.
- 150 stadiums, each with a sourced photograph, feed Stadium Spotter — our guide to reading a ground from one photo explains what to look for.
- 119 career histories drive Transfer Trail, each one a real player's actual sequence of moves.
- 27 starting elevens make up Flag XI, chosen from memorable real line-ups.
Building these pools is where most of our time actually goes — checking that a player's listed club survived the latest transfer window, that a stadium photo shows the ground as it stands today, that a career history doesn't skip a loan spell. When football moves (and the transfer window makes sure it always does), the data has to move with it.
The Immaculate Grid is the difficult child
Five of the six modes pick one answer from a pool. The 3×3 grid mode is different: it has to construct a whole puzzle — three row clues, three column clues — where every one of the nine intersections has at least one valid player, and where nine different players can fill the whole board at once.
Most random combinations of clues fail that test. So each day the game tries up to 400 seeded arrangements, in a fixed order derived from the date, and keeps the first one that fully works. Because the sequence of attempts is itself deterministic, everyone still lands on the identical grid. And if all 400 attempts somehow failed, a known-solvable board steps in rather than serving an impossible puzzle. If you play the grid regularly, our strategy guide covers how to attack it once it's in front of you.
When a puzzle breaks, we bump the version
Remember the version number mixed into the hash? That's our emergency brake. If a day's puzzle turns out to be faulty — a retired player slipping through, a stadium photo showing a demolished stand — we can increment the version and every mode reshuffles to a fresh answer immediately, worldwide, without anyone updating an app. It's the one manual lever in an otherwise automatic system, and the reason a broken puzzle never has to stay broken for a full day.
What we deliberately don't know about you
A side effect of doing the selection on your device is that we don't need accounts, logins or profiles. Your streaks and stats live in your own browser's storage and stay there. The puzzle number in your share text is simply the count of days since 1 January 2025 — no identifier hiding in it. We think a daily game should be a thirty-second ritual, not a data relationship.
That's the whole machine: one date, one hash, six puzzles, and a lot of squad-list housekeeping behind the scenes. Tomorrow at midnight CET it will all happen again — and for once, nobody at footbadle will know the answer before you do.