xG Explained
What is xG?
Very simply, xG (or expected goals) is the probability that a shot will result in a goal based on the characteristics of that shot and the events leading up to it. Some of these characteristics/variables include:
- Location of shooter: How far was it from the goal and at what angle on the pitch?
- Body part: Was it a header or off the shooter's foot?
- Type of pass: Was it from a through ball, cross, set piece, etc?
- Type of attack: Was it from an established possession? Was it off a rebound? Did the defense have time to get in position? Did it follow a dribble?
Every shot is compared to thousands of shots with similar characteristics to determine the probability that this shot will result in a goal. That probability is the expected goal total. An xG of 0 is a certain miss, while an xG of 1 is a certain goal. An xG of .5 would indicate that if identical shots were attempted 10 times, 5 would be expected to result in a goal.
There are a number of xG models that use similar techniques and variables, which attempt to reach the same conclusion. The model that FBref uses is provided by Opta. Opta's xG model includes a number of factors above just factors such as the location and angle. Their model also accounts for the clarity of the shooter's path to the goal, the amount of pressure the shooter is under from defensive players, the position of the goalkeeper, and more. That means that their xG model factors in the defense and goalkeeping when determining the odds of the shot reaching the goal.
Take this Diego Jota goal vs Southampton for example. The shot was taken directly in front of the goal from very close range. It's a very good chance. Using an older model that accounts for location, angle, pass type, and such, it would have a 0.68 xG. However, Opta's model also accounts for the fact that the goalkeeper is out of position and there's no defender in the way, which boosts the xG of this shot even higher, to 0.90.
xG does not take into account the quality of player(s) involved in a particular play. It is an estimate of how the average player or team would perform in a similar situation.
How xG is used
xG has many uses. Some examples are:
- Comparing xG to actual goals scored can indicate a player's shooting ability or luck. A player who consistently scores more goals than their total xG probably has an above average shooting/finishing ability.
- A team's xG difference (xG minus xG allowed) can indicate how a team should be performing. A negative goal difference but a positive xG difference might indicate a team has experienced poor luck or has below average finishing ability.
- xG can be used to assess a team's abilities in various situations, such as open play, from a free kick, corner kick, etc. For example, a team that has allowed more goals from free kicks than their xGA from free kicks is probably below average at defending these set pieces.
- A team's xGA (xG allowed) can indicate a team's ability to prevent scoring chances. A team that limits their opponent's shots and more importantly, limits their ability to take high probability shots will have a lower xGA.
Penalty Kicks
Each penalty kick is worth .79 xG since all penalty kicks share the same characteristics. Comparing a player's goals from penalty kicks to their penalty kick xG can indicate a player's penalty kicking ability. Likewise, we can do the same for goalkeepers in these situations.
FBref's xG totals include penalty kicks unless otherwise noted. For xG excluding PK, we recommend using npxG (non-penalty expected goals).
How we calculate xG totals for a single offensive possession
In some cases, a player or team's xG totals do not equal the sum of their shots. For instance, a team may attempt multiple shots in a single possession, but it is likely that these shots are contingent upon the outcome of the previous shot(s).
Take for example, this match between Schalke 04 and Nürnberg:
In the 78th minute, Nürnberg attempted three shots which ultimately led to a goal. Hanno Behrens attempts a shot that is saved, but he is able to take a second shot as the ball is deflected off the defender. The second shot goes off the woodwork, which allows Adam Zreľák to easily tap it in. According to Opta's expected goals model:
- Behrens' first shot with the goalkeeper in his way = .41 xG
- Behrens' second shot with the goalkeeper out of position but a defender in the way = .47 xG
- Zreľák's shot with an open net = .79 xG
The sum of these three shots is 1.67 expected goals, even though it is impossible to score more than one goal in a single move. To solve this problem, we find the probability that the defending team does not allow a goal in this possession. In this case, the calculation is:
(1 - .41) x (1 - .47) x (1 - .79) = .0657
or a 6.57% probability that Schalke does not allow a goal.
To find Nürnberg's xG, we simply subtract that probability from 1:
1 - .0657 = .9343 xG
In other words, we estimate that an average team in a similar situation would be expected to score a goal 93.43% of the time.
We use a similar method when calculating xG for individual players. Adam Zreľák receives .79 xG from his single shot while Hanno Behrens receives:
1 - (1 - .41) x (1 - .47) = .6873 xG
This shows why a team or player's total xG may not equal the sum of the xG from their shots and why a team's total xG may not equal the sum of the xG from their players.
Possessions that include a penalty kick
Similarly, we include shots taken from a rebound after a penalty kick with xG from penalty kicks. Take this Marco Reus penalty kick for example:
- As mentioned above, the penalty kick attempt = .79 xG
- The second shot after the rebound, from 2 yards and with the goalkeeper unrecovered from the save = .92 xG
Since the second shot is a result of the first, we use the same probabilistic method in the previous example. Rather than a total 1.71 xG (.79 + .92), the calculation is:
1 - (1 - .79) * (1 - .92) = .9832 expected goals
However, since the second shot is also considered to be a part of the penalty kick xG, Reus gets 0 npxG (non-penalty expected goals) on this play.
Note: We treat corner kicks and free kicks as a new possession, not a continuation of the previous possession, but are continuing to study the issue.
What is Post-Shot xG (PSxG)?
Regular xG, or what can be considered "Pre-Shot xG", is calculated considering all shots at the time of the shot without knowing the quality of the shot attempt. It not only includes shots that are on target, but also shots that are deflected or off target. Post-Shot xG is calculated after the shot has been taken, once it is known that the shot is on-target, taking into account the quality of the shot. As with xG, PSxG is provided by Opta and is further explained here.
All shots which are off target will have a PSxG of zero since there is a 0% chance that this trajectory will lead to a goal.
When evaluating a goalkeeper's shot stopping ability, we only want to include shots that are on target since these are the shots where the goalkeeper can have an impact. Therefore, we use PSxG to estimate the quality of shots in which they have faced.
What is xA (expected assists) and xAG (expected assisted goals)? How do they differ?
xA, or expected assists, is the likelihood that a given completed pass will become a goal assist. This statistic developed by Opta assigns a likelihood to all passes based on the type of the pass, the location on the pitch, the phase of play, and the distance covered. Players receive xA for every completed pass regardless of whether a shot occurred or not.
In order to just isolate the xG on passes that assist a shot, there's Expected Assisted Goals (xAG). This indicates a player's ability to set up scoring chances without having to rely on the actual result of the shot or the shooter's luck/ability. Players receive xAG only when a shot is taken after a completed pass.
We use xG+xAG for goal contributions since players' goal contributions are typically Goals + Assists and this better matches that standard.
Previous to October 2022, we used xA to mean expected assisted goals (now xAG). When we switched our data provider to Opta, they provided their version of xA described above. We made the name change to xAG. Opta: What are Expected Assists.
Where to find xG
Team xG, xG against, and xG difference can be found on league tables, such as this:
Rk | Squad | MP | W | D | L | GF | GA | GD | Pts | xG | xGA | xGD |
---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Manchester City | 38 | 32 | 2 | 4 | 95 | 23 | +72 | 98 | 84.3 | 24.7 | +59.6 |
2 | Liverpool | 38 | 30 | 7 | 1 | 89 | 22 | +67 | 97 | 73.7 | 28.8 | +44.9 |
3 | Chelsea | 38 | 21 | 9 | 8 | 63 | 39 | +24 | 72 | 58.6 | 36.4 | +22.2 |
4 | Tottenham | 38 | 23 | 2 | 13 | 67 | 39 | +28 | 71 | 54.9 | 47.1 | +7.8 |
5 | Arsenal | 38 | 21 | 7 | 10 | 73 | 51 | +22 | 70 | 60.1 | 54.2 | +5.8 |
6 | Manchester Utd | 38 | 19 | 9 | 10 | 65 | 54 | +11 | 66 | 61.4 | 50.6 | +10.8 |
7 | Wolves | 38 | 16 | 9 | 13 | 47 | 46 | +1 | 57 | 52.1 | 42.1 | +10.1 |
8 | Everton | 38 | 15 | 9 | 14 | 54 | 46 | +8 | 54 | 49.7 | 45.7 | +4.0 |
9 | Leicester City | 38 | 15 | 7 | 16 | 51 | 48 | +3 | 52 | 52.4 | 43.7 | +8.7 |
10 | West Ham | 38 | 15 | 7 | 16 | 52 | 55 | -3 | 52 | 47.6 | 61.9 | -14.3 |
11 | Watford | 38 | 14 | 8 | 16 | 52 | 59 | -7 | 50 | 48.2 | 59.2 | -11.0 |
12 | Crystal Palace | 38 | 14 | 7 | 17 | 51 | 53 | -2 | 49 | 47.6 | 50.1 | -2.5 |
13 | Newcastle Utd | 38 | 12 | 9 | 17 | 42 | 48 | -6 | 45 | 39.1 | 53.6 | -14.5 |
14 | Bournemouth | 38 | 13 | 6 | 19 | 56 | 70 | -14 | 45 | 53.3 | 57.2 | -3.9 |
15 | Burnley | 38 | 11 | 7 | 20 | 45 | 68 | -23 | 40 | 44.4 | 62.1 | -17.7 |
16 | Southampton | 38 | 9 | 12 | 17 | 45 | 65 | -20 | 39 | 46.9 | 55.1 | -8.2 |
17 | Brighton | 38 | 9 | 9 | 20 | 35 | 60 | -25 | 36 | 35.3 | 59.1 | -23.8 |
18 | Cardiff City | 38 | 10 | 4 | 24 | 34 | 69 | -35 | 34 | 42.4 | 61.5 | -19.1 |
19 | Fulham | 38 | 7 | 5 | 26 | 34 | 81 | -47 | 26 | 41.3 | 68.2 | -26.8 |
20 | Huddersfield | 38 | 3 | 7 | 28 | 22 | 76 | -54 | 16 | 28.8 | 60.9 | -32.2 |
Player xG, npxG & xA can be found on team pages, such as this:
Playing Time | Performance | Expected | Progression | Per 90 Minutes | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Player | Nation | Pos | Age | MP | Starts | Min | 90s | Gls | Ast | G+A | G-PK | PK | PKatt | CrdY | CrdR | xG | npxG | xAG | npxG+xAG | PrgC | PrgP | PrgR | ||||||||||
Ederson | br BRA | GK | 24 | 38 | 38 | 3,420 | 38.0 | 0 | 1 | 1 | 0 | 0 | 0 | 2 | 0 | 0.0 | 0.0 | 0.1 | 0.1 | 0 | 3 | 0 | 0.00 | 0.03 | 0.03 | 0.00 | 0.03 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
Aymeric Laporte | es ESP | DF | 24 | 35 | 34 | 3,057 | 34.0 | 3 | 3 | 6 | 3 | 0 | 0 | 3 | 0 | 3.0 | 3.0 | 0.8 | 3.8 | 94 | 294 | 9 | 0.09 | 0.09 | 0.18 | 0.09 | 0.18 | 0.09 | 0.02 | 0.11 | 0.09 | 0.11 |
Bernardo Silva | pt POR | MF,FW | 23 | 36 | 31 | 2,854 | 31.7 | 7 | 7 | 14 | 7 | 0 | 0 | 3 | 0 | 7.4 | 7.4 | 7.8 | 15.2 | 152 | 156 | 277 | 0.22 | 0.22 | 0.44 | 0.22 | 0.44 | 0.23 | 0.25 | 0.48 | 0.23 | 0.48 |
Raheem Sterling | eng ENG | FW | 23 | 34 | 31 | 2,771 | 30.8 | 17 | 9 | 26 | 17 | 0 | 0 | 3 | 0 | 13.7 | 13.7 | 9.6 | 23.3 | 155 | 87 | 436 | 0.55 | 0.29 | 0.84 | 0.55 | 0.84 | 0.44 | 0.31 | 0.76 | 0.44 | 0.76 |
Sergio Agüero | ar ARG | FW | 30 | 33 | 31 | 2,459 | 27.3 | 21 | 8 | 29 | 19 | 2 | 2 | 4 | 0 | 18.1 | 16.5 | 5.0 | 21.5 | 81 | 76 | 253 | 0.77 | 0.29 | 1.06 | 0.70 | 0.99 | 0.66 | 0.18 | 0.85 | 0.60 | 0.79 |
Kyle Walker | eng ENG | DF | 28 | 33 | 30 | 2,779 | 30.9 | 1 | 1 | 2 | 1 | 0 | 0 | 3 | 0 | 0.8 | 0.8 | 1.9 | 2.7 | 83 | 220 | 92 | 0.03 | 0.03 | 0.06 | 0.03 | 0.06 | 0.03 | 0.06 | 0.09 | 0.03 | 0.09 |
David Silva | es ESP | MF | 32 | 33 | 28 | 2,401 | 26.7 | 6 | 8 | 14 | 6 | 0 | 0 | 2 | 0 | 7.8 | 7.8 | 8.5 | 16.3 | 118 | 270 | 222 | 0.22 | 0.30 | 0.52 | 0.22 | 0.52 | 0.29 | 0.32 | 0.61 | 0.29 | 0.61 |
Fernandinho | br BRA | MF | 33 | 29 | 27 | 2,377 | 26.4 | 1 | 3 | 4 | 1 | 0 | 0 | 5 | 0 | 1.6 | 1.6 | 3.0 | 4.5 | 58 | 236 | 29 | 0.04 | 0.11 | 0.15 | 0.04 | 0.15 | 0.06 | 0.11 | 0.17 | 0.06 | 0.17 |
İlkay Gündoğan | de GER | MF | 27 | 31 | 23 | 2,137 | 23.7 | 6 | 3 | 9 | 6 | 0 | 0 | 3 | 0 | 4.1 | 4.1 | 4.3 | 8.4 | 82 | 205 | 91 | 0.25 | 0.13 | 0.38 | 0.25 | 0.38 | 0.17 | 0.18 | 0.35 | 0.17 | 0.35 |
Leroy Sané | de GER | FW | 22 | 31 | 21 | 1,867 | 20.7 | 10 | 10 | 20 | 10 | 0 | 0 | 1 | 0 | 6.7 | 6.7 | 7.4 | 14.1 | 84 | 67 | 341 | 0.48 | 0.48 | 0.96 | 0.48 | 0.96 | 0.32 | 0.36 | 0.68 | 0.32 | 0.68 |
John Stones | eng ENG | DF | 24 | 24 | 20 | 1,764 | 19.6 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.3 | 0.3 | 0.2 | 0.6 | 44 | 118 | 5 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.02 | 0.01 | 0.03 | 0.02 | 0.03 |
Riyad Mahrez | dz ALG | FW,MF | 27 | 27 | 14 | 1,343 | 14.9 | 7 | 4 | 11 | 7 | 0 | 1 | 0 | 0 | 5.5 | 4.7 | 4.6 | 9.3 | 87 | 73 | 191 | 0.47 | 0.27 | 0.74 | 0.47 | 0.74 | 0.37 | 0.31 | 0.68 | 0.32 | 0.62 |
Nicolás Otamendi | ar ARG | DF | 30 | 18 | 14 | 1,236 | 13.7 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1.3 | 1.3 | 0.2 | 1.5 | 27 | 92 | 3 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.10 | 0.01 | 0.11 | 0.10 | 0.11 |
Oleksandr Zinchenko | ua UKR | DF | 21 | 14 | 14 | 1,151 | 12.8 | 0 | 3 | 3 | 0 | 0 | 0 | 1 | 0 | 0.2 | 0.2 | 1.5 | 1.7 | 47 | 95 | 94 | 0.00 | 0.23 | 0.23 | 0.00 | 0.23 | 0.01 | 0.12 | 0.13 | 0.01 | 0.13 |
Vincent Kompany | be BEL | DF | 32 | 17 | 13 | 1,224 | 13.6 | 1 | 0 | 1 | 1 | 0 | 0 | 6 | 0 | 0.3 | 0.3 | 0.0 | 0.3 | 17 | 83 | 3 | 0.07 | 0.00 | 0.07 | 0.07 | 0.07 | 0.02 | 0.00 | 0.02 | 0.02 | 0.02 |
Kevin De Bruyne | be BEL | MF | 27 | 19 | 11 | 975 | 10.8 | 2 | 2 | 4 | 2 | 0 | 0 | 2 | 0 | 1.4 | 1.4 | 5.7 | 7.0 | 50 | 109 | 88 | 0.18 | 0.18 | 0.37 | 0.18 | 0.37 | 0.13 | 0.52 | 0.65 | 0.13 | 0.65 |
Benjamin Mendy | fr FRA | DF | 24 | 10 | 10 | 900 | 10.0 | 0 | 5 | 5 | 0 | 0 | 0 | 1 | 0 | 0.2 | 0.2 | 1.6 | 1.8 | 48 | 70 | 59 | 0.00 | 0.50 | 0.50 | 0.00 | 0.50 | 0.02 | 0.16 | 0.18 | 0.02 | 0.18 |
Danilo | br BRA | DF | 27 | 11 | 9 | 807 | 9.0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0.4 | 0.4 | 0.2 | 0.6 | 20 | 77 | 33 | 0.11 | 0.00 | 0.11 | 0.11 | 0.11 | 0.05 | 0.02 | 0.07 | 0.05 | 0.07 |
Gabriel Jesus | br BRA | FW | 21 | 29 | 8 | 1,036 | 11.5 | 7 | 3 | 10 | 6 | 1 | 1 | 1 | 0 | 11.2 | 10.5 | 2.3 | 12.7 | 35 | 21 | 128 | 0.61 | 0.26 | 0.87 | 0.52 | 0.78 | 0.97 | 0.20 | 1.17 | 0.91 | 1.11 |
Fabian Delph | eng ENG | DF | 28 | 11 | 8 | 725 | 8.1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0.1 | 0.1 | 0.3 | 0.4 | 20 | 59 | 23 | 0.00 | 0.12 | 0.12 | 0.00 | 0.12 | 0.01 | 0.04 | 0.06 | 0.01 | 0.06 |
Phil Foden | eng ENG | MF | 18 | 13 | 3 | 335 | 3.7 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 2.1 | 2.1 | 0.9 | 3.0 | 23 | 18 | 35 | 0.27 | 0.00 | 0.27 | 0.27 | 0.27 | 0.57 | 0.23 | 0.80 | 0.57 | 0.80 |
Philippe Sandler | nl NED | DF | 21 | 0 | 0 | |||||||||||||||||||||||||||
Arijanet Muric | xk KVX | GK | 19 | 0 | 0 | |||||||||||||||||||||||||||
Claudio Bravo | cl CHI | GK | 35 | 0 | 0 | |||||||||||||||||||||||||||
Squad Total | 26.7 | 38 | 418 | 3,420 | 38.0 | 91 | 71 | 162 | 88 | 3 | 4 | 44 | 1 | 84.3 | 81.3 | 65.5 | 146.7 | 1325 | 2429 | 2412 | 2.39 | 1.87 | 4.26 | 2.32 | 4.18 | 2.22 | 1.72 | 3.94 | 2.14 | 3.86 | ||
Squad Total | 26.7 | 38 | 418 | 3,420 | 38.0 | 91 | 71 | 162 | 88 | 3 | 4 | 44 | 1 | 84.3 | 81.3 | 65.5 | 146.7 | 1325 | 2429 | 2412 | 2.39 | 1.87 | 4.26 | 2.32 | 4.18 | 2.22 | 1.72 | 3.94 | 2.14 | 3.86 |
Expected goals can also be found on a number of different pages such as league player stats, match reports, player pages and player match logs.
FBref Competitions with xG Data
- FIFA Women's World Cup (2019 to 2023)
- FIFA World Cup (2018 to 2022)
- Copa America (2019 to 2024)
- Copa Libertadores (2019 to 2024)
- UEFA Champions League (2017-2018 to 2024-2025)
- UEFA Europa Conference League (2021-2022 to 2024-2025)
- UEFA Europa League (2017-2018 to 2024-2025)
- UEFA European Football Championship (2021 to 2024)
- UEFA Women's Champions League (2021-2022 to 2024-2025)
- UEFA Women's Euro (2022)
- American Major League Soccer (2018 to 2024)
- American National Women's Soccer League (2019 to 2024)
- Argentine Copa de la Liga Profesional (2021 to 2024)
- Argentine Primera (2016-2017 to 2024)
- Australian A-League Women (2018-2019 to 2024-2025)
- Belgian Pro League (2017-2018 to 2024-2025)
- Brazilian Série A (2019 to 2024)
- Dutch Eredivisie (2018-2019 to 2024-2025)
- English Championship (2018-2019 to 2024-2025)
- English Premier League (2017-2018 to 2024-2025)
- English Women's Super League (2018-2019 to 2024-2025)
- French Ligue 1 (2017-2018 to 2024-2025)
- French Ligue 2 (2017-2018 to 2024-2025)
- French Première Ligue (2021-2022 to 2024-2025)
- German 2.Bundesliga (2017-2018 to 2024-2025)
- German Bundesliga (2017-2018 to 2024-2025)
- German Frauen-Bundesliga (2022-2023 to 2024-2025)
- Italian Serie A (2020-2021 to 2024-2025)
- Italian Serie A (2017-2018 to 2024-2025)
- Italian Serie B (2018-2019 to 2024-2025)
- Mexican Liga MX (2018-2019 to 2024-2025)
- NWSL Challenge Cup (2020 to 2024)
- NWSL Fall Series (2020)
- Portuguese Primeira Liga (2018-2019 to 2024-2025)
- Spanish La Liga (2017-2018 to 2024-2025)
- Spanish Liga F (2022-2023 to 2024-2025)
- Spanish Segunda (2017-2018 to 2024-2025)
We're Social...for Statheads
Every Sports Reference Social Media Account
Site Last Updated: Thursday, November 21, 10:00PM
Question, Comment, Feedback, or Correction?
Subscribe to our Free Email Newsletter
Subscribe to Stathead FBref: Get your first month FREE
Your All-Access Ticket to the FBref Database
Do you have a sports website? Or write about sports? We have tools and resources that can help you use sports data. Find out more.