Expected goals
Basel expected goals (xG) 2026/2027
Swiss Super League · after 9 matches · updated 1 Oct
Basel's attacking and defensive expected goals in Swiss Super League 2026/2027, compared with the results they produced and with the rest of the competition.
Basel xG and xGA per match
Every match ↓| Rank | Club | xG per match |
|---|---|---|
| #1 | FC Sion | 2.31 |
| #2 | Young Boys | 2.28 |
| #3 | Grasshopper Club Zürich | 2.01 |
| #4 | FC Luzern | 1.95 |
| #5 | FC St. Gallen 1879 | 1.95 |
| #6 | FC Lugano | 1.70 |
| #7 | FC Vaduz | 1.66 |
| #8 | FC Thun | 1.53 |
| #9 | Servette FC | 1.41 |
| #10 | FC Zürich | 1.38 |
| #11 | Basel | 1.22 |
| #12 | FC Lausanne-Sport | 0.85 |
- League avg
- 1.69
- Total
- 11.00 9 matches
| Rank | Club | xGA per match |
|---|---|---|
| #1 | FC Lugano | 1.26 |
| #2 | FC Lausanne-Sport | 1.37 |
| #3 | Basel | 1.39 |
| #4 | Young Boys | 1.41 |
| #5 | FC St. Gallen 1879 | 1.43 |
| #6 | FC Sion | 1.48 |
| #7 | Servette FC | 1.53 |
| #8 | FC Zürich | 1.93 |
| #9 | FC Vaduz | 2.00 |
| #10 | FC Luzern | 2.02 |
| #11 | Grasshopper Club Zürich | 2.18 |
| #12 | FC Thun | 2.23 |
- League avg
- 1.69
- Total
- 12.51 9 matches
| Rank | Club | xGD per match |
|---|---|---|
| #1 | Young Boys | +0.87 |
| #2 | FC Sion | +0.82 |
| #3 | FC St. Gallen 1879 | +0.51 |
| #4 | FC Lugano | +0.44 |
| #5 | FC Luzern | -0.08 |
| #6 | Servette FC | -0.12 |
| #7 | Basel | -0.17 |
| #8 | Grasshopper Club Zürich | -0.18 |
| #9 | FC Vaduz | -0.34 |
| #10 | FC Lausanne-Sport | -0.52 |
| #11 | FC Zürich | -0.55 |
| #12 | FC Thun | -0.70 |
- League avg
- 0.00
- Total
- -1.51 9 matches
| Rank | Club | xPts per match |
|---|---|---|
| #1 | Young Boys | 1.90 |
| #2 | FC Sion | 1.90 |
| #3 | FC St. Gallen 1879 | 1.71 |
| #4 | FC Lugano | 1.71 |
| #5 | FC Luzern | 1.36 |
| #6 | Servette FC | 1.30 |
| #7 | Grasshopper Club Zürich | 1.29 |
| #8 | Basel | 1.26 |
| #9 | FC Vaduz | 1.18 |
| #10 | FC Zürich | 1.12 |
| #11 | FC Thun | 1.00 |
| #12 | FC Lausanne-Sport | 0.94 |
- League avg
- 1.39
- Total
- 11.30 vs 13 actual pts
Early-season figures: after 9 matches, per-match rates can move quickly.
What the xG says
Basel's underlying numbers sit close to the Swiss Super League average. They rank #7 for xG difference at -0.17 per match, from low shot volume and low chance quality. Their 17 goals are 6.00 above 11.00 xG, while 13 points are 1.70 above 11.30 xPts. After only 9 matches, those gaps should still be read cautiously.
Actual vs expected
Select a row to chart it across the season.
Goals minus xG, match by match
Basel are 6.00 goals above their xG after 9 matches. The gap was widest at +6.22, against FC Luzern on Sun 13/09.
- Goals
- 17
- xG
- 11.00
- Gap
- +6.00
- This match
- Match gap
- Running gap
| Date | Opponent | Goals | xG | Match gap | Running gap |
|---|---|---|---|---|---|
| Sat 25/07 | Servette FC | 1 | 1.61 | -0.61 | -0.61 |
| Sat 01/08 | FC Lausanne-Sport | 0 | 0.98 | -0.98 | -1.59 |
| Sun 09/08 | FC Thun | 4 | 1.09 | +2.91 | +1.32 |
| Sat 22/08 | FC Zürich | 2 | 1.64 | +0.36 | +1.68 |
| Sat 29/08 | Young Boys | 3 | 1.28 | +1.72 | +3.40 |
| Thu 03/09 | FC Sion | 1 | 0.94 | +0.06 | +3.46 |
| Sun 06/09 | FC Lugano | 1 | 0.31 | +0.69 | +4.15 |
| Sun 13/09 | FC Luzern | 4 | 1.93 | +2.07 | +6.22 |
| Sun 20/09 | FC St. Gallen 1879 | 1 | 1.22 | -0.22 | +6.00 |
Goals vs xG ranking → Expected points ranking → Compare with every club in Europe →
Basel xG trend
Current form -0.62 npxGD per match
The last 6 matches with xG.
Out-created the opponent in 4 of 9 matches. The worst was against FC St. Gallen 1879 on Sun 20/09 (-1.61).
- npxG · last 6
- 1.09
- npxGA · last 6
- 1.71
- npxG
- npxGA
- npxGD
- Avg so far
| Date | Opponent | npxG | npxGA | npxGD | Avg so far |
|---|---|---|---|---|---|
| Sat 25/07 | Servette FC | 0.82 | 1.11 | -0.29 | -0.29 |
| Sat 01/08 | FC Lausanne-Sport | 0.98 | 0.51 | +0.47 | +0.09 |
| Sun 09/08 | FC Thun | 1.09 | 0.64 | +0.45 | +0.21 |
| Sat 22/08 | FC Zürich | 1.64 | 1.35 | +0.29 | +0.23 |
| Sat 29/08 | Young Boys | 1.28 | 1.77 | -0.49 | +0.09 |
| Thu 03/09 | FC Sion | 0.94 | 1.80 | -0.86 | -0.07 |
| Sun 06/09 | FC Lugano | 0.31 | 1.67 | -1.36 | -0.26 |
| Sun 13/09 | FC Luzern | 1.93 | 1.61 | +0.32 | -0.18 |
| Sun 20/09 | FC St. Gallen 1879 | 0.43 | 2.04 | -1.61 | -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.05 npxG and 1.39 npxGA per match. Current form is the same difference over the last 6 matches with xG.
Strength of schedule
- Season so far
- number 1 hardest of 12 in Swiss Super League
- +0.09 xG vs league average
- Over 9 league matches
- Last 5
- number 1 hardest of 12 in Swiss Super League
- +0.30 xG vs league average
- Over 5 league matches
Opponents behind the figures
Season so far
+0.09 xG vs league average · over 9 matches · number 1 hardest of 12
- FC St. Gallen 1879 Home +0.47
- FC Luzern Away −0.05
- FC Lugano Home +0.33
- FC Sion Home +0.34
- Young Boys Away +0.42
- FC Zürich Away −0.27
- FC Thun Home −0.14
- FC Lausanne-Sport Home −0.37
- Servette FC Away +0.10
Last 5
+0.30 xG vs league average · over 5 matches · number 1 hardest of 12
- FC St. Gallen 1879 Home +0.47
- FC Luzern Away −0.05
- FC Lugano Home +0.33
- FC Sion Home +0.34
- Young Boys Away +0.42
Basel shots and chance quality
Low volume, low quality. Basel take 11.8 shots a match (league 15.3) at 0.09 npxG a shot (league 0.10), #11 in Swiss Super League for volume and #10 for quality. 69% of their shots come from inside the box (league 68%), and set pieces produce 20% of their npxG (league 27%).
Attack
| Rank | Club | shots per match |
|---|---|---|
| #1 | FC St. Gallen 1879 | 20.9 |
| #2 | Young Boys | 19.1 |
| #3 | FC Lugano | 16.9 |
| #4 | FC Luzern | 16.8 |
| #5 | FC Sion | 16.6 |
| #6 | FC Thun | 15.7 |
| #7 | Grasshopper Club Zürich | 15.4 |
| #8 | Servette FC | 14.3 |
| #9 | FC Vaduz | 14.1 |
| #10 | FC Zürich | 12.6 |
| #11 | Basel | 11.8 |
| #12 | FC Lausanne-Sport | 9.1 |
- League avg
- 15.3
- Total
- 106 shots from 9 matches
| Rank | Club | npxG per shot |
|---|---|---|
| #1 | FC Sion | 0.13 |
| #2 | Grasshopper Club Zürich | 0.12 |
| #3 | FC Vaduz | 0.11 |
| #4 | Young Boys | 0.11 |
| #5 | FC Luzern | 0.11 |
| #6 | FC Zürich | 0.11 |
| #7 | FC Lugano | 0.10 |
| #8 | FC Thun | 0.10 |
| #9 | FC Lausanne-Sport | 0.09 |
| #10 | Basel | 0.09 |
| #11 | FC St. Gallen 1879 | 0.09 |
| #12 | Servette FC | 0.09 |
- League avg
- 0.10
- Total
- 9.42 npxG from 106 shots
Defence
| Rank | Club | shots per match |
|---|---|---|
| #1 | FC Lugano | 11.8 |
| #2 | FC St. Gallen 1879 | 12.7 |
| #3 | FC Sion | 13.0 |
| #4 | FC Zürich | 13.9 |
| #5 | Young Boys | 14.0 |
| #6 | Servette FC | 14.3 |
| #7 | Grasshopper Club Zürich | 15.9 |
| #8 | FC Lausanne-Sport | 16.2 |
| #9 | FC Thun | 17.1 |
| #10 | Basel | 17.6 |
| #11 | FC Vaduz | 18.2 |
| #12 | FC Luzern | 18.6 |
- League avg
- 15.3
- Total
- 158 shots allowed from 9 matches
| Rank | Club | npxGA per shot |
|---|---|---|
| #1 | Basel | 0.08 |
| #2 | FC Lausanne-Sport | 0.08 |
| #3 | Young Boys | 0.10 |
| #4 | FC Sion | 0.10 |
| #5 | FC Lugano | 0.10 |
| #6 | FC Luzern | 0.10 |
| #7 | Servette FC | 0.10 |
| #8 | FC St. Gallen 1879 | 0.11 |
| #9 | FC Vaduz | 0.11 |
| #10 | FC Thun | 0.12 |
| #11 | Grasshopper Club Zürich | 0.13 |
| #12 | FC Zürich | 0.13 |
- League avg
- 0.10
- Total
- 12.50 npxGA from 158 shots
Shot profile
69% inside the box
League avg 68%
From 73 of 106 shots over 9 matches
Early-season figure: after 9 matches, the share can move quickly.
62% allowed inside the box
League avg 68%
From 98 of 158 shots allowed over 9 matches
Early-season figure: after 9 matches, the share can move quickly.
80% open play · 20% set pieces
League avg 27% set pieces
From 1.8 of 8.6 npxG over 9 matches
Early-season figure: after 9 matches, the share can move quickly.
76% open play · 24% set pieces
League avg 27% set pieces
From 2.8 of 11.7 npxG allowed over 9 matches
Early-season figure: after 9 matches, the share can move quickly.
Basel home and away xG
| Measure | Home | Away |
|---|---|---|
| Matches | 5 | 4 |
| xG / match | 0.91 | 1.62 |
| xGA / match | 1.33 | 1.47 |
| xGD / match | -0.42 | +0.15 |
| xPts / match Model — Model output — computed from each match's xG, not a result. How xPts works → | 1.08 | 1.48 |
Every figure divides by that half's matches with xG. A half with fewer than 3 matches with xG is muted.
Every Basel match by xG
This season
- Matches
- 9
- xG / match
- 1.22
- xGA / match
- 1.39
- xGD / match
- -0.17
- Points
- 13 of 27
- Sun 20/09 FC St. Gallen 1879 H xG 1.22 P xGA 2.00 xGD -0.78 xPts 0.81
- Sun 13/09 FC Luzern A xG 1.93 xGA 1.62 xGD +0.31 xPts 1.60
- Sun 06/09 FC Lugano H Weakest underlying xG 0.31 xGA 1.67 xGD -1.36 xPts 0.31
- Thu 03/09 FC Sion H xG 0.94 xGA 1.80 xGD -0.86 xPts 0.70
- Sat 29/08 Young Boys A xG 1.28 xGA 1.77 xGD -0.49 xPts 0.99
- Sat 22/08 FC Zürich A xG 1.64 xGA 1.35 xGD +0.29 xPts 1.59
- Sun 09/08 FC Thun H xG 1.09 xGA 0.64 xGD +0.45 xPts 1.77
- Sat 01/08 FC Lausanne-Sport H xG 0.98 xGA 0.52 xGD +0.46 xPts 1.79
- Sat 25/07 Servette FC A Best underlying xG 1.61 P xGA 1.14 xGD +0.47 xPts 1.73
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.
Basel in Swiss Super League
Attack
- xG / match #11 of 12
- Shots / match #11 of 12
- Chance quality #10 of 12
- Home xG #12 of 12
- Away xG #9 of 12
Defence
- xGA / match #3 of 12
- Shots allowed #10 of 12
- Chance quality allowed #1 of 12
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.