What is xG in Football?

Expected goals — what it measures, how it’s calculated, and why it matters.

xG (expected goals) is a statistical measure that assigns each shot a probability of resulting in a goal, based on the quality of that chance — not whether it actually went in.

A tap-in from two yards with the keeper out of position might have an xG of 0.92. A speculative 35-yard effort from a tight angle might have an xG of 0.02. Add up every shot’s xG across a match and you get each team’s total expected goals — a measure of how many goals they should have scored based on the quality of their chances.

How is xG Calculated?

xG models are built by data providers such as Opta (Stats Perform) and StatsBomb using large historical datasets of shots and their outcomes. For each shot, the model considers:

  • Shot location — distance from goal and angle to the target
  • Body part — header, right foot, left foot (headers generally have lower xG than feet from the same position)
  • Chance type — open play, direct free kick, penalty, counter-attack
  • Assist type — cross, through ball, set piece, rebound
  • Defensive pressure — whether the shooter was closed down

The model learns, from hundreds of thousands of historical shots, what percentage of shots taken under similar conditions resulted in goals. That historical scoring rate becomes the xG value for the new shot.

A penalty is the canonical reference point. Penalties convert at roughly 75–77% historically, giving them an xG of approximately 0.76. A close-range tap-in can exceed 0.9; a long-range speculative effort is often below 0.05.

Why xG Matters More Than the Scoreline

Goals in football carry enormous randomness. A team can dominate for 80 minutes, create twelve high-quality chances, and lose 1–0 to a fortunate deflection. The scoreline says they lost convincingly; xG might say 2.4–0.3 in their favour.

xG cuts through the noise. It answers the question: was the result fair?

Three reasons xG is more informative than goals:

  1. Small samples are unreliable. Over one match, a top-quality striker and a midfielder who rarely shoots can both score one goal. xG shows which team generated sustained quality — useful for predicting future performance.
  2. xG is predictive.Research by Opta and independent analysts has consistently shown that a team’s xG over a season correlates more strongly with future points than their actual goals do. Teams that consistently outscore their xG regress; teams that underperform theirs improve.
  3. xG reveals finishing luck. A striker who scores 20 goals from 12 xG is likely benefiting from extraordinary finishing. One who scores 12 from 20 xG is underperforming their chances — possibly due to poor finishing, or because they take shots under higher pressure than the model assumes.

xG in Practice: Reading a Match

Here is how to read an xG summary from a match report:

Arsenal 1–2 Liverpool | Arsenal xG: 1.7 | Liverpool xG: 0.6

Liverpool won, but they were the worse team by chance quality. Arsenal created far better opportunities and will feel they deserved a point or all three. Liverpool overperformed their xG significantly in this match. When you see a big xG discrepancy alongside an unexpected scoreline, it usually signals a result that is unlikely to be repeated.

On xgprophet, every match preview includes our pre-match xG prediction— our model’s estimate of expected goals for each team, derived from recent form. You can see our full track record at our accuracy record →

Limitations of xG

xG is a useful tool, not a perfect one. Key limitations:

  • It does not capture goalkeeper quality. A world-class keeper will prevent more goals than the model expects. xG measures shot quality, not the outcome once it faces a keeper.
  • Model differences. Opta, StatsBomb, Understat, and other providers each run their own models. Numbers will differ slightly between providers because they weight factors differently or have access to more granular tracking data.
  • Set-piece complexity. Headers from corners are notoriously difficult to model accurately. Early public models underestimated set-piece xG; more recent models with tracking data handle this better.
  • Context is missing. An xG model treats a shot in the 90th minute of a cup final identically to the same shot in the 5th minute of a league match. Psychological context is not captured.

How xgprophet Uses xG

Our match prediction model uses expected goals as the foundation for Poisson distribution modelling — a statistical approach that converts pre-match xG estimates into goal-score probabilities.

In short: we estimate how many expected goals each team is likely to generate (based on recent form, opponent strength, and competition level), then use the Poisson distribution to calculate the full probability distribution over scorelines. From that, we derive match outcome probabilities (home win %, draw %, away win %).

For a full technical walkthrough, see our methodology page →. For our track record applying this model, see our accuracy record →

Frequently Asked Questions

What does xG 0 mean?
An xG of 0 is theoretical. In practice, extremely difficult efforts — long-range shots at a narrow angle — can have xG values as low as 0.01 or 0.02, meaning roughly a 1–2% historical conversion rate.
Can xG be greater than 1?
A single shot’s xG is capped between 0 and 1 (it represents a probability). However, a team’s total xG for a match can be greater than 1. If a team has xG of 3.2, they generated chances that should collectively produce around 3 goals on average.
Who invented xG?
Expected goals emerged in football analytics circles in the early 2010s. Analysts including Sam Green (later at Opta), Michael Caley, and others published early public models around 2012–2014. Since then, professional data providers have developed proprietary models using far richer datasets, including player-tracking data.
Why do different sites show different xG numbers for the same match?
Each provider runs their own model with their own dataset and feature set. Opta, StatsBomb, and Understat will typically agree directionally but the exact values differ because no two models are identical. xgprophet uses an internally developed Poisson model; see our methodology →