What Is Expected Goals (xG)?
Expected Goals, commonly written as xG, is a statistical metric that measures the quality of goal-scoring chances in football. Rather than simply counting goals, xG assigns a probability to every shot based on how likely it is to result in a goal.
A shot with an xG of 0.75 means that historically, shots taken from that position and situation are scored 75% of the time. A shot with an xG of 0.03 means it's essentially a speculative effort with only a 3% conversion rate.
When you add up the xG of every shot a team takes in a match, you get their total match xG — the number of goals you'd expect them to score based on the chances they created.
How Is xG Calculated?
Every shot in a football match is evaluated against a model trained on hundreds of thousands of historical shots. The key factors that determine a shot's xG value include:
- Distance from goal — Shots closer to goal have higher xG
- Angle to goal — Central positions score more often than tight angles
- Body part — Headers typically have lower xG than shots with the foot
- Assist type — Through balls and crosses create different quality chances
- Situation — Open play, set piece, counter-attack, or penalty
- Goalkeeper position — Whether the keeper is set or caught out of position
A penalty has an xG of roughly 0.76. A one-on-one from 8 yards out might be 0.45. A long-range effort from 30 yards is typically around 0.03-0.05.
Reading an xG Table: What the Numbers Mean
When you look at an xG league table on OddAlerts xG Stats, you'll see several key columns:
- xG — Expected Goals For. How many goals a team should be scoring based on their chances.
- xGA — Expected Goals Against. How many goals a team should be conceding.
- xGD — Expected Goal Difference (xG minus xGA). The best overall indicator of team quality.
- xG per game — Average xG created per match. Useful for comparing teams with different numbers of games played.
Here's how a live xG table looks for the Premier League this season — teams ranked by Expected Goal Difference:
Premier League xG Table
Live Data| # | Team | P | xG | xGA | xGD | xG/90 |
|---|---|---|---|---|---|---|
| 1 | Arsenal | 30 | 56.1 | 25.9 | +30.2 | 1.87 |
| 2 | Liverpool | 29 | 52.3 | 32.6 | +19.6 | 1.80 |
| 3 | Chelsea | 29 | 59.0 | 40.5 | +18.5 | 2.03 |
| 4 | Manchester City | 29 | 53.7 | 36.1 | +17.6 | 1.85 |
| 5 | Manchester United | 29 | 53.2 | 38.5 | +14.7 | 1.84 |
| 6 | Newcastle United | 29 | 47.9 | 37.9 | +10.0 | 1.65 |
| 7 | Crystal Palace | 29 | 45.4 | 40.9 | +4.5 | 1.57 |
| 8 | AFC Bournemouth | 29 | 46.7 | 43.9 | +2.8 | 1.61 |
| 9 | Brentford | 29 | 45.1 | 44.3 | +0.9 | 1.56 |
| 10 | Leeds United | 29 | 46.0 | 46.4 | -0.4 | 1.59 |
| 11 | Brighton & Hove Albion | 29 | 41.0 | 43.2 | -2.2 | 1.41 |
| 12 | Fulham | 29 | 40.9 | 43.1 | -2.3 | 1.41 |
| 13 | Aston Villa | 29 | 38.8 | 41.9 | -3.1 | 1.34 |
| 14 | Everton | 29 | 38.4 | 41.7 | -3.3 | 1.33 |
| 15 | Tottenham Hotspur | 29 | 34.9 | 44.6 | -9.6 | 1.20 |
| 16 | Nottingham Forest | 29 | 36.6 | 46.3 | -9.8 | 1.26 |
| 17 | West Ham United | 29 | 41.5 | 54.2 | -12.6 | 1.43 |
| 18 | Sunderland | 29 | 29.7 | 47.1 | -17.4 | 1.02 |
| 19 | Wolverhampton Wanderers | 30 | 26.7 | 47.9 | -21.1 | 0.89 |
| 20 | Burnley | 29 | 25.7 | 62.8 | -37.1 | 0.89 |
The xG vs Actual Goals Gap
This is where xG becomes powerful for betting. If a team has scored 25 goals but their xG is only 18, they are overperforming. They're either getting lucky with finishing or scoring low-probability shots at an unsustainable rate.
Conversely, if a team has scored 12 goals but has an xG of 19, they are underperforming. Their chance creation is strong but finishing has let them down — and historically, this tends to regress toward the xG value.
How to Use xG for Betting
Over/Under Goals Markets
xG is directly applicable to goals markets. If two teams average a combined xG of 3.2 per game when they play, the Over 2.5 Goals market is statistically likely to hit more often than not.
Look for matches where:
- Both teams have a high xG per game (above 1.5 each)
- The league itself is high-scoring
Top 10 Leagues by Goals Per Game
Live Data| # | League | Played | Total | Per Game |
|---|---|---|---|---|
| 1 | Kampionati i Femrave | 44 | 337 | 7.66 |
| 2 | 1. Womens Liga | 85 | 597 | 7.02 |
| 3 | Liga Femenina de Futbol | 26 | 170 | 6.54 |
| 4 | Ligue 1 Women | 63 | 385 | 6.11 |
| 5 | Kadınlar Ligi | 119 | 634 | 5.33 |
| 6 | Women's League | 95 | 505 | 5.32 |
| 7 | Tercera Federación Femenina - Group 3 | 63 | 333 | 5.29 |
| 8 | First League Women | 50 | 259 | 5.18 |
| 9 | 2. Division | 67 | 346 | 5.16 |
| 10 | Ligue 1 | 73 | 375 | 5.14 |
BTTS (Both Teams to Score)
xG helps with BTTS markets by revealing whether both teams genuinely create chances. A team might have a poor goals record, but if their xG per game is above 1.0, they are creating enough chances that goals are likely to come.
Combine this with xGA — if a team also concedes a high xGA, that match is a strong BTTS candidate.
Top 10 Leagues for BTTS
Live Data| # | League | Played | Count | Rate |
|---|---|---|---|---|
| 1 | U19 Divisie 1 | 74 | 59 | 80% |
| 2 | 2. Liga Interregional - Group 2 | 36 | 28 | 78% |
| 3 | Liga 2 | 39 | 30 | 77% |
| 4 | Ligue 1 | 73 | 56 | 77% |
| 5 | U19 League | 107 | 81 | 76% |
| 6 | New South Wales NPL 2 | 40 | 30 | 75% |
| 7 | Jugendliga U15 | 78 | 58 | 74% |
| 8 | U19 Divisie 2 | 73 | 53 | 73% |
| 9 | Future Cup | 22 | 16 | 73% |
| 10 | 3. Liga - Center | 98 | 71 | 72% |
Match Result and Asian Handicap
xGD (Expected Goal Difference) is the strongest predictor of future match outcomes. Teams with a high positive xGD are creating far more quality chances than they're conceding, and tend to sustain their league position even through bad runs of form.
Here are the current La Liga and Bundesliga xG standings — compare the xGD leaders against the actual league table to spot mismatches:
La Liga xG Table (Top 10)
Live Data| # | Team | P | xG | xGA | xGD | xG/90 |
|---|---|---|---|---|---|---|
| 1 | FC Barcelona | 27 | 66.2 | 33.6 | +32.6 | 2.45 |
| 2 | Real Madrid | 27 | 57.4 | 31.0 | +26.4 | 2.13 |
| 3 | Atlético Madrid | 27 | 41.1 | 27.9 | +13.3 | 1.52 |
| 4 | Athletic Club | 27 | 39.5 | 28.0 | +11.5 | 1.46 |
| 5 | Real Betis | 27 | 41.0 | 33.2 | +7.8 | 1.52 |
| 6 | Villarreal | 27 | 43.1 | 36.1 | +7.0 | 1.60 |
| 7 | Rayo Vallecano | 27 | 37.8 | 35.2 | +2.7 | 1.40 |
| 8 | Valencia | 27 | 36.5 | 34.5 | +2.0 | 1.35 |
| 9 | Celta de Vigo | 27 | 34.9 | 33.9 | +1.0 | 1.29 |
| 10 | Deportivo Alavés | 27 | 35.2 | 35.3 | -0.1 | 1.30 |
Bundesliga xG Table (Top 10)
Live Data| # | Team | P | xG | xGA | xGD | xG/90 |
|---|---|---|---|---|---|---|
| 1 | FC Bayern München | 25 | 66.9 | 26.7 | +40.2 | 2.68 |
| 2 | RB Leipzig | 25 | 54.8 | 36.9 | +17.9 | 2.19 |
| 3 | Borussia Dortmund | 25 | 43.9 | 32.5 | +11.4 | 1.76 |
| 4 | Bayer 04 Leverkusen | 25 | 43.2 | 32.7 | +10.5 | 1.73 |
| 5 | VfB Stuttgart | 25 | 44.3 | 37.9 | +6.4 | 1.77 |
| 6 | TSG Hoffenheim | 25 | 43.0 | 37.1 | +5.8 | 1.72 |
| 7 | SC Freiburg | 25 | 39.5 | 36.7 | +2.7 | 1.58 |
| 8 | FC Union Berlin | 25 | 34.4 | 35.3 | -1.0 | 1.37 |
| 9 | Borussia Mönchengladbach | 25 | 35.4 | 37.9 | -2.5 | 1.42 |
| 10 | Eintracht Frankfurt | 25 | 32.7 | 35.5 | -2.8 | 1.31 |
When you see a team on a losing streak but their xGD is still positive, the market often overreacts. That's where value lies — the underlying performance metrics suggest the team is better than their recent results indicate.
Identifying Value in Odds
The core principle: when actual results diverge from xG, odds are often mispriced.
- A team on a winning streak with low xG may have shorter odds than they deserve
- A team in poor form with strong xG may have longer odds than warranted
- Early-season results are especially unreliable — xG stabilises faster than points tallies
xG on Target (xGoT)
xGoT (Expected Goals on Target) is a more refined metric that only considers shots that were actually on target. While standard xG evaluates the chance, xGoT also factors in where the shot was placed.
This makes xGoT better for evaluating individual matches — if a team had 2.1 xG but only 0.8 xGoT, their finishing was poor. If their xGoT exceeds their xG, they're placing shots well and making keepers work.
Common Pitfalls When Using xG
Don't use xG from a single match in isolation
One match of xG data is noisy. A team can have 3.0 xG and lose 1-0. That's football. xG is most reliable over 10+ matches where the sample size smooths out variance.
xG doesn't account for everything
Set-piece routines, individual brilliance, and defensive organisation can cause teams to consistently out or underperform xG. Some teams have structural reasons for their xG gap.
Penalty xG can distort team totals
A team that wins a lot of penalties will have inflated xG. Look at npxG (Non-Penalty xG) for a cleaner picture of open-play chance creation.
Context matters
A team chasing a game at 2-0 down will often rack up xG in the final 15 minutes against an opponent sitting deep. That late xG is real, but the match context is different from 0-0 first-half chances.
Using OddAlerts xG Stats
The OddAlerts xG Stats tool gives you access to xG data across 40+ leagues worldwide, including the Premier League, La Liga, Bundesliga, Serie A, Ligue 1, MLS, and more.
For each league you can see:
- Full xG table — Every team ranked by xG, xGA, xGD, and per-game averages
- Home vs Away splits — How teams perform at home versus away in xG terms
- Individual fixture xG — Shot-by-shot xG breakdown for recent matches
- Team xG profiles — Deep dives into any team's xG trends over the season
- CSV downloads — Export full xG data for any league for your own analysis
Here's the current Serie A xG table — click through to explore any league in detail:
Serie A xG Table (Top 10)
Live Data| # | Team | P | xG | xGA | xGD | xG/90 |
|---|---|---|---|---|---|---|
| 1 | Inter | 28 | 57.5 | 21.8 | +35.8 | 2.06 |
| 2 | Juventus | 28 | 50.3 | 28.8 | +21.5 | 1.80 |
| 3 | Como | 28 | 44.8 | 26.2 | +18.6 | 1.60 |
| 4 | Atalanta | 28 | 50.6 | 33.8 | +16.8 | 1.81 |
| 5 | AC Milan | 28 | 46.6 | 32.9 | +13.7 | 1.66 |
| 6 | Roma | 28 | 40.4 | 28.8 | +11.7 | 1.44 |
| 7 | Napoli | 28 | 42.3 | 31.4 | +10.9 | 1.51 |
| 8 | Bologna | 28 | 38.1 | 33.1 | +5.0 | 1.36 |
| 9 | Fiorentina | 28 | 42.3 | 39.6 | +2.7 | 1.51 |
| 10 | Hellas Verona | 28 | 29.2 | 35.5 | -6.3 | 1.04 |
You can use this data alongside OddAlerts Value Bets and Quick Filters to build a data-driven approach to finding profitable bets in goals markets.
Key Takeaways
- xG measures chance quality, not just results — it tells you what should have happened
- The xG vs actual goals gap reveals teams likely to regress, which creates betting value
- xGD is the best predictor of future team performance, ahead of points or goal difference
- Use xG data over 10+ match samples for reliable signals
- Combine xG with league context — high-scoring leagues produce higher xG across the board
- The OddAlerts xG tool covers 40+ leagues with full xG tables, home/away splits, and fixture-level data
