Coverage varies by match. Top-flight European leagues are richest. Items marked — aren't yet indexed for this match.
Match events in chronological order — goals, cards, subs, VAR. Times reflect minute + added time when reported. Penalties, own-goals and direct-free-kick goals are tagged where the source distinguishes them.
Every VAR review for this match — the original on-field decision, the type of check, and whether VAR overturned or upheld. Subjective checks (red-card severity, offside lines) take longer than factual checks (was the ball out, did it cross the line).
Starting XI and used subs for both sides. The formation pitch maps each player's published position into a 100×64 grid; away side mirrors. Click any player to open their profile.
Match-level totals side by side. Possession is share of attacking touches not raw time. xG sums every shot's expected-goals value. Wide gaps between xG and goals are the sharpest signal of whether the scoreline matches the chance quality.
Per-player breakdown — minutes, attacking + defensive contributions, passing volumes. Hover any column header for what it means. Empty cells indicate the stat wasn't published for this match (older / lower-tier fixtures).
Every shot for the match plotted by location. Filled lime dots are goals, cyan on-target, black off-target, grey blocked. Coverage is broader for major tournaments + event-tracked league seasons.
Conditions at kickoff at the stadium location. Wind, temperature, humidity, precipitation. Extreme conditions noticeably affect xG accuracy and pass completion.
Each step up is a shot, with step height equal to that shot's xG. The team whose curve climbs higher created the better chances; whether they actually scored is a separate question. Crossings tell you the goal-quality narrative of the match.
If you replayed this match's chance quality 10,000 times, how many points would each team average? xPts > actual points = unlucky, xPts < actual = lucky. Over a season, sides usually regress towards xPts — useful for predicting form swings.
Sum of xT added by each team's completed open-play passes. xT comes from a published 12×8 grid (Karun Singh) — every pass starts from one cell and ends in another, and the difference in cell-value is the threat created.
Where each player took up position during the match (avg start-of-pass coords) and the strongest passing links between them. Tight nodes near the centre circle = central build-up; wide nodes near the touchlines = wing-heavy play. Heavy edges between defenders + midfielders = controlled circulation; sparse edges = direct play.
Closing 1X2 odds + implied probabilities. The over-round (book margin) is stripped before computing percentages so they sum to 100%. Pinnacle is preferred as a sharp-market reference where available.
Match reports we've indexed for this fixture. We store the URL only — clicking opens the original publisher. Helpful for context when the stat sheet alone misses the story.
Minute-by-minute commentary with added-time tags. Useful for context on goal-celebration mood, bookings, and contested calls — anything the dry timeline misses.