xgEdge

Expected goals

Birmingham City expected goals (xG) 2026/2027

Championship · after 12 matches · updated 31 Oct

Birmingham City's attacking and defensive expected goals in Championship 2026/2027, compared with the results they produced and with the rest of the competition.

Birmingham City xG and xGA per match

Every match ↓
Attack
1.69 xG per match
#7/24
Attack (xG per match) across Championship, best first
Rank Club xG per match
#1 Middlesbrough 2.16
#2 West Ham United 2.11
#3 Cardiff City 1.92
#4 Southampton 1.81
#5 Millwall 1.75
#6 Wolverhampton 1.72
#7 Birmingham City 1.69
#8 Queens Park Rangers 1.65
#9 Swansea City 1.49
#10 Norwich City 1.48
#11 Bolton Wanderers 1.36
#12 West Bromwich Albion 1.35
#13 Burnley 1.32
#14 Portsmouth 1.31
#15 Lincoln City 1.30
#16 Preston North End 1.28
#17 Bristol City 1.27
#18 Sheffield United 1.17
#19 Wrexham 1.13
#20 Watford 1.05
#21 Blackburn Rovers 1.03
#22 Charlton Athletic 0.99
#23 Derby County 0.97
#24 Stoke City 0.88
League avg
1.42
Total
20.32 12 matches
Defence
1.33 xGA per match
#11/24
Defence (xGA per match) across Championship, best first
Rank Club xGA per match
#1 Wolverhampton 0.92
#2 Middlesbrough 1.02
#3 Queens Park Rangers 1.12
#4 Portsmouth 1.13
#5 Wrexham 1.19
#6 West Ham United 1.21
#7 Bristol City 1.29
#8 Swansea City 1.32
#9 Millwall 1.32
#10 Southampton 1.33
#11 Birmingham City 1.33
#12 Sheffield United 1.39
#13 Lincoln City 1.45
#14 West Bromwich Albion 1.47
#15 Preston North End 1.51
#16 Norwich City 1.53
#17 Cardiff City 1.57
#18 Charlton Athletic 1.58
#19 Stoke City 1.63
#20 Burnley 1.65
#21 Derby County 1.72
#22 Blackburn Rovers 1.72
#23 Watford 1.88
#24 Bolton Wanderers 1.90
League avg
1.42
Total
15.94 12 matches
xG difference
+0.37 xGD per match
#7/24
xG difference (xGD per match) across Championship, best first
Rank Club xGD per match
#1 Middlesbrough +1.15
#2 West Ham United +0.90
#3 Wolverhampton +0.81
#4 Queens Park Rangers +0.53
#5 Southampton +0.48
#6 Millwall +0.43
#7 Birmingham City +0.37
#8 Cardiff City +0.35
#9 Portsmouth +0.18
#10 Swansea City +0.17
#11 Bristol City -0.02
#12 Norwich City -0.05
#13 Wrexham -0.07
#14 West Bromwich Albion -0.12
#15 Lincoln City -0.15
#16 Sheffield United -0.22
#17 Preston North End -0.23
#18 Burnley -0.33
#19 Bolton Wanderers -0.55
#20 Charlton Athletic -0.60
#21 Blackburn Rovers -0.69
#22 Derby County -0.75
#23 Stoke City -0.75
#24 Watford -0.83
League avg
0.00
Total
+4.38 12 matches
Expected points Model — Model output — computed from each match's xG, not a result. How xPts works →
1.64 xPts per match
#6/24
Expected points (xPts per match) across Championship, best first
Rank Club xPts per match
#1 Middlesbrough 2.10
#2 Wolverhampton 1.97
#3 West Ham United 1.84
#4 Queens Park Rangers 1.72
#5 Southampton 1.70
#6 Birmingham City 1.64
#7 Millwall 1.63
#8 Cardiff City 1.58
#9 Portsmouth 1.51
#10 Swansea City 1.50
#11 Bristol City 1.44
#12 Wrexham 1.37
#13 Lincoln City 1.35
#14 Norwich City 1.33
#15 West Bromwich Albion 1.27
#16 Sheffield United 1.22
#17 Preston North End 1.19
#18 Burnley 1.11
#19 Bolton Wanderers 1.06
#20 Derby County 1.02
#21 Charlton Athletic 0.97
#22 Stoke City 0.94
#23 Blackburn Rovers 0.92
#24 Watford 0.82
League avg
1.38
Total
19.73 vs 20 actual pts

