Methodology & data sources
Each simulation plays all 104 matches of the real 2026 format: 12 groups of four, top two plus the eight best
third-placed teams into FIFA's actual Round-of-32 bracket (matches 73–104). Match scores are drawn from a
joint Poisson score grid: expected goals follow a multiplicative Elo map (goal difference ≈ Elo diff / 180
near parity, calibrated so win probabilities track the classic Elo win expectancy, with lopsided pairings
producing more total goals — as they do in reality), corrected by a Dixon–Coles low-score term (ρ = −0.10)
so 0-0 and 1-1 draws occur as often as in real football. On top of that baseline each team carries an attacking and a defensive style
multiplier (the Attack/defense weight slider), re-estimated live from the goals it has scored and conceded
versus expectation — so a free-scoring side and a defensive one with the same rating no longer get identical
scorelines; style deviations are shrunk toward the field average and bounded, keeping the win/draw/loss split
anchored to Elo. Each simulated tournament also draws every team's
true strength from a normal distribution around its rating (the σ slider) — point-estimate ratings compound
into overconfident favourites across seven rounds, so this fattens the tails; teams that have already played get a
proportionally narrower draw, since once we've watched a side its rating is better pinned down, so the forecast
sharpens as the tournament unfolds.
Knockout matches are played with ~10% lower scoring rates — cup football is more cautious, so 90-minute
draws (and hence extra time) occur as often as in real World Cup knockouts. Drawn knockout games go to
extra time (one-third intensity) and then penalties (near coin-flip, slight Elo edge).
Group tiebreakers: points → goal difference → goals scored → head-to-head. Third-placed teams are slotted into
the bracket by constraint-matching FIFA's allowed-group lists for each R32 match (a close approximation of FIFA's
official allocation table). Hosts get a configurable Elo bonus (the slider); Mexico carries an extra share of it for
the high-altitude Estadio Azteca, where its acclimatised side holds an edge over lowland opponents.
Live scores are fetched from FIFA's public API (api.fifa.com) on load, every 5 minutes, and on demand:
finished matches become fixed facts in every simulation and update each team's Elo on the fly
(eloratings.net formula, K = 60 with the goal-margin multiplier); matches that are LIVE right now are
simulated from the current score and minute — with a stoppage-time allowance, so a 90th-minute equaliser is
never impossible — rather than from kick-off, and the forecast sharpens continuously as the tournament unfolds.
Dimmed prediction chips on finished matches show the pre-kick-off forecast (each team's Elo as it stood
before that match), so you can judge the model honestly against what actually happened. The Accuracy tab scores
every finished match's pre-kick-off forecast (outcome Brier & log-loss, exact-score log-loss) and sets the
full model beside the Elo-only baseline, so you can see whether the attack/defense layer is actually helping.
Last synced results are cached in your browser, so the tool also works offline.
Data: final groups, fixtures & results from FIFA; Elo ratings as of June 11, 2026
from worldfootballrankings.com / eloratings.net. This is a forecast, not a promise — that's football. ⚽
Every match in play right now plus everything scheduled for today (your local time). Tap a match for live forecasts — win/draw/loss, most likely final scores, next goal, over 2.5 goals, both-teams-to-score and what's at stake in the tournament — recomputed from the current score and minute. While matches are live the app re-syncs with FIFA every ~75 seconds (otherwise every 5 minutes) and the match clock keeps ticking between syncs.
Every fixture shows the predicted exact score — the most likely scoreline with its probability (tap or hover for alternatives). Real results sync automatically from FIFA: green = final (fixed in every simulation, prediction dims for comparison), red 🔴 = live now (simulations continue from the current score & minute). The Pts column counts finished matches.
Each slot shows the most likely team (tap or hover for the full candidate list), its chance of being in that match, and on the right its chance of advancing. The ⚽ line is the predicted exact score for the most likely pairing.
Any-match predictor
How well the model has predicted the finished matches of this tournament so far, scored against the pre-kick-off forecast (each team's Elo as it stood before the match). Lower is better. The full model (with the attack/defense layer) is shown next to the Elo-only baseline so you can see whether the style adjustment is actually helping — if it isn't, lower the Attack/defense weight.
Turns the forecast into a prediction game: you bet one exact scoreline per match and earn points. For every match the app picks the scoreline that maximizes expected points under the rules below — which is often not the single most-likely score — so the season total is as high as the model can make it. Finished matches are scored against the pre-kick-off forecast (no peeking); knockouts are scored on the 90-minute result (a shootout counts as a draw).
| Outcome of your bet | Points |
|---|---|
| Exact score | 4 |
| Right winner and goal difference (non-draw) | 3 |
| Right winner, wrong margin | 2 |
| Both draws, different score (e.g. bet 1:1, result 2:2) | 2 |
| Wrong winner / wrong tendency | 0 |