What Is xG in Football? Expected Goals Explained

Expected goals (xG) is a statistical measure of the quality of a goalscoring chance in football. It estimates the probability that a particular shot would be scored, based on the historical conversion rate of similar shots from similar positions and situations. A chance worth 0.30 xG is one that has typically been converted, across thousands of matches, around three times out of ten.

How xG works in plain terms

Football scoring is rare and noisy. A team can dominate a match, create twenty shots, and lose 1-0; the next week the same team can create six shots and win 3-0. Looking only at the final score, the two performances appear to belong to different teams. xG was designed to solve that problem. Instead of asking how many goals a team scored, xG asks how many goals their chances would have produced if a typical team had taken the same shots.

The output is a single number per shot, between zero and one, where one would be a certain goal and zero would be a chance so poor it would essentially never be scored. Add the per-shot numbers up across a match and the team's total xG describes the volume and quality of the chances they generated.

A side that scores once from a single 0.85 xG chance had a roughly fair afternoon. A side that scores once from three combined chances worth 0.10 xG in total has overperformed expectation by a wide margin. Both teams end the day with one goal on the scoresheet. xG makes the difference between them visible.

How is xG calculated?

xG models are built by taking a large historical dataset of shots — usually tens or hundreds of thousands of attempts across several seasons of professional football — and recording everything observable about each shot at the moment it is taken. The model learns the relationship between the input features and the outcome (goal or no goal) using a statistical method, most commonly logistic regression or a gradient-boosted tree.

Once trained, the model is fed the features of a new shot and returns a probability. That probability is the shot's xG. Every public-facing xG number you see — on a match page, in a post-match graphic, in a fantasy football breakdown — is the output of one of these models.

Different providers train on different datasets and use slightly different feature sets, which is why two reputable models can return slightly different xG values for the same shot. The disagreement is usually small. The bigger picture — whether a chance was a half-chance, a clear chance, or a near-certain goal — is consistent across providers.

What goes into an xG model?

Most modern xG models share a similar core of inputs. The most common are:

Penalties are normally hard-coded at a fixed xG value, commonly around 0.76 to 0.79, which is the long-run conversion rate of penalties in elite professional football. The model does not need to learn what is already known.

How to read xG numbers on a match page

The xG of a single chance is usually given as a decimal. A few reference points help calibrate intuition.

For a full match, team xG totals usually sit between 0.5 and 3.5. A side that finishes a match with 2.8 xG has created enough chances to expect around three goals if a league-average finisher had been taking the shots.

Over a season, xG totals stabilise. A team that finishes a 38-game season with around 65 xG has, on average, generated roughly 1.7 expected goals per game. That figure is more predictive of next season's performance than the team's actual goals total, because it strips out finishing variance.

xG vs actual goals: what the gap tells you

The most useful single comparison in modern football analytics is xG against actual goals. The gap between the two — sometimes called xG overperformance or underperformance — separates the part of a result that came from chance creation and the part that came from finishing.

A team that has scored 30 goals from 25 xG is finishing above expectation. That can be sustainable if their strikers are genuinely elite, but it more often regresses towards the mean. A team that has scored 20 goals from 28 xG is finishing below expectation. They are creating well and losing matches in front of goal. Over a long enough stretch their results usually improve.

Individual players are read the same way. A striker on a 15-goal-from-12-xG season is finishing hot. A striker on an 8-goal-from-14-xG season is creating opportunities the eye trusts but not converting them. Both are real performances. They are different stories about how a season's goals were arrived at.

The same comparison applies in defence. xG conceded — the sum of the xG values of every shot the opposition has been allowed — describes how comfortable a defensive season has been independently of how many goals went in. A back line that limits opponents to 1.0 xG per match is doing the structural work, even if a string of unlucky deflections leaves the goals-against column looking ordinary.

Post-shot xG and the goalkeeper question

Standard xG measures the quality of the chance at the moment the shot is taken. It cannot tell you how well the shot was struck, only how good the opportunity was. To isolate the goalkeeper's contribution, modern analytics also tracks post-shot xG (PSxG), which is calculated only for shots on target and uses the additional information of where in the goal frame the shot was placed.

The difference between PSxG and goals conceded is the cleanest available measure of shot-stopping. A goalkeeper who concedes 25 goals from 35 PSxG has saved ten goals more than an average keeper would have been expected to stop. A goalkeeper who concedes 30 goals from 25 PSxG has been beaten more often than the model expects, even allowing for the difficulty of the shots faced.

PSxG does not replace xG. It complements it. xG describes whether a team is creating enough; PSxG describes whether the goalkeeper at the other end is stopping what reaches them.

Where xG is most useful — and where it isn't

xG works best as a description of chance quality at the level of many shots. The more shots you average across, the closer a team's actual goals tend to track their xG. Across a full season, the relationship is strong. Across a single match, it is loose. A team can outperform their xG in any one game without anything unusual happening — that is what variance looks like.

There are also things xG does not measure. It does not score how a chance was created. A goal at the end of a thirty-pass sequence and a goal from a defensive mistake can have the same xG; the model only sees the shot. It does not measure non-shot threat — the dangerous passes and carries that did not lead to a shot at all. And it does not capture game state directly: a side defending a 1-0 lead may not need to create more xG, only to suppress the opposition's.

For these reasons, modern analysis pairs xG with other metrics — expected threat (xT), progressive carries, pressing intensity — rather than treating it as the whole picture.

How xG appears in live football coverage

In the early 2010s, xG lived almost entirely inside professional club analytics departments. Today it is a standard fixture of public match coverage. Live-data platforms display per-shot xG values, running team xG totals, and post-match overperformance figures on their match pages. Television broadcasts now quote xG to explain whether a result reflected the run of play.

RubiScore tracks shot-level xG values across the matches it covers, allowing readers to follow team and player xG totals during a match and to compare the result against the volume of chances created. The metric that once required a subscription to a professional feed has become a default column on consumer-facing football pages.

How xG has changed the conversation about football

The deeper effect of xG has been on how matches are discussed rather than on the data itself. Before xG, a result was a result. A team that scored more goals had won, and the explanation for the win sat in the goals themselves. With xG, the result is one of two competing facts about a match, alongside the chances created. A team can lose and still know the data says they were the better side; a team can win and accept they got the run of the ball.

That has spilled into broadcast commentary, fan conversation, and the way players are evaluated. A striker who has been below their xG for a month is rarely dropped; a defender whose team is conceding more goals than their expected goals against suggests is more likely to keep their starting place. The mental model behind the questions has changed, even when the day-to-day answers have not.

For fans who want to see xG numbers in match-by-match detail across the major European competitions, the figures are published per shot on rubiscore.com, where xG sits next to traditional statistics on every covered match.