What the xG says

Birmingham City's underlying numbers are among the best in Championship. They rank #7 for xG difference at +0.37 per match, built on elite chance quality rather than about average shot volume. Their 20 goals are 0.32 below 20.32 xG, while 20 points are 0.27 above 19.73 xPts.

Actual vs expected

Measure Actual Expected Difference Reading
Goals vs xG Includes 1.63 xG from penalties
20 20.32 -0.32 scored 0.32 fewer than xG within normal variance
12 15.94 -3.94 conceded 3.94 fewer than xGA within normal variance

Select a row to chart it across the season.

Goals minus xG, match by match

Birmingham City are 0.32 goals below their xG after 12 matches. The gap was widest at -2.89, against West Bromwich Albion on Sat 10/10.

Goals
20
xG
20.32
Gap
-0.32
Sat 15/08 Sat 22/08 Fri 28/08 Tue 01/09 Sun 06/09 Wed 09/09 Sat 12/09 Sat 19/09 Sat 10/10 Tue 13/10 Sat 17/10 Sat 24/10 -3 -2 -1 0 +1 -0.77 -0.75 -0.37 -0.92 -0.31 -0.94 -2.11 -1.34 -2.89 -1.13 +0.57 -0.32 -0.77 +0.02 +0.38 -0.55 +0.61 -0.63 -1.17 +0.77 -1.55 +1.76 +1.70 -0.89 Running gap goals − xG Each match goals − xG
Birmingham City: Goals vs xG, the gap after every match with xG
Date Opponent Goals xG Match gap Running gap
Sat 15/08 Sheffield United 0 0.77 -0.77 -0.77
Sat 22/08 Bristol City 2 1.98 +0.02 -0.75
Fri 28/08 Wrexham 2 1.62 +0.38 -0.37
Tue 01/09 Southampton 1 1.55 -0.55 -0.92
Sun 06/09 Wolverhampton 2 1.39 +0.61 -0.31
Wed 09/09 Norwich City 1 1.63 -0.63 -0.94
Sat 12/09 Derby County 2 3.17 -1.17 -2.11
Sat 19/09 Middlesbrough 2 1.23 +0.77 -1.34
Sat 10/10 West Bromwich Albion 1 2.55 -1.55 -2.89
Tue 13/10 Preston North End 4 2.24 +1.76 -1.13
Sat 17/10 Queens Park Rangers 3 1.30 +1.70 +0.57
Sat 24/10 Cardiff City 0 0.89 -0.89 -0.32

Goals vs xG ranking → Expected points ranking →

Birmingham City xG trend

Current form +0.50 npxGD per match

The last 6 matches with xG.

Out-created the opponent in 8 of 12 matches. The worst was against Middlesbrough on Sat 19/09 (-0.95).

npxG · last 6
1.73
npxGA · last 6
1.23
-1 0 +1 +2 +3 +0.29 Sat 15/08 -0.24 Sat 22/08 +0.31 Fri 28/08 +0.26 Tue 01/09 -0.42 Sun 06/09 +0.97 Wed 09/09 +2.10 Sat 12/09 -0.95 Sat 19/09 +0.71 Sat 10/10 +1.72 Tue 13/10 +0.11 Sat 17/10 -0.69 Sat 24/10 +0.35 season avg
Birmingham City: non-penalty xG, xGA and their difference in each match, with the season's average so far
Date Opponent npxG npxGA npxGD Avg so far
Sat 15/08 Sheffield United 0.65 0.36 +0.29 +0.29
Sat 22/08 Bristol City 1.19 1.43 -0.24 +0.02
Fri 28/08 Wrexham 1.85 1.54 +0.31 +0.12
Tue 01/09 Southampton 1.21 0.95 +0.26 +0.16
Sun 06/09 Wolverhampton 1.61 2.03 -0.42 +0.04
Wed 09/09 Norwich City 1.79 0.82 +0.97 +0.19
Sat 12/09 Derby County 3.12 1.02 +2.10 +0.47
Sat 19/09 Middlesbrough 1.15 2.10 -0.95 +0.29
Sat 10/10 West Bromwich Albion 1.76 1.05 +0.71 +0.34
Tue 13/10 Preston North End 2.21 0.49 +1.72 +0.48
Sat 17/10 Queens Park Rangers 1.26 1.15 +0.11 +0.44
Sat 24/10 Cardiff City 0.89 1.58 -0.69 +0.35

