Bundesliga
xG Table · 2025/26
Model figures — expected goals scored by TrueGoals, not actual match xG.
Season leaders
Top xG
- Bayern Munich75.6
- RB Leipzig58.3
- Stuttgart56.9
- Hoffenheim50.1
- Leverkusen49.9
Biggest over-performers
- Dortmund+18.5
- Bayern Munich+13.0
- Leverkusen+12.6
- Hoffenheim+11.6
- Stuttgart+10.6
Biggest under-performers
- Wolfsburg-15.7
- FC Koln-12.4
- Werder Bremen-10.7
- Heidenheim-10.6
- Hamburg-8.8
Best defences (lowest xGA)
- Bayern Munich26.3
- Dortmund36.2
- RB Leipzig37.5
- Union Berlin43.2
- Hoffenheim48.2
Biggest xG difference
- Bayern Munich+49.3
- RB Leipzig+20.8
- Dortmund+12.5
- Stuttgart+6.0
- Hoffenheim+1.9
| # | Team | Matches played. | Goals scored (actual). | Expected goals for: goals our model (TrueGoals) says this team's performances typically produce. | Expected goals against: same, for goals conceded. | Expected goal difference (xGF minus xGA). | Actual league points. | Expected points: points the team “should” have won based on xG, via match simulation. | Actual points minus expected points. Positive = over-performing its underlying numbers (may regress); negative = under-performing. |
|---|---|---|---|---|---|---|---|---|---|
| 1 | Bayern Munich | 34 | 122 | 75.6 | 26.3 | +49.3 | 89 | 76.0 | +13.0 |
| 2 | RB Leipzig | 34 | 66 | 58.3 | 37.5 | +20.8 | 65 | 59.5 | +5.5 |
| 3 | Dortmund | 34 | 70 | 48.7 | 36.2 | +12.5 | 73 | 54.5 | +18.5 |
| 4 | Stuttgart | 34 | 71 | 56.9 | 50.9 | +6.0 | 62 | 51.4 | +10.6 |
| 5 | Hoffenheim | 34 | 65 | 50.1 | 48.2 | +1.9 | 61 | 49.4 | +11.6 |
| 6 | Hamburg | 34 | 40 | 49.0 | 49.2 | -0.2 | 38 | 46.8 | -8.8 |
| 7 | Leverkusen | 34 | 68 | 49.9 | 50.7 | -0.8 | 59 | 46.4 | +12.6 |
| 8 | Augsburg | 34 | 45 | 48.7 | 50.1 | -1.4 | 43 | 46.9 | -3.9 |
| 9 | FC Koln | 34 | 49 | 47.0 | 49.0 | -2.0 | 32 | 44.4 | -12.4 |
| 10 | Union Berlin | 34 | 44 | 39.4 | 43.2 | -3.8 | 39 | 43.7 | -4.7 |
| 11 | Wolfsburg | 34 | 45 | 44.5 | 48.6 | -4.1 | 29 | 44.7 | -15.7 |
| 12 | Ein Frankfurt | 34 | 61 | 48.4 | 52.8 | -4.5 | 44 | 44.7 | -0.7 |
| 13 | Freiburg | 34 | 51 | 44.9 | 50.4 | -5.5 | 47 | 43.2 | +3.8 |
| 14 | M'gladbach | 34 | 42 | 46.1 | 54.3 | -8.2 | 38 | 43.4 | -5.4 |
| 15 | Werder Bremen | 34 | 37 | 43.2 | 52.1 | -8.9 | 32 | 42.7 | -10.7 |
| 16 | Mainz | 34 | 44 | 41.8 | 52.1 | -10.2 | 40 | 40.5 | -0.5 |
| 17 | Heidenheim | 34 | 41 | 37.2 | 53.8 | -16.6 | 26 | 36.6 | -10.6 |
| 18 | St Pauli | 34 | 29 | 35.7 | 59.8 | -24.1 | 26 | 32.7 | -6.7 |
| 1 | Bayern Munich | 17 | 68 | 39.1 | 12.3 | +26.9 | 44 | 39.0 | +5.0 |
| 2 | RB Leipzig | 17 | 40 | 35.4 | 17.0 | +18.4 | 38 | 34.4 | +3.6 |
| 3 | Stuttgart | 17 | 30 | 30.1 | 19.8 | +10.3 | 39 | 30.1 | +8.9 |
| 4 | Leverkusen | 17 | 38 | 30.6 | 21.0 | +9.5 | 31 | 29.1 | +1.9 |
| 5 | Dortmund | 17 | 40 | 26.4 | 17.3 | +9.2 | 41 | 29.3 | +11.7 |
| 6 | Hamburg | 17 | 25 | 25.5 | 17.4 | +8.1 | 24 | 27.5 | -3.5 |
| 7 | Hoffenheim | 17 | 35 | 29.1 | 21.6 | +7.5 | 32 | 28.1 | +3.9 |
| 8 | Ein Frankfurt | 17 | 29 | 28.1 | 21.4 | +6.7 | 25 | 27.7 | -2.7 |
| 9 | Freiburg | 17 | 33 | 27.5 | 20.8 | +6.7 | 32 | 27.3 | +4.7 |
| 10 | Augsburg | 17 | 25 | 27.6 | 21.1 | +6.4 | 26 | 27.7 | -1.7 |
| 11 | M'gladbach | 17 | 24 | 27.1 | 21.0 | +6.1 | 24 | 27.8 | -3.8 |
| 12 | FC Koln | 17 | 30 | 28.4 | 22.5 | +5.9 | 19 | 26.6 | -7.6 |
| 13 | Union Berlin | 17 | 26 | 22.8 | 18.7 | +4.1 | 22 | 25.6 | -3.6 |
| 14 | Wolfsburg | 17 | 21 | 24.9 | 22.7 | +2.2 | 10 | 25.0 | -15.0 |
| 15 | Werder Bremen | 17 | 19 | 24.5 | 22.6 | +1.9 | 19 | 25.3 | -6.3 |
| 16 | Mainz | 17 | 21 | 20.8 | 22.0 | -1.2 | 17 | 22.1 | -5.1 |
| 17 | Heidenheim | 17 | 23 | 21.8 | 25.4 | -3.6 | 17 | 21.8 | -4.8 |
| 18 | St Pauli | 17 | 17 | 22.5 | 28.5 | -6.0 | 17 | 20.3 | -3.3 |
| 1 | Bayern Munich | 17 | 54 | 36.4 | 14.1 | +22.4 | 45 | 37.0 | +8.0 |
| 2 | Dortmund | 17 | 30 | 22.3 | 19.0 | +3.3 | 32 | 25.2 | +6.8 |
| 3 | RB Leipzig | 17 | 26 | 22.9 | 20.5 | +2.3 | 27 | 25.0 | +2.0 |
| 4 | Stuttgart | 17 | 41 | 26.8 | 31.1 | -4.3 | 23 | 21.3 | +1.7 |
| 5 | Hoffenheim | 17 | 30 | 21.0 | 26.6 | -5.6 | 29 | 21.2 | +7.8 |
| 6 | Wolfsburg | 17 | 24 | 19.6 | 25.9 | -6.3 | 19 | 19.8 | -0.8 |
| 7 | Augsburg | 17 | 20 | 21.2 | 29.0 | -7.8 | 17 | 19.2 | -2.2 |
| 8 | FC Koln | 17 | 19 | 18.6 | 26.5 | -7.9 | 13 | 17.8 | -4.8 |
| 9 | Union Berlin | 17 | 18 | 16.7 | 24.6 | -7.9 | 17 | 18.1 | -1.1 |
| 10 | Hamburg | 17 | 15 | 23.4 | 31.8 | -8.3 | 14 | 19.4 | -5.4 |
| 11 | Mainz | 17 | 23 | 21.1 | 30.1 | -9.0 | 23 | 18.4 | +4.6 |
| 12 | Leverkusen | 17 | 30 | 19.3 | 29.7 | -10.4 | 28 | 17.2 | +10.8 |
| 13 | Werder Bremen | 17 | 18 | 18.7 | 29.5 | -10.8 | 13 | 17.4 | -4.4 |
| 14 | Ein Frankfurt | 17 | 32 | 20.2 | 31.5 | -11.2 | 19 | 16.9 | +2.1 |
| 15 | Freiburg | 17 | 18 | 17.4 | 29.6 | -12.2 | 15 | 15.9 | -0.9 |
| 16 | Heidenheim | 17 | 18 | 15.4 | 28.4 | -13.0 | 9 | 14.8 | -5.8 |
| 17 | M'gladbach | 17 | 18 | 19.0 | 33.4 | -14.3 | 14 | 15.6 | -1.6 |
| 18 | St Pauli | 17 | 12 | 13.2 | 31.3 | -18.1 | 9 | 12.4 | -3.4 |
First half / second half
Descriptive — actual half-time and full-time facts (2025/26), not predictions.
| Team | Pld | Goals scored in the first half. | Goals scored in the second half (full-time minus half-time). | Goals conceded in the first half. | Goals conceded in the second half. | Share of the team's goals scored in the second half. Shown only when there are enough goals to be meaningful. | Comebacks: matches the team was trailing at half-time but ended up winning or drawing. | Leads lost: matches the team was leading at half-time but ended up drawing or losing. |
|---|---|---|---|---|---|---|---|---|
| Augsburg | 34 | 21 | 24 | 31 | 30 | 53% | 2 | 4 |
| Bayern Munich | 34 | 50 | 72 | 19 | 17 | 59% | 5 | 1 |
| Dortmund | 34 | 32 | 38 | 11 | 23 | 54% | 2 | 4 |
| Ein Frankfurt | 34 | 27 | 34 | 27 | 38 | 56% | 3 | 2 |
| FC Koln | 34 | 19 | 30 | 28 | 35 | 61% | 3 | 1 |
| Freiburg | 34 | 20 | 31 | 22 | 35 | 61% | 4 | 1 |
| Hamburg | 34 | 17 | 23 | 25 | 29 | 58% | 3 | 1 |
| Heidenheim | 34 | 16 | 25 | 33 | 39 | 61% | 3 | 4 |
| Hoffenheim | 34 | 36 | 29 | 26 | 26 | 45% | 1 | 2 |
| Leverkusen | 34 | 40 | 28 | 26 | 21 | 41% | 1 | 3 |
| M'gladbach | 34 | 17 | 25 | 29 | 24 | 60% | 0 | 1 |
| Mainz | 34 | 23 | 21 | 23 | 30 | 48% | 4 | 6 |
| RB Leipzig | 34 | 32 | 34 | 17 | 30 | 52% | 1 | 2 |
| St Pauli | 34 | 11 | 18 | 23 | 37 | 62% | 1 | 2 |
| Stuttgart | 34 | 33 | 38 | 23 | 26 | 54% | 4 | 2 |
| Union Berlin | 34 | 15 | 29 | 27 | 31 | 66% | 4 | 1 |
| Werder Bremen | 34 | 11 | 26 | 26 | 34 | 70% | 3 | 3 |
| Wolfsburg | 34 | 22 | 23 | 26 | 43 | 51% | 1 | 5 |
| League total | 612 | 442 | 548 | 442 | 548 | 55% | 45 | 45 |
Home advantage
Realized home vs away results (2025/26). "Edge" = home PPG − away PPG. Descriptive, not a prediction.
League-wide home edge (PPG) over 26 seasons — the long decline:
| Team | HP | Home win percentage. | Home points per game (3 for a win, 1 for a draw). | Away points per game. | Home edge: home points per game minus away points per game — the size of the team's home advantage. Caveated when either home or away matches are few. | Home goal difference per game. | Away goal difference per game. |
|---|---|---|---|---|---|---|---|
| Augsburg | 17 | 41% | 1.53 | 1.00 | +0.53 | -0.18 | -0.76 |
| Bayern Munich | 17 | 82% | 2.59 | 2.65 | -0.06 | +2.88 | +2.18 |
| Dortmund | 17 | 76% | 2.41 | 1.88 | +0.53 | +1.41 | +0.71 |
| Ein Frankfurt | 17 | 41% | 1.47 | 1.12 | +0.35 | +0.12 | -0.35 |
| FC Koln | 17 | 29% | 1.12 | 0.76 | +0.35 | 0.00 | -0.82 |
| Freiburg | 17 | 53% | 1.88 | 0.88 | +1.00 | +0.65 | -1.00 |
| Hamburg | 17 | 35% | 1.41 | 0.82 | +0.59 | +0.18 | -1.00 |
| Heidenheim | 17 | 24% | 1.00 | 0.53 | +0.47 | -0.82 | -1.00 |
| Hoffenheim | 17 | 59% | 1.88 | 1.71 | +0.18 | +0.82 | -0.06 |
| Leverkusen | 17 | 53% | 1.82 | 1.65 | +0.18 | +1.12 | +0.12 |
| M'gladbach | 17 | 35% | 1.41 | 0.82 | +0.59 | 0.00 | -0.65 |
| Mainz | 17 | 24% | 1.00 | 1.35 | -0.35 | -0.24 | -0.29 |
| RB Leipzig | 17 | 71% | 2.24 | 1.59 | +0.65 | +1.18 | -0.06 |
| St Pauli | 17 | 24% | 1.00 | 0.53 | +0.47 | -0.82 | -1.00 |
| Stuttgart | 17 | 71% | 2.29 | 1.35 | +0.94 | +0.82 | +0.47 |
| Union Berlin | 17 | 29% | 1.29 | 1.00 | +0.29 | 0.00 | -0.82 |
| Werder Bremen | 17 | 29% | 1.12 | 0.76 | +0.35 | -0.71 | -0.65 |
| Wolfsburg | 17 | 12% | 0.59 | 1.12 | -0.53 | -0.65 | -0.76 |
| League total | 306 | 44% | 1.56 | 1.20 | +0.36 | +0.32 | -0.32 |
Corners
Descriptive — actual corner counts (2025/26), shown where available. Not a prediction.
League-wide corners per team, per match over 25 seasons — the decline:
| Team | Pld | Corners won (total). | Corners conceded (total). | Corners won per game. | Corners conceded per game. | Home corners won per game. | Away corners won per game. |
|---|---|---|---|---|---|---|---|
| Augsburg | 34 | 156 | 189 | 4.6 | 5.6 | 5.2 | 4.0 |
| Bayern Munich | 34 | 216 | 120 | 6.4 | 3.5 | 7.6 | 5.1 |
| Dortmund | 34 | 181 | 143 | 5.3 | 4.2 | 7.2 | 3.4 |
| Ein Frankfurt | 34 | 159 | 155 | 4.7 | 4.6 | 5.4 | 3.9 |
| FC Koln | 34 | 157 | 188 | 4.6 | 5.5 | 4.8 | 4.4 |
| Freiburg | 34 | 140 | 142 | 4.1 | 4.2 | 4.5 | 3.7 |
| Hamburg | 34 | 125 | 199 | 3.7 | 5.9 | 3.8 | 3.6 |
| Heidenheim | 34 | 154 | 172 | 4.5 | 5.1 | 4.6 | 4.4 |
| Hoffenheim | 34 | 197 | 163 | 5.8 | 4.8 | 6.4 | 5.2 |
| Leverkusen | 34 | 190 | 140 | 5.6 | 4.1 | 6.7 | 4.5 |
| M'gladbach | 34 | 128 | 165 | 3.8 | 4.9 | 3.3 | 4.2 |
| Mainz | 34 | 172 | 156 | 5.1 | 4.6 | 6.2 | 3.9 |
| RB Leipzig | 34 | 180 | 147 | 5.3 | 4.3 | 5.9 | 4.7 |
| St Pauli | 34 | 162 | 175 | 4.8 | 5.1 | 5.9 | 3.6 |
| Stuttgart | 34 | 193 | 144 | 5.7 | 4.2 | 5.9 | 5.5 |
| Union Berlin | 34 | 170 | 164 | 5.0 | 4.8 | 5.2 | 4.8 |
| Werder Bremen | 34 | 154 | 170 | 4.5 | 5.0 | 4.8 | 4.2 |
| Wolfsburg | 34 | 151 | 253 | 4.4 | 7.4 | 5.4 | 3.5 |
| League total | 612 | 2985 | 2985 | 4.9 | 4.9 | — | — |