1. xG in one sentence (and only one)
The xG of a shot is the probability that the shot ends up in the net, estimated from thousands of comparable shots in the past. A shot rated at 0.30 xG means that shots taken in similar conditions were converted roughly 30 times out of 100.
A team's xG for a match is simply the sum of the xG of all its shots. A team on 1.8 xG has created, across all its chances, the equivalent of “1.8 average goals”. It may just as well have scored 4, or 0.
It is not a performance rating, not a prediction of the score, and not a verdict on a player's quality. It is a measure of the quantity and quality of the chances created. Nothing more, nothing less.
2. How xG is actually calculated
Contrary to what you often read, there is no mathematical xG formula that you could apply by hand. An xG value is the output of a trained model, usually a logistic regression or a tree-based machine learning model.
The principle is simple. You gather a database of several hundred thousand shots for which three things are known: the characteristics of the shot, and whether or not it ended up in the net. The model learns to connect the one to the other. It is then shown a new shot, and it returns a probability.
The variables that really matter
| Variable | Weight | Why |
|---|---|---|
| Distance to goal | Very strong | The dominant factor: the probability collapses very quickly with every metre. |
| Shot angle | Very strong | Determines how much of the goal is visible. A tight angle cancels out the advantage of being close. |
| Body part | Strong | A header is converted less often than a shot with the foot from the same distance. |
| Type of play | Strong | Counter-attack, set piece, open play: the defence is not set up in the same way. |
| Preceding assist | Medium | A cut-back does not create the same situation as a cross in the air. |
| Defensive pressure | Variable | Number and position of defenders. Only the richest models include it. |
The last row is the one that sets the models apart. A model that ignores the position of the defenders sees a shot from 8 metres, dead centre, as a big chance — even if three defenders and the goalkeeper are in the path of the ball. This is the main source of discrepancies between providers.
3. Trap no. 1: per-shot xG versus cumulative xG
This is the most widespread misreading, and it literally reverses the conclusion. Two teams can post the same match xG and have produced two opposite things.
| Team A | Team B | |
|---|---|---|
| Match xG | 1.60 | 1.60 |
| Number of shots | 4 | 20 |
| Average xG per shot | 0.40 | 0.08 |
| Interpretation | Few chances, but huge ones | Lots of shots, all of them poor |
Team A created four genuine goalscoring situations. Team B shot twenty times from distance without ever getting into the danger zone. The total is identical; the attacking performance is nothing alike.
The habit to adopt: never read a match xG without dividing it by the number of shots. That one division alone puts you ahead of half the analysis you read online.
4. How many matches before you can trust it?
This is the question that almost no guide addresses seriously, and yet it is the one that decides whether your analysis is worth anything.
A team shoots on average between ten and fifteen times per match. A match xG therefore rests on a sample of a dozen or so events, most of which are worth less than 0.10. A single 0.7 xG shot — a penalty, a one-on-one — is on its own the equivalent of seven or eight long-range efforts. In other words, the xG of a single match is dominated by one or two events.
The practical consequence is clear. For a single match, xG is useful for describing what happened — “they dominated but didn't make it count”. It is not useful for predicting anything. To estimate a team's true strength, you need a rolling window of ten to twenty recent matches.
Widening the window reduces the noise, but brings in matches that no longer describe the current team: transfers, a change of manager, injuries. There is no perfect number. Choosing a window means striking a balance between too much noise and too much past.
5. Why two websites do not give the same xG
There is no such thing as one xG. There are xG models, and everyone has their own: Opta, StatsBomb, Understat, not to mention the in-house models of clubs and analysis websites. They are trained on different databases, with different variables.
The result: for the same match, differences of 0.2 to 0.4 xG between two providers are routine. In a match where the key question comes down to 0.3 xG, two honest sources can therefore support two opposite conclusions.
What to take away
- Never compare two xG figures from different sources. It is like comparing temperatures in Celsius and Fahrenheit without converting them.
- Pick one source and stick with it. Internal consistency matters more than absolute “accuracy”.
- Be wary of differences below 0.3 xG. They often fall within the margin of disagreement between models.
6. Overperformance: talent or luck?
A team scores 22 goals from 15 xG. Two narratives compete, and both are plausible:
- Luck. It has converted above the average, and this will correct itself. This is by far the most common explanation over a small number of matches.
- Skill. It has finishers that the model cannot see, because the model does not know who is taking the shot.
How to decide is a question of time and repetition. Over ten matches, overperformance is almost always noise. Over three consecutive seasons, with the same attacking personnel, it starts to look like a genuine characteristic.
Systematically betting against a team “that is outperforming its xG” on the assumption that it will regress from the very next match. Regression to the mean is a long-term phenomenon: it tells you nothing about Saturday's match, and it gives you no date.
7. Three solid uses, two uses to avoid
What works
- Correcting a misleading league table. A team 6th in the table but 2nd on cumulative xG has probably been stronger than its results suggest.
- Spotting a change in momentum. xG conceded that keeps rising over five matches flags a defensive problem before the goals start going in.
- Feeding an estimate of the number of goals. xG created and xG conceded are good starting points for estimating how many goals a match should produce — which is exactly the starting point of the method for calculating over/under 2.5 goals.
What doesn't work
- Judging a goalkeeper on xG alone. xG measures the quality of the chance, not the save. The appropriate statistic is post-shot xG (PSxG), which takes into account the trajectory of the ball after the shot is struck.
- Drawing conclusions from a single match. See section 4: the sample is too small, full stop.
8. Frequently asked questions
What does xG mean in football?
xG stands for expected goals. It is the probability that a given shot turns into a goal, estimated from thousands of comparable shots in the past. A shot worth 0.30 xG means that shots taken in similar conditions ended up in the net roughly 30 times out of 100. A team's xG for a match is the sum of the xG of all its shots.
How is xG calculated?
A statistical model — logistic regression or machine learning — is trained on a database of several hundred thousand shots whose outcome is known. It learns to link the characteristics of a shot (distance, angle, body part, type of play, defensive pressure) to a probability of scoring. A new shot is then run through this model, which returns a value between 0 and 1. There is no formula you can apply by hand.
How many matches does it take for xG to be reliable?
The xG from a single match tells you almost nothing: a team takes 10 to 14 shots per match, which is a tiny sample dominated by one or two big events. You need at least around ten matches for the trend to emerge from the noise, and common practice is to work with 10 to 20 recent matches.
Why do two websites give different xG figures for the same match?
Because there is no single xG, only xG models. Each provider trains its own on its own data, with its own variables. A model that knows where the defenders and the goalkeeper were at the moment of the shot will not return the same value as a model that only knows the distance and the angle. Differences of 0.2 to 0.4 xG for the same match are common.
Is a team that outperforms its xG strong or lucky?
Both explanations are possible, and it takes perspective to decide. Over a handful of matches, overperformance is almost always variance and tends to correct itself. Over a whole season, and repeatedly, it can reflect genuine finishing quality that the model does not capture, because it does not know who is taking the shot.
xG, applied to today's matches
Every morning, IASHARK calculates probabilities from real data — including xG created and conceded — and explains the reasoning match by match. The match of the day is free, always.
See today's analysis →