Each bar is one match's non-penalty xG minus the non-penalty xG against; the line is that difference averaged over the season up to each match, and it finishes on the dashed season average — 1.56 npxG and 1.21 npxGA per match. Current form is the same difference over the last 6 matches with xG.

Form ranking →

Strength of schedule

Season so far
number 3 hardest of 24 in Championship
+0.08 xG vs league average
Over 12 league matches
Last 5
tied number 2 hardest of 24 in Championship
+0.18 xG vs league average
Over 5 league matches
Opponents behind the figures

Season so far

+0.08 xG vs league average · over 12 matches · number 3 hardest of 24

  1. Cardiff City Away +0.10
  2. Queens Park Rangers Home +0.24
  3. Preston North End Home −0.30
  4. West Bromwich Albion Away −0.02
  5. Middlesbrough Home +0.87
  6. Derby County Away −0.29
  7. Norwich City Away +0.03
  8. Wolverhampton Home +0.46
  9. Southampton Home +0.22
  10. Wrexham Away −0.02
  11. Bristol City Home −0.12
  12. Sheffield United Away −0.22

Last 5

+0.18 xG vs league average · over 5 matches · tied number 2 hardest of 24

  1. Cardiff City Away +0.10
  2. Queens Park Rangers Home +0.24
  3. Preston North End Home −0.30
  4. West Bromwich Albion Away −0.02
  5. Middlesbrough Home +0.87

League schedule strength → How this is calculated →

Birmingham City shots and chance quality

Average volume, high quality. Birmingham City take 13.2 shots a match (league 13.6) at 0.12 npxG a shot (league 0.10), #13 in Championship for volume and #3 for quality. 73% of their shots come from inside the box (league 67%), and set pieces produce 34% of their npxG (league 28%).

Attack

Shot volume
13.2 shots per match
#13/24
Shot volume (shots per match) across Championship, best first
Rank Club shots per match
#1 Middlesbrough 20.1
#2 West Ham United 17.3
#3 Cardiff City 17.1
#4 Wolverhampton 16.8
#5 Southampton 15.2
#6 Queens Park Rangers 14.8
#7 Portsmouth 14.6
#8 Norwich City 14.1
#9 Millwall 13.9
#10 Burnley 13.8
#11 Bolton Wanderers 13.7
#12 Bristol City 13.5
#13 Birmingham City 13.2
#14 Preston North End 12.7
#15 Derby County 12.6
#16 Lincoln City 12.3
=17 Watford 12.3
=17 West Bromwich Albion 12.3
#19 Wrexham 12.1
#20 Swansea City 11.8
#21 Blackburn Rovers 11.6
#22 Stoke City 11.3
#23 Sheffield United 10.8
#24 Charlton Athletic 10.0
League avg
13.6
Total
158 shots from 12 matches
Chance quality
0.12 npxG per shot
#3/24
Chance quality (npxG per shot) across Championship, best first
Rank Club npxG per shot
#1 Swansea City 0.12
#2 Millwall 0.12
#3 Birmingham City 0.12
#4 Middlesbrough 0.11
#5 West Ham United 0.11
#6 Southampton 0.11
#7 Sheffield United 0.10
#8 Charlton Athletic 0.10
#9 Queens Park Rangers 0.10
#10 Cardiff City 0.10
#11 West Bromwich Albion 0.10
#12 Preston North End 0.09
#13 Wolverhampton 0.09
#14 Lincoln City 0.09
#15 Norwich City 0.09
#16 Wrexham 0.09
#17 Bristol City 0.09
#18 Bolton Wanderers 0.09
#19 Burnley 0.08
#20 Blackburn Rovers 0.08
#21 Portsmouth 0.08
#22 Watford 0.08
#23 Derby County 0.07
#24 Stoke City 0.07
League avg
0.10
Total
18.69 npxG from 158 shots

Defence

Shots allowed
12.1 shots per match
=9/24
Shots allowed (shots per match) across Championship, best first
Rank Club shots per match
#1 Wolverhampton 10.3
=2 Portsmouth 10.9
=2 Swansea City 10.9
#4 Middlesbrough 11.1
#5 Queens Park Rangers 11.4
#6 West Ham United 11.8
#7 Bristol City 11.9
#8 Wrexham 12.1
=9 Birmingham City 12.1
=9 Norwich City 12.1
=9 West Bromwich Albion 12.1
#12 Millwall 13.0
#13 Bolton Wanderers 14.3
#14 Cardiff City 14.4
#15 Burnley 14.7
#16 Sheffield United 15.0
#17 Derby County 15.1
#18 Stoke City 15.5
#19 Lincoln City 15.7
#20 Southampton 15.8
#21 Preston North End 16.2
#22 Watford 16.6
#23 Charlton Athletic 17.0
#24 Blackburn Rovers 17.3
League avg
13.6
Total
145 shots allowed from 12 matches
Chance quality allowed
0.10 npxGA per shot
#18/24
Chance quality allowed (npxGA per shot) across Championship, best first
Rank Club npxGA per shot
#1 Southampton 0.07
#2 Charlton Athletic 0.08
#3 Wolverhampton 0.08
#4 Blackburn Rovers 0.08
#5 Lincoln City 0.09
#6 Sheffield United 0.09
#7 Middlesbrough 0.09
#8 West Ham United 0.09
#9 Millwall 0.09
#10 Preston North End 0.09
#11 Stoke City 0.09
#12 Wrexham 0.09
#13 Bristol City 0.09
#14 Queens Park Rangers 0.10
#15 Portsmouth 0.10
#16 Cardiff City 0.10
#17 Burnley 0.10
#18 Birmingham City 0.10
#19 Swansea City 0.10
#20 Watford 0.10
#21 Derby County 0.11
#22 West Bromwich Albion 0.12
#23 Norwich City 0.12
#24 Bolton Wanderers 0.13
League avg
0.10
Total
14.52 npxGA from 145 shots

Shot profile

Shot location

73% inside the box

League avg 67%

From 116 of 158 shots over 12 matches

Shots allowed, location

71% allowed inside the box

League avg 67%

From 103 of 145 shots allowed over 12 matches

Where the npxG comes from

66% open play · 34% set pieces

League avg 28% set pieces

From 6.4 of 18.8 npxG over 12 matches

Where the npxG allowed comes from

64% open play · 36% set pieces

League avg 28% set pieces

From 5.3 of 14.5 npxG allowed over 12 matches

Birmingham City home and away xG

Birmingham City per-match figures at home and away
Measure Home Away
Matches 6 6
xG / match 1.62 1.77
xGA / match 1.45 1.21
xGD / match +0.17 +0.57
xPts / match Model — Model output — computed from each match's xG, not a result. How xPts works → 1.52 1.77

Every figure divides by that half's matches with xG. A half with fewer than 3 matches with xG is muted.

Every Birmingham City match by xG

Venue

Newest first. The dot is xG and the ring is xGA, on one scale from 0 to 3.00. Best and weakest underlying mark the highest and lowest xGD once 5 matches have xG. Against the chances marks a win with xGD of −1.00 or lower, or a loss with +1.00 or higher. P marks a side with at least 0.50 xG from penalties.

Every result, all competitions →

Birmingham City in Championship

Attack

Defence

About the data

xG data
Provided by TheStatsAPI, and stored as published.
Derived metrics
xGD, per-match rates, rankings and rolling averages are calculated from the match data.
Model metrics
xPts is produced by our probability model.

Learn how our xG analytics work →

How the model works →