Expected goals
1. FC Heidenheim expected goals (xG) 2025/2026
Bundesliga · after 34 matches · updated 1 Oct
1. FC Heidenheim's attacking and defensive expected goals in Bundesliga 2025/2026, compared with the results they produced and with the rest of the competition.
1. FC Heidenheim xG and xGA per match
Every match ↓| Rank | Club | xG per match |
|---|---|---|
| #1 | FC Bayern München | 2.95 |
| #2 | RB Leipzig | 1.95 |
| #3 | Bayer 04 Leverkusen | 1.89 |
| #4 | Borussia Dortmund | 1.86 |
| #5 | VfB Stuttgart | 1.77 |
| #6 | TSG Hoffenheim | 1.64 |
| #7 | 1. FSV Mainz 05 | 1.62 |
| #8 | 1. FC Köln | 1.51 |
| #9 | SC Freiburg | 1.42 |
| #10 | 1. FC Heidenheim | 1.40 |
| #11 | VfL Wolfsburg | 1.39 |
| #12 | FC Augsburg | 1.36 |
| #13 | Eintracht Frankfurt | 1.35 |
| #14 | 1. FC Union Berlin | 1.34 |
| #15 | Borussia M'gladbach | 1.25 |
| #16 | SV Werder Bremen | 1.21 |
| #17 | Hamburger SV | 1.20 |
| #18 | FC St. Pauli | 0.89 |
- League avg
- 1.56
- Total
- 47.55 34 matches
| Rank | Club | xGA per match |
|---|---|---|
| #1 | Borussia Dortmund | 1.15 |
| #2 | FC Bayern München | 1.21 |
| #3 | Bayer 04 Leverkusen | 1.35 |
| #4 | SC Freiburg | 1.40 |
| #5 | Eintracht Frankfurt | 1.46 |
| #6 | RB Leipzig | 1.48 |
| #7 | TSG Hoffenheim | 1.48 |
| #8 | VfB Stuttgart | 1.49 |
| #9 | 1. FC Union Berlin | 1.53 |
| #10 | Borussia M'gladbach | 1.56 |
| #11 | SV Werder Bremen | 1.60 |
| #12 | 1. FC Köln | 1.63 |
| #13 | 1. FSV Mainz 05 | 1.64 |
| #14 | FC St. Pauli | 1.68 |
| #15 | Hamburger SV | 1.78 |
| #16 | VfL Wolfsburg | 1.80 |
| #17 | FC Augsburg | 1.87 |
| #18 | 1. FC Heidenheim | 1.88 |
- League avg
- 1.56
- Total
- 63.83 34 matches
| Rank | Club | xGD per match |
|---|---|---|
| #1 | FC Bayern München | +1.74 |
| #2 | Borussia Dortmund | +0.71 |
| #3 | Bayer 04 Leverkusen | +0.55 |
| #4 | RB Leipzig | +0.47 |
| #5 | VfB Stuttgart | +0.28 |
| #6 | TSG Hoffenheim | +0.15 |
| #7 | SC Freiburg | +0.03 |
| #8 | 1. FSV Mainz 05 | -0.03 |
| #9 | 1. FC Köln | -0.11 |
| #10 | Eintracht Frankfurt | -0.11 |
| #11 | 1. FC Union Berlin | -0.20 |
| #12 | Borussia M'gladbach | -0.31 |
| #13 | SV Werder Bremen | -0.40 |
| #14 | VfL Wolfsburg | -0.41 |
| #15 | 1. FC Heidenheim | -0.48 |
| #16 | FC Augsburg | -0.51 |
| #17 | Hamburger SV | -0.58 |
| #18 | FC St. Pauli | -0.80 |
- League avg
- 0.00
- Total
- -16.28 34 matches
| Rank | Club | xPts per match |
|---|---|---|
| #1 | FC Bayern München | 2.28 |
| #2 | Borussia Dortmund | 1.78 |
| #3 | Bayer 04 Leverkusen | 1.70 |
| #4 | RB Leipzig | 1.68 |
| #5 | VfB Stuttgart | 1.61 |
| #6 | TSG Hoffenheim | 1.51 |
| #7 | 1. FSV Mainz 05 | 1.43 |
| #8 | SC Freiburg | 1.38 |
| #9 | 1. FC Union Berlin | 1.36 |
| #10 | Eintracht Frankfurt | 1.32 |
| #11 | 1. FC Köln | 1.27 |
| #12 | SV Werder Bremen | 1.18 |
| #13 | VfL Wolfsburg | 1.17 |
| #14 | Borussia M'gladbach | 1.16 |
| #15 | FC Augsburg | 1.14 |
| #16 | 1. FC Heidenheim | 1.11 |
| #17 | Hamburger SV | 1.07 |
| #18 | FC St. Pauli | 0.87 |
- League avg
- 1.39
- Total
- 37.79 vs 26 actual pts
What the xG says
1. FC Heidenheim's underlying numbers are among the weakest in Bundesliga. They rank #15 for xG difference at -0.48 per match, built on elite chance quality rather than low shot volume. Their 41 goals are 6.55 below 47.55 xG, while 26 points are 11.79 below 37.79 xPts.
Actual vs expected
Select a row to chart it across the season.
Goals minus xG, match by match
1. FC Heidenheim are 6.55 goals below their xG after 34 matches. The gap was widest at -10.10, against SV Werder Bremen on Sat 28/02.
- Goals
- 41
- xG
- 47.55
- Gap
- -6.55
- This match
- Match gap
- Running gap
| Date | Opponent | Goals | xG | Match gap | Running gap |
|---|---|---|---|---|---|
| Sat 23/08 | VfL Wolfsburg | 1 | 0.72 | +0.28 | +0.28 |
| Sat 30/08 | RB Leipzig | 0 | 1.02 | -1.02 | -0.74 |
| Sat 13/09 | Borussia Dortmund | 0 | 0.40 | -0.40 | -1.14 |
| Sat 20/09 | Hamburger SV | 1 | 2.98 | -1.98 | -3.12 |
| Sat 27/09 | FC Augsburg | 2 | 1.24 | +0.76 | -2.36 |
| Sun 05/10 | VfB Stuttgart | 0 | 0.38 | -0.38 | -2.74 |
| Sat 18/10 | SV Werder Bremen | 2 | 3.00 | -1.00 | -3.74 |
| Sat 25/10 | TSG Hoffenheim | 1 | 1.11 | -0.11 | -3.85 |
| Sat 01/11 | Eintracht Frankfurt | 1 | 0.62 | +0.38 | -3.47 |
| Sat 08/11 | Bayer 04 Leverkusen | 0 | 0.12 | -0.12 | -3.59 |
| Sat 22/11 | Borussia M'gladbach | 0 | 0.33 | -0.33 | -3.92 |
| Sat 29/11 | 1. FC Union Berlin | 2 | 0.59 | +1.41 | -2.51 |
| Sat 06/12 | SC Freiburg | 2 | 2.22 | -0.22 | -2.73 |
| Sat 13/12 | FC St. Pauli | 1 | 2.44 | -1.44 | -4.17 |
| Sun 21/12 | FC Bayern München | 0 | 1.04 | -1.04 | -5.21 |
| Sat 10/01 | 1. FC Köln | 2 | 1.93 | +0.07 | -5.14 |
| Tue 13/01 | 1. FSV Mainz 05 | 1 | 1.55 | -0.55 | -5.69 |
| Sat 17/01 | VfL Wolfsburg | 1 | 0.99 | +0.01 | -5.68 |
| Sat 24/01 | RB Leipzig | 0 | 1.26 | -1.26 | -6.94 |
| Sun 01/02 | Borussia Dortmund | 2 | 2.26 | -0.26 | -7.20 |
| Sat 07/02 | Hamburger SV | 0 | 1.53 | -1.53 | -8.73 |
| Sun 15/02 | FC Augsburg | 0 | 0.97 | -0.97 | -9.70 |
| Sun 22/02 | VfB Stuttgart | 3 | 2.04 | +0.96 | -8.74 |
| Sat 28/02 | SV Werder Bremen | 0 | 1.36 | -1.36 | -10.10 |
| Sat 07/03 | TSG Hoffenheim | 2 | 1.07 | +0.93 | -9.17 |
| Sat 14/03 | Eintracht Frankfurt | 0 | 0.15 | -0.15 | -9.32 |
| Sat 21/03 | Bayer 04 Leverkusen | 3 | 1.57 | +1.43 | -7.89 |
| Sat 04/04 | Borussia M'gladbach | 2 | 1.14 | +0.86 | -7.03 |
| Sat 11/04 | 1. FC Union Berlin | 3 | 1.85 | +1.15 | -5.88 |
| Sun 19/04 | SC Freiburg | 1 | 1.58 | -0.58 | -6.46 |
| Sat 25/04 | FC St. Pauli | 2 | 1.61 | +0.39 | -6.07 |
| Sat 02/05 | FC Bayern München | 3 | 2.59 | +0.41 | -5.66 |
| Sun 10/05 | 1. FC Köln | 3 | 1.36 | +1.64 | -4.02 |
| Sat 16/05 | 1. FSV Mainz 05 | 0 | 2.53 | -2.53 | -6.55 |
1. FC Heidenheim xG trend
Current form +0.21 npxGD per match
The last 6 matches with xG.
Out-created the opponent in 13 of 34 matches. The worst was against FC Bayern München on Sun 21/12 (-3.36).
- npxG · last 6
- 1.94
- npxGA · last 6
- 1.73
- npxG
- npxGA
- npxGD
- Avg so far
| Date | Opponent | npxG | npxGA | npxGD | Avg so far |
|---|---|---|---|---|---|
| Sat 23/08 | VfL Wolfsburg | 0.72 | 1.66 | -0.94 | -0.94 |
| Sat 30/08 | RB Leipzig | 1.02 | 2.23 | -1.21 | -1.07 |
| Sat 13/09 | Borussia Dortmund | 0.40 | 2.76 | -2.36 | -1.50 |
| Sat 20/09 | Hamburger SV | 3.00 | 2.37 | +0.63 | -0.97 |
| Sat 27/09 | FC Augsburg | 1.24 | 0.00 | +1.24 | -0.53 |
| Sun 05/10 | VfB Stuttgart | 0.55 | 0.99 | -0.44 | -0.51 |
| Sat 18/10 | SV Werder Bremen | 3.00 | 1.34 | +1.66 | -0.20 |
| Sat 25/10 | TSG Hoffenheim | 1.17 | 2.37 | -1.20 | -0.33 |
| Sat 01/11 | Eintracht Frankfurt | 0.62 | 0.94 | -0.32 | -0.33 |
| Sat 08/11 | Bayer 04 Leverkusen | 0.15 | 3.31 | -3.16 | -0.61 |
| Sat 22/11 | Borussia M'gladbach | 0.40 | 1.41 | -1.01 | -0.65 |
| Sat 29/11 | 1. FC Union Berlin | 0.59 | 0.97 | -0.38 | -0.62 |
| Sat 06/12 | SC Freiburg | 2.22 | 0.84 | +1.38 | -0.47 |
| Sat 13/12 | FC St. Pauli | 2.44 | 0.77 | +1.67 | -0.32 |
| Sun 21/12 | FC Bayern München | 1.16 | 4.52 | -3.36 | -0.52 |
| Sat 10/01 | 1. FC Köln | 1.90 | 2.99 | -1.09 | -0.56 |
| Tue 13/01 | 1. FSV Mainz 05 | 1.62 | 1.39 | +0.23 | -0.51 |
| Sat 17/01 | VfL Wolfsburg | 1.00 | 1.08 | -0.08 | -0.49 |
| Sat 24/01 | RB Leipzig | 1.26 | 1.69 | -0.43 | -0.48 |
| Sun 01/02 | Borussia Dortmund | 2.26 | 1.74 | +0.52 | -0.43 |
| Sat 07/02 | Hamburger SV | 1.53 | 1.48 | +0.05 | -0.41 |
| Sun 15/02 | FC Augsburg | 0.96 | 1.26 | -0.30 | -0.40 |
| Sun 22/02 | VfB Stuttgart | 1.34 | 1.46 | -0.12 | -0.39 |
| Sat 28/02 | SV Werder Bremen | 1.47 | 2.74 | -1.27 | -0.43 |
| Sat 07/03 | TSG Hoffenheim | 1.07 | 2.42 | -1.35 | -0.47 |
| Sat 14/03 | Eintracht Frankfurt | 0.15 | 0.92 | -0.77 | -0.48 |
| Sat 21/03 | Bayer 04 Leverkusen | 0.79 | 1.62 | -0.83 | -0.49 |
| Sat 04/04 | Borussia M'gladbach | 1.14 | 0.73 | +0.41 | -0.46 |
| Sat 11/04 | 1. FC Union Berlin | 2.07 | 0.94 | +1.13 | -0.40 |
| Sun 19/04 | SC Freiburg | 1.64 | 1.62 | +0.02 | -0.39 |
| Sat 25/04 | FC St. Pauli | 1.59 | 1.11 | +0.48 | -0.36 |
| Sat 02/05 | FC Bayern München | 2.13 | 2.21 | -0.08 | -0.35 |
| Sun 10/05 | 1. FC Köln | 1.38 | 1.16 | +0.22 | -0.34 |
| Sat 16/05 | 1. FSV Mainz 05 | 2.80 | 3.32 | -0.52 | -0.34 |
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.38 npxG and 1.72 npxGA per match. Current form is the same difference over the last 6 matches with xG.
Strength of schedule
- Season so far
- tied number 4 hardest of 18 in Bundesliga
- +0.01 xG vs league average
- Over 34 league matches
- Last 5
- number 6 hardest of 17 in Bundesliga
- +0.04 xG vs league average
- Over 5 league matches
Opponents behind the figures
Season so far
+0.01 xG vs league average · over 34 matches · tied number 4 hardest of 18
- 1. FSV Mainz 05 Home +0.14
- 1. FC Köln Away +0.06
- FC Bayern München Away +0.73
- FC St. Pauli Home −0.49
- SC Freiburg Away −0.27
- 1. FC Union Berlin Home −0.06
- Borussia M'gladbach Away −0.20
- Bayer 04 Leverkusen Home +0.29
- Eintracht Frankfurt Away −0.21
- TSG Hoffenheim Home +0.22
- SV Werder Bremen Away −0.09
- VfB Stuttgart Home +0.28
- FC Augsburg Away −0.24
- Hamburger SV Home −0.38
- Borussia Dortmund Away +0.36
- RB Leipzig Home +0.28
- VfL Wolfsburg Away −0.21
- 1. FSV Mainz 05 Away +0.14
- 1. FC Köln Home +0.06
- FC Bayern München Home +0.73
- FC St. Pauli Away −0.49
- SC Freiburg Home −0.27
- 1. FC Union Berlin Away −0.06
- Borussia M'gladbach Home −0.20
- Bayer 04 Leverkusen Away +0.29
- Eintracht Frankfurt Home −0.21
- TSG Hoffenheim Away +0.22
- SV Werder Bremen Home −0.09
- VfB Stuttgart Away +0.28
- FC Augsburg Home −0.24
- Hamburger SV Away −0.38
- Borussia Dortmund Home +0.36
- RB Leipzig Away +0.28
- VfL Wolfsburg Home −0.21
Last 5
+0.04 xG vs league average · over 5 matches · number 6 hardest of 17
- 1. FSV Mainz 05 Home +0.14
- 1. FC Köln Away +0.06
- FC Bayern München Away +0.73
- FC St. Pauli Home −0.49
- SC Freiburg Away −0.27
1. FC Heidenheim shots and chance quality
Low volume, high quality. 1. FC Heidenheim take 11.4 shots a match (league 13.2) at 0.12 npxG a shot (league 0.11), #17 in Bundesliga for volume and #3 for quality. 69% of their shots come from inside the box (league 68%), and set pieces produce 33% of their npxG (league 25%).
Attack
| Rank | Club | shots per match |
|---|---|---|
| #1 | FC Bayern München | 19.2 |
| #2 | RB Leipzig | 15.8 |
| #3 | VfB Stuttgart | 15.3 |
| #4 | Bayer 04 Leverkusen | 15.1 |
| #5 | TSG Hoffenheim | 14.1 |
| #6 | 1. FC Köln | 13.4 |
| #7 | FC Augsburg | 13.2 |
| =8 | Borussia Dortmund | 13.1 |
| =8 | SV Werder Bremen | 13.1 |
| #10 | 1. FC Union Berlin | 12.5 |
| #11 | Hamburger SV | 12.3 |
| #12 | SC Freiburg | 12.2 |
| #13 | 1. FSV Mainz 05 | 12.1 |
| #14 | Eintracht Frankfurt | 12.0 |
| #15 | VfL Wolfsburg | 11.9 |
| #16 | Borussia M'gladbach | 11.6 |
| #17 | 1. FC Heidenheim | 11.4 |
| #18 | FC St. Pauli | 10.2 |
- League avg
- 13.2
- Total
- 389 shots from 34 matches
| Rank | Club | npxG per shot |
|---|---|---|
| #1 | FC Bayern München | 0.14 |
| #2 | Borussia Dortmund | 0.13 |
| #3 | 1. FC Heidenheim | 0.12 |
| #4 | RB Leipzig | 0.12 |
| #5 | 1. FSV Mainz 05 | 0.12 |
| #6 | VfL Wolfsburg | 0.11 |
| #7 | Bayer 04 Leverkusen | 0.11 |
| #8 | TSG Hoffenheim | 0.11 |
| #9 | 1. FC Köln | 0.11 |
| #10 | SC Freiburg | 0.11 |
| #11 | VfB Stuttgart | 0.10 |
| #12 | 1. FC Union Berlin | 0.10 |
| #13 | Eintracht Frankfurt | 0.10 |
| #14 | Borussia M'gladbach | 0.10 |
| #15 | FC Augsburg | 0.09 |
| #16 | Hamburger SV | 0.09 |
| #17 | SV Werder Bremen | 0.09 |
| #18 | FC St. Pauli | 0.08 |
- League avg
- 0.11
- Total
- 46.78 npxG from 389 shots
Defence
| Rank | Club | shots per match |
|---|---|---|
| #1 | FC Bayern München | 10.5 |
| #2 | Borussia Dortmund | 10.7 |
| #3 | RB Leipzig | 12.1 |
| #4 | TSG Hoffenheim | 12.3 |
| #5 | FC St. Pauli | 12.4 |
| =6 | Eintracht Frankfurt | 12.6 |
| =6 | VfB Stuttgart | 12.6 |
| #8 | Bayer 04 Leverkusen | 12.8 |
| #9 | 1. FC Union Berlin | 12.9 |
| #10 | 1. FC Köln | 13.6 |
| #11 | SV Werder Bremen | 13.7 |
| #12 | SC Freiburg | 13.8 |
| #13 | 1. FSV Mainz 05 | 14.1 |
| #14 | Borussia M'gladbach | 14.2 |
| #15 | Hamburger SV | 14.6 |
| #16 | FC Augsburg | 14.8 |
| #17 | 1. FC Heidenheim | 15.3 |
| #18 | VfL Wolfsburg | 15.4 |
- League avg
- 13.2
- Total
- 519 shots allowed from 34 matches
| Rank | Club | npxGA per shot |
|---|---|---|
| #1 | Bayer 04 Leverkusen | 0.09 |
| #2 | SC Freiburg | 0.10 |
| #3 | VfL Wolfsburg | 0.10 |
| #4 | VfB Stuttgart | 0.10 |
| #5 | Borussia M'gladbach | 0.10 |
| #6 | Borussia Dortmund | 0.10 |
| #7 | SV Werder Bremen | 0.11 |
| #8 | 1. FC Union Berlin | 0.11 |
| #9 | 1. FC Köln | 0.11 |
| #10 | Hamburger SV | 0.11 |
| #11 | FC Bayern München | 0.11 |
| #12 | Eintracht Frankfurt | 0.11 |
| #13 | 1. FC Heidenheim | 0.11 |
| #14 | TSG Hoffenheim | 0.11 |
| #15 | 1. FSV Mainz 05 | 0.11 |
| #16 | RB Leipzig | 0.12 |
| #17 | FC Augsburg | 0.12 |
| #18 | FC St. Pauli | 0.13 |
- League avg
- 0.11
- Total
- 58.36 npxGA from 519 shots
Shot profile
69% inside the box
League avg 68%
From 269 of 389 shots over 34 matches
67% allowed inside the box
League avg 68%
From 346 of 519 shots allowed over 34 matches
67% open play · 33% set pieces
League avg 25% set pieces
From 15.4 of 46.8 npxG over 34 matches
78% open play · 22% set pieces
League avg 25% set pieces
From 13.0 of 58.7 npxG allowed over 34 matches
1. FC Heidenheim home and away xG
| Measure | Home | Away |
|---|---|---|
| Matches | 17 | 17 |
| xG / match | 1.47 | 1.33 |
| xGA / match | 1.99 | 1.76 |
| xGD / match | -0.52 | -0.43 |
| xPts / match Model — Model output — computed from each match's xG, not a result. How xPts works → | 1.12 | 1.10 |
Every figure divides by that half's matches with xG. A half with fewer than 3 matches with xG is muted.
Every 1. FC Heidenheim match by xG
At home this season
- Matches
- 17
- xG / match
- 1.47
- xGA / match
- 1.99
- xGD / match
- -0.52
- Points
- 17 of 51
- Sat 16/05 1. FSV Mainz 05 H xG 2.53 xGA 3.71 xGD -1.18 xPts 0.78
- Sat 25/04 FC St. Pauli H xG 1.61 xGA 1.06 xGD +0.55 xPts 1.80
- Sat 11/04 1. FC Union Berlin H xG 1.85 xGA 0.99 xGD +0.86 xPts 2.03
- Sat 21/03 Bayer 04 Leverkusen H xG 1.57 P xGA 1.62 xGD -0.05 xPts 1.33
- Sat 07/03 TSG Hoffenheim H xG 1.07 xGA 2.34 xGD -1.27 xPts 0.54
- Sun 22/02 VfB Stuttgart H xG 2.04 P xGA 2.24 P xGD -0.20 xPts 1.25
- Sat 07/02 Hamburger SV H xG 1.53 xGA 1.48 xGD +0.05 xPts 1.40
- Sat 24/01 RB Leipzig H xG 1.26 xGA 1.69 xGD -0.43 xPts 1.03
- Sat 10/01 1. FC Köln H xG 1.93 xGA 2.99 xGD -1.06 xPts 0.77
- Sun 21/12 FC Bayern München H Weakest underlying xG 1.04 xGA 4.44 xGD -3.40 xPts 0.09
- Sat 06/12 SC Freiburg H xG 2.22 xGA 0.84 xGD +1.38 xPts 2.36
- Sat 22/11 Borussia M'gladbach H xG 0.33 xGA 2.18 P xGD -1.85 xPts 0.20
- Sat 01/11 Eintracht Frankfurt H xG 0.62 xGA 0.94 xGD -0.32 xPts 1.00
- Sat 18/10 SV Werder Bremen H Best underlying xG 3.00 xGA 1.33 xGD +1.67 xPts 2.41
- Sat 27/09 FC Augsburg H xG 1.24 xGA 0.82 P xGD +0.42 xPts 1.71
- Sat 13/09 Borussia Dortmund H xG 0.40 xGA 2.76 xGD -2.36 xPts 0.12
- Sat 23/08 VfL Wolfsburg H xG 0.72 xGA 2.45 P xGD -1.73 xPts 0.30
Newest first. The dot is xG and the ring is xGA, on one scale from 0 to 4.44. 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.
1. FC Heidenheim in Bundesliga
Attack
- xG / match #10 of 18
- Shots / match #17 of 18
- Chance quality #3 of 18
- Home xG #13 of 19
- Away xG #10 of 19
Defence
- xGA / match #18 of 18
- Shots allowed #17 of 18
- Chance quality allowed #13 of 18
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.