World Cup 2026 Predictor
The model that calls the World Cup before it happens — simulating every remaining match 20,000 times, learning from each result, and grading its own predictions in the open.
Each run plays the rest of the tournament forward from current ratings.
SPAIN ARE WORLD CHAMPIONS. 1–0 in extra time over Argentina, and the best team in the tournament won it — methodical, surgical, elegant to the last pass. My call before the game was Spain 1–0 or 2–0 inside 90 minutes; it needed extra time, but the scoreline landed. And the model? The card all week said 50–50 — but that was the rounding talking. The raw locked call folded to 50.35%–49.65% Spain — the thinnest edge a prediction can carry, hiding inside the rounding, on the record, and right. Half a percent from a coin flip, and the coin knew. Congratulations to Argentina on a champion's tournament — that comeback against England showed why they never stop being dangerous — but tonight belonged to Spain. Truly world champions. The forecast is now frozen as the model's final testimony, the champion card above shows the real podium, and a full tournament wrap-up — every call, graded honestly — is coming soon. What a World Cup.
The semifinals are done, and we have a final: Spain v Argentina. Fittingly, the model has locked it at exactly 50–50 — a genuine coin flip, and honestly the numbers are telling the truth: run the simulation again and again and the edge flickers between them, Spain appearing on top slightly more often. The semis themselves were everything. France–Spain was locked at 51–49 France, about as close as a call gets, and Spain won it 2–0 — I was rooting for them, and what an elegant team they are: methodical, surgical, always a pass ahead. England–Argentina was the other side of football: Argentina went 1–0 down and came back to win 2–1, which is exactly why they're world champions — that comeback gear is what makes them so dangerous. Saturday's third-place game has France favored at 54% over England, and I think they take it. Sunday, my money is on Spain. Either way, a 50–50 World Cup final is as good as this game gets — it's going to be a hell of a watch.
The knockout rounds are done and we're down to the last eight — bring on the quarterfinals. A few things I can't stop thinking about: Norway knocking out Brazil (the model gave Brazil 75%) is the shock of the tournament so far. Cabo Verde were the team I fell for — a tiny nation taking Argentina to 3–2 and refusing to go quietly. Argentina then edged Egypt 3–2 in a game that, if I'm honest, felt like it swung on a harsh refereeing call — not that the model has an opinion on referees. And now the draw has handed us France v Morocco in the quarters: the tournament's form team against the side that's been quietly ruthless. If you only watch one game, make it that one. The model still leans France (69%), but Morocco have made a habit of proving people wrong.
The knockouts are here, and they were unkind to the model's favorites. Germany (favored 71% to advance) drew Paraguay 1–1 and went out on penalties — brutal, because the underlying numbers say they were robbed: 1.49 expected goals to Paraguay's 0.42, 75% possession, 21 shots. Sometimes you dominate and still lose. Netherlands also exited, drawing Morocco 1–1, but there the model had it near a coin-flip and Morocco were the better side (1.4 xG to 0.23) — a deserved result. Brazil and Canada advanced. Eliminated teams are now greyed out across the site, and you can dig into every match's xG and shot data in the new Match stats tab.
Brutal day for the model — just 2 of 6 calls landed. It had USA at 83% (lost to Türkiye) and Germany at 77% (lost to Ecuador), and both went down. Upsets are exactly when these ratings learn the most. Humbling, but that's the game.
Live scores are now running during matches, and the whole thing got a mobile makeover. Tap any team in the forecast to dig in. More coming.
This is your personal scratchpad — predictions you lock and grade are saved only in your browser, just for you. You can even predict matchups that aren't real fixtures (Argentina v Brazil, say). For the model's public, shared track record (identical for everyone, frozen server-side), see the Track record tab.
A sandbox: temporarily shock a team's rating — simulate a star injury, a red card, a hot streak — and watch the championship odds re-compute on 20,000 fresh simulations. This never touches the real model or anyone else's view; it's your private what-if.
At the end of each day's matches, the model locks in who it favored to win the World Cup — a timeline of how the prediction shifted across the tournament. Each entry is frozen in the shared file, so it's the same for everyone.
Every prediction here was frozen by the model before kickoff and saved to the shared results file — so this record is identical for everyone and can't be edited after the fact. It's the model's public scorecard.
The story behind each result — expected goals (xG), possession, shots and more. Tap a match to see the full head-to-head. xG is the one that matters most: it measures the quality of chances, so it often reveals who deserved to win.
How the model is actually performing — graded only on calls it locked in before kickoff. This is the honest scorecard.
Standings from logged results. Top 2 of each group (green) advance automatically; the 8 best third-place teams also go through, so these aren't final.
The field is the real 48 teams. Add, remove, or rename teams and tune starting ratings if needed.
What this is
A live forecast for the 2026 World Cup. It rates every team, simulates the whole tournament thousands of times to predict the champion, learns from each real result, and grades its own predictions — all updating automatically. Here's a tour.
What each tab does
Forecast — the home page. The big name at the top is the model's current pick to win the World Cup, with its odds. Below: any live matches, the next matches with predictions, and the full table of every team's chances to reach each round.
Predict match — pick any two teams and see the model's head-to-head call. Your sandbox for one-off curiosity.
My scratchpad — lock predictions and grade them yourself. This is private to your browser — just for you. For the public record, see Track record.
Track record — the model's public, shared scorecard. Every prediction here was frozen before kickoff and saved server-side, so it's identical for everyone and can't be edited after the fact. The honest test of whether the model is any good.
Daily records — a timeline of who the model favored to win the Cup each day, plus a chart of how the title odds shifted as results came in.
Shock the model — a what-if sandbox. Drag a team's rating up or down (simulate an injury, a hot streak) and watch the title odds re-compute. Private to you; never affects the real forecast.
Ratings — every team's current strength, with a ▲/▼ marker showing recent form. Groups — live group standings. Teams — edit the field if needed.
How the model works
The rating model. Every team carries a strength number. To predict, the model feeds the rating gap through a logistic curve — P(A wins) = 1 / (1 + 10^((Rb − Ra)/400)) — the same math as chess Elo.
The learning loop. After each result the model shifts both ratings toward the truth: Δ = K · margin · (actual − expected). Upsets move ratings hard; expected results barely nudge them. A 4–0 teaches more than a 1–0.
Recent form (momentum). On top of the base rating, the model tracks each team's last few games — opponent-adjusted, so drawing Spain and Uruguay says far more than beating a minnow. Only surprising results build form. Newest three games weigh heaviest, capped at five.
The forecast. From current ratings, it plays the rest of the tournament forward 20,000 times and counts how often each team wins — that's where the championship odds come from.
How we grade the model
Hit rate is the simple one: of the calls the model locked in before kickoff, what share did it get right? Useful, but limited — a model that calls everything a coin-flip can get lucky on hit rate without really knowing anything.
Brier score is the honest one, and it's why we lead with it. It grades the model on its confidence, not just its picks. Saying "77% Germany" and being wrong is penalized far more than saying "55% Germany" and being wrong — because the first call was confidently mistaken, the second barely committed. It's the average squared gap between what the model predicted and what actually happened.
Reading it: lower is better (it's an error score). Because every match has three possible outcomes — home win, draw, away win — the "knows nothing" line is about 0.67 (what you'd score by calling every match a flat 1-in-3 each way). Anything below ~0.67 means the model has genuine predictive skill, not luck — and the further below, the sharper it is. That's the bar that matters: not "did it pick winners," but "were its probabilities actually trustworthy."
Honest limits. It only sees ratings — not injuries, rotation, rest, or tactics — so it won't beat a Vegas book. It's a transparent learner you can watch reason and hold accountable.
📲 Install it as an app
This site can be added to your phone or desktop like a real app — its own icon, full-screen, no browser bar. It's free and takes a few seconds. It still updates automatically; nothing to maintain.
iPhone / iPad (Safari): tap the Share button (the square with an up-arrow) at the bottom of Safari, scroll down, and tap “Add to Home Screen.” Confirm, and the icon appears on your home screen.
Android (Chrome): tap the ⋮ menu (top-right), then “Install app” or “Add to Home screen.” Some phones show an install banner automatically — just tap it.
Desktop (Chrome / Edge): look for the install icon (a small monitor with a down-arrow) at the right end of the address bar, and click it.
If you don't see the option, your browser may not support installable apps — the site still works perfectly in any browser.
About
Hi — I'm Aryan Bhardwaj. I build things, I like soccer, and Germany is my team.
I made this because the 2026 World Cup looked genuinely hard to call, and I wanted a model that predicts each match, learns from what actually happens, and keeps itself honest about how well it's doing — all updating on its own as the tournament unfolds.
Under the hood: an Elo-style rating model with momentum, a Monte Carlo simulation that plays the rest of the tournament forward 20,000 times, and an automated pipeline that pulls live results, re-rates every team, and grades its own pre-match calls. Built with a real-time data feed, a scheduled pipeline, and a serverless backend.
More of my work lives at rearyan.com ↗.