Expected goals
FC Winterthur expected goals (xG) 2025/2026
Swiss Super League · after 38 matches · updated 1 Oct
FC Winterthur's attacking and defensive expected goals in Swiss Super League 2025/2026, compared with the results they produced and with the rest of the competition.
FC Winterthur xG and xGA per match
Every match ↓| Rank | Club | xG per match |
|---|---|---|
| #1 | FC St. Gallen 1879 | 1.93 |
| #2 | FC Thun | 1.83 |
| #3 | Basel | 1.82 |
| #4 | FC Luzern | 1.81 |
| #5 | Young Boys | 1.80 |
| #6 | Servette FC | 1.63 |
| #7 | FC Lausanne-Sport | 1.59 |
| #8 | FC Sion | 1.58 |
| #9 | FC Lugano | 1.54 |
| #10 | FC Zürich | 1.36 |
| #11 | Grasshopper Club Zürich | 1.20 |
| #12 | FC Winterthur | 1.17 |
- League avg
- 1.60
- Total
- 44.50 38 matches
| Rank | Club | xGA per match |
|---|---|---|
| #1 | Servette FC | 1.23 |
| #2 | FC Sion | 1.27 |
| #3 | FC Lugano | 1.33 |
| #4 | Basel | 1.47 |
| #5 | FC Luzern | 1.48 |
| #6 | FC Lausanne-Sport | 1.51 |
| #7 | FC St. Gallen 1879 | 1.56 |
| #8 | FC Thun | 1.64 |
| #9 | Young Boys | 1.78 |
| #10 | Grasshopper Club Zürich | 1.89 |
| #11 | FC Zürich | 1.90 |
| #12 | FC Winterthur | 2.20 |
- League avg
- 1.60
- Total
- 83.44 38 matches
| Rank | Club | xGD per match |
|---|---|---|
| #1 | Servette FC | +0.40 |
| #2 | FC St. Gallen 1879 | +0.38 |
| #3 | Basel | +0.34 |
| #4 | FC Luzern | +0.32 |
| #5 | FC Sion | +0.31 |
| #6 | FC Lugano | +0.22 |
| #7 | FC Thun | +0.19 |
| #8 | FC Lausanne-Sport | +0.08 |
| #9 | Young Boys | +0.02 |
| #10 | FC Zürich | -0.54 |
| #11 | Grasshopper Club Zürich | -0.69 |
| #12 | FC Winterthur | -1.02 |
- League avg
- 0.00
- Total
- -38.94 38 matches
| Rank | Club | xPts per match |
|---|---|---|
| #1 | FC St. Gallen 1879 | 1.62 |
| #2 | Servette FC | 1.62 |
| #3 | Basel | 1.62 |
| #4 | FC Luzern | 1.59 |
| #5 | FC Sion | 1.58 |
| #6 | FC Thun | 1.53 |
| #7 | FC Lugano | 1.51 |
| #8 | Young Boys | 1.42 |
| #9 | FC Lausanne-Sport | 1.40 |
| #10 | FC Zürich | 1.02 |
| #11 | Grasshopper Club Zürich | 0.96 |
| #12 | FC Winterthur | 0.80 |
- League avg
- 1.39
- Total
- 30.28 vs 23 actual pts
What the xG says
FC Winterthur's underlying numbers are among the weakest in Swiss Super League. They rank #12 for xG difference at -1.02 per match, from the league's lowest shot volume at about average chance quality. Their 44 goals are 0.50 below 44.50 xG, while 23 points are 7.28 below 30.28 xPts.
Actual vs expected
Select a row to chart it across the season.
Goals minus xG, match by match
FC Winterthur are 0.50 goals below their xG after 38 matches. The gap was widest at -3.49, against Grasshopper Club Zürich on Sat 11/04.
- Goals
- 44
- xG
- 44.50
- Gap
- -0.50
- This match
- Match gap
- Running gap
| Date | Opponent | Goals | xG | Match gap | Running gap |
|---|---|---|---|---|---|
| Sun 27/07 | FC Lausanne-Sport | 2 | 1.00 | +1.00 | +1.00 |
| Sat 02/08 | Young Boys | 1 | 0.89 | +0.11 | +1.11 |
| Sat 09/08 | FC St. Gallen 1879 | 0 | 0.92 | -0.92 | +0.19 |
| Sun 24/08 | Grasshopper Club Zürich | 2 | 1.75 | +0.25 | +0.44 |
| Sat 30/08 | FC Zürich | 1 | 0.80 | +0.20 | +0.64 |
| Sun 14/09 | FC Sion | 2 | 1.09 | +0.91 | +1.55 |
| Sat 27/09 | Servette FC | 0 | 0.68 | -0.68 | +0.87 |
| Sun 05/10 | FC Lugano | 2 | 1.26 | +0.74 | +1.61 |
| Sat 18/10 | Basel | 0 | 0.54 | -0.54 | +1.07 |
| Sat 25/10 | FC Luzern | 2 | 1.31 | +0.69 | +1.76 |
| Tue 28/10 | FC Thun | 0 | 0.95 | -0.95 | +0.81 |
| Sat 01/11 | Servette FC | 4 | 1.17 | +2.83 | +3.64 |
| Sat 08/11 | Grasshopper Club Zürich | 0 | 1.06 | -1.06 | +2.58 |
| Sat 22/11 | Young Boys | 0 | 0.08 | -0.08 | +2.50 |
| Sat 29/11 | FC Luzern | 3 | 0.86 | +2.14 | +4.64 |
| Sun 07/12 | Basel | 1 | 3.24 | -2.24 | +2.40 |
| Sat 13/12 | FC Zürich | 2 | 1.37 | +0.63 | +3.03 |
| Tue 16/12 | FC Thun | 1 | 0.43 | +0.57 | +3.60 |
| Wed 14/01 | FC Sion | 0 | 0.92 | -0.92 | +2.68 |
| Sat 24/01 | FC Lugano | 1 | 1.04 | -0.04 | +2.64 |
| Sat 31/01 | FC Lausanne-Sport | 2 | 1.42 | +0.58 | +3.22 |
| Sat 07/02 | FC Lugano | 1 | 0.95 | +0.05 | +3.27 |
| Wed 11/02 | FC Zürich | 0 | 2.00 | -2.00 | +1.27 |
| Sat 14/02 | Young Boys | 1 | 0.74 | +0.26 | +1.53 |
| Wed 18/02 | FC St. Gallen 1879 | 1 | 1.72 | -0.72 | +0.81 |
| Wed 25/02 | FC Thun | 0 | 0.49 | -0.49 | +0.32 |
| Sat 28/02 | FC St. Gallen 1879 | 1 | 1.23 | -0.23 | +0.09 |
| Tue 03/03 | Servette FC | 1 | 1.31 | -0.31 | -0.22 |
| Sat 07/03 | FC Sion | 1 | 0.57 | +0.43 | +0.21 |
| Sun 15/03 | FC Luzern | 2 | 1.44 | +0.56 | +0.77 |
| Sun 22/03 | Basel | 0 | 2.64 | -2.64 | -1.87 |
| Sat 04/04 | FC Lausanne-Sport | 1 | 1.63 | -0.63 | -2.50 |
| Sat 11/04 | Grasshopper Club Zürich | 0 | 0.99 | -0.99 | -3.49 |
| Sun 26/04 | Servette FC | 3 | 0.79 | +2.21 | -1.28 |
| Sat 02/05 | FC Zürich | 2 | 1.81 | +0.19 | -1.09 |
| Sat 09/05 | FC Lausanne-Sport | 2 | 1.35 | +0.65 | -0.44 |
| Tue 12/05 | Grasshopper Club Zürich | 2 | 1.52 | +0.48 | +0.04 |
| Sat 16/05 | FC Luzern | 0 | 0.54 | -0.54 | -0.50 |
FC Winterthur xG trend
Current form -0.97 npxGD per match
The last 6 matches with xG.
Out-created the opponent in 7 of 38 matches. The worst was against Servette FC on Sun 26/04 (-3.97).
- npxG · last 6
- 1.07
- npxGA · last 6
- 2.03
- npxG
- npxGA
- npxGD
- Avg so far
| Date | Opponent | npxG | npxGA | npxGD | Avg so far |
|---|---|---|---|---|---|
| Sun 27/07 | FC Lausanne-Sport | 1.09 | 3.32 | -2.23 | -2.23 |
| Sat 02/08 | Young Boys | 0.89 | 1.25 | -0.36 | -1.30 |
| Sat 09/08 | FC St. Gallen 1879 | 0.93 | 2.56 | -1.63 | -1.41 |
| Sun 24/08 | Grasshopper Club Zürich | 1.75 | 2.20 | -0.45 | -1.17 |
| Sat 30/08 | FC Zürich | 0.80 | 1.85 | -1.05 | -1.14 |
| Sun 14/09 | FC Sion | 1.09 | 1.17 | -0.08 | -0.97 |
| Sat 27/09 | Servette FC | 0.68 | 1.40 | -0.72 | -0.93 |
| Sun 05/10 | FC Lugano | 1.65 | 2.99 | -1.34 | -0.98 |
| Sat 18/10 | Basel | 0.58 | 3.52 | -2.94 | -1.20 |
| Sat 25/10 | FC Luzern | 1.41 | 1.07 | +0.34 | -1.05 |
| Tue 28/10 | FC Thun | 0.95 | 2.93 | -1.98 | -1.13 |
| Sat 01/11 | Servette FC | 1.17 | 1.30 | -0.13 | -1.05 |
| Sat 08/11 | Grasshopper Club Zürich | 1.13 | 1.41 | -0.28 | -0.99 |
| Sat 22/11 | Young Boys | 0.08 | 2.45 | -2.37 | -1.09 |
| Sat 29/11 | FC Luzern | 0.82 | 1.96 | -1.14 | -1.09 |
| Sun 07/12 | Basel | 3.26 | 2.75 | +0.51 | -0.99 |
| Sat 13/12 | FC Zürich | 0.54 | 1.86 | -1.32 | -1.01 |
| Tue 16/12 | FC Thun | 0.53 | 2.73 | -2.20 | -1.08 |
| Wed 14/01 | FC Sion | 0.79 | 1.38 | -0.59 | -1.05 |
| Sat 24/01 | FC Lugano | 1.04 | 2.31 | -1.27 | -1.06 |
| Sat 31/01 | FC Lausanne-Sport | 1.42 | 0.87 | +0.55 | -0.98 |
| Sat 07/02 | FC Lugano | 0.95 | 1.04 | -0.09 | -0.94 |
| Wed 11/02 | FC Zürich | 2.06 | 1.05 | +1.01 | -0.86 |
| Sat 14/02 | Young Boys | 1.03 | 2.70 | -1.67 | -0.89 |
| Wed 18/02 | FC St. Gallen 1879 | 1.72 | 2.49 | -0.77 | -0.89 |
| Wed 25/02 | FC Thun | 0.49 | 1.78 | -1.29 | -0.90 |
| Sat 28/02 | FC St. Gallen 1879 | 1.19 | 2.41 | -1.22 | -0.92 |
| Tue 03/03 | Servette FC | 1.34 | 1.53 | -0.19 | -0.89 |
| Sat 07/03 | FC Sion | 0.57 | 1.79 | -1.22 | -0.90 |
| Sun 15/03 | FC Luzern | 1.34 | 1.94 | -0.60 | -0.89 |
| Sun 22/03 | Basel | 1.85 | 0.87 | +0.98 | -0.83 |
| Sat 04/04 | FC Lausanne-Sport | 0.85 | 2.24 | -1.39 | -0.85 |
| Sat 11/04 | Grasshopper Club Zürich | 0.99 | 0.85 | +0.14 | -0.82 |
| Sun 26/04 | Servette FC | 0.79 | 4.76 | -3.97 | -0.91 |
| Sat 02/05 | FC Zürich | 1.02 | 1.35 | -0.33 | -0.89 |
| Sat 09/05 | FC Lausanne-Sport | 1.35 | 2.37 | -1.02 | -0.90 |
| Tue 12/05 | Grasshopper Club Zürich | 1.57 | 0.92 | +0.65 | -0.86 |
| Sat 16/05 | FC Luzern | 0.67 | 1.95 | -1.28 | -0.87 |
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.12 npxG and 1.98 npxGA per match. Current form is the same difference over the last 6 matches with xG.
Strength of schedule
- Season so far
- tied number 1 hardest of 12 in Swiss Super League
- +0.03 xG vs league average
- Over 38 league matches
- Last 5
- tied number 7 hardest of 11 in Swiss Super League
- −0.05 xG vs league average
- Over 5 league matches
Opponents behind the figures
Season so far
+0.03 xG vs league average · over 38 matches · tied number 1 hardest of 12
- FC Luzern Home +0.28
- Grasshopper Club Zürich Away −0.51
- FC Lausanne-Sport Home +0.08
- FC Zürich Home −0.49
- Servette FC Away +0.41
- Grasshopper Club Zürich Home −0.51
- FC Lausanne-Sport Away +0.08
- Basel Home −0.14
- FC Luzern Away +0.28
- FC Sion Away +0.19
- Servette FC Home +0.41
- FC St. Gallen 1879 Away +0.35
- FC Thun Home −0.04
- FC St. Gallen 1879 Home +0.35
- Young Boys Away +0.25
- FC Zürich Away −0.49
- FC Lugano Home +0.14
- FC Lausanne-Sport Home +0.08
- FC Lugano Away +0.14
- FC Sion Away +0.19
- FC Thun Home −0.04
- FC Zürich Away −0.49
- Basel Home −0.14
- FC Luzern Away +0.28
- Young Boys Away +0.25
- Grasshopper Club Zürich Home −0.51
- Servette FC Home +0.41
- FC Thun Away −0.04
- FC Luzern Home +0.28
- Basel Away −0.14
- FC Lugano Home +0.14
- Servette FC Away +0.41
- FC Sion Home +0.19
- FC Zürich Home −0.49
- Grasshopper Club Zürich Away −0.51
- FC St. Gallen 1879 Away +0.35
- Young Boys Home +0.25
- FC Lausanne-Sport Away +0.08
Last 5
−0.05 xG vs league average · over 5 matches · tied number 7 hardest of 11
- FC Luzern Home +0.28
- Grasshopper Club Zürich Away −0.51
- FC Lausanne-Sport Home +0.08
- FC Zürich Home −0.49
- Servette FC Away +0.41
FC Winterthur shots and chance quality
Low volume, average quality. FC Winterthur take 11.8 shots a match (league 14.3) at 0.09 npxG a shot (league 0.10), #12 in Swiss Super League for volume and #10 for quality. 67% of their shots come from inside the box (league 67%).
Attack
| Rank | Club | shots per match |
|---|---|---|
| #1 | FC Thun | 17.1 |
| #2 | FC St. Gallen 1879 | 15.9 |
| =3 | Basel | 15.3 |
| =3 | Young Boys | 15.3 |
| #5 | FC Luzern | 14.8 |
| #6 | FC Lausanne-Sport | 14.5 |
| #7 | FC Sion | 14.1 |
| #8 | Servette FC | 13.7 |
| #9 | FC Lugano | 13.2 |
| #10 | FC Zürich | 12.9 |
| #11 | Grasshopper Club Zürich | 12.5 |
| #12 | FC Winterthur | 11.8 |
- League avg
- 14.3
- Total
- 448 shots from 38 matches
| Rank | Club | npxG per shot |
|---|---|---|
| #1 | FC Luzern | 0.11 |
| #2 | Servette FC | 0.11 |
| #3 | FC Lausanne-Sport | 0.11 |
| #4 | FC Lugano | 0.11 |
| #5 | Young Boys | 0.11 |
| #6 | FC St. Gallen 1879 | 0.10 |
| #7 | Basel | 0.10 |
| #8 | FC Thun | 0.10 |
| #9 | FC Zürich | 0.09 |
| #10 | FC Winterthur | 0.09 |
| #11 | FC Sion | 0.09 |
| #12 | Grasshopper Club Zürich | 0.08 |
- League avg
- 0.10
- Total
- 42.38 npxG from 448 shots
Defence
| Rank | Club | shots per match |
|---|---|---|
| #1 | Servette FC | 11.8 |
| #2 | FC Lausanne-Sport | 12.4 |
| #3 | FC Sion | 12.9 |
| #4 | FC Lugano | 13.2 |
| #5 | Young Boys | 13.4 |
| #6 | FC St. Gallen 1879 | 13.8 |
| #7 | FC Luzern | 14.4 |
| #8 | Grasshopper Club Zürich | 14.4 |
| #9 | FC Zürich | 15.3 |
| #10 | Basel | 15.5 |
| #11 | FC Thun | 15.5 |
| #12 | FC Winterthur | 18.5 |
- League avg
- 14.3
- Total
- 703 shots allowed from 38 matches
| Rank | Club | npxGA per shot |
|---|---|---|
| #1 | FC Lugano | 0.09 |
| #2 | FC Luzern | 0.09 |
| #3 | Basel | 0.09 |
| #4 | FC Thun | 0.09 |
| #5 | FC Sion | 0.09 |
| #6 | Servette FC | 0.09 |
| #7 | FC St. Gallen 1879 | 0.11 |
| #8 | FC Winterthur | 0.11 |
| #9 | FC Lausanne-Sport | 0.11 |
| #10 | FC Zürich | 0.11 |
| #11 | Young Boys | 0.12 |
| #12 | Grasshopper Club Zürich | 0.12 |
- League avg
- 0.10
- Total
- 75.32 npxGA from 703 shots
Shot profile
67% inside the box
League avg 67%
From 299 of 448 shots over 38 matches
70% allowed inside the box
League avg 67%
From 489 of 703 shots allowed over 38 matches
FC Winterthur home and away xG
| Measure | Home | Away |
|---|---|---|
| Matches | 19 | 19 |
| xG / match | 1.29 | 1.05 |
| xGA / match | 1.85 | 2.54 |
| xGD / match | -0.56 | -1.48 |
| xPts / match Model — Model output — computed from each match's xG, not a result. How xPts works → | 1.01 | 0.59 |
Every figure divides by that half's matches with xG. A half with fewer than 3 matches with xG is muted.
Every FC Winterthur match by xG
Last 5
- Matches
- 5
- xG / match
- 1.20
- xGA / match
- 2.55
- xGD / match
- -1.35
- Points
- 4 of 15
- Sat 16/05 FC Luzern H xG 0.54 xGA 2.33 xGD -1.79 xPts 0.26
- Tue 12/05 Grasshopper Club Zürich A Best underlying xG 1.52 xGA 1.71 P xGD -0.19 xPts 1.22
- Sat 09/05 FC Lausanne-Sport H xG 1.35 xGA 1.97 xGD -0.62 xPts 0.92
- Sat 02/05 FC Zürich H xG 1.81 P xGA 2.13 P xGD -0.32 xPts 1.15
- Sun 26/04 Servette FC A Weakest underlying xG 0.79 xGA 4.61 xGD -3.82 xPts 0.05
Newest first. The dot is xG and the ring is xGA, on one scale from 0 to 4.61. 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.
FC Winterthur in Swiss Super League
Attack
- xG / match #12 of 12
- Shots / match #12 of 12
- Chance quality #10 of 12
- Home xG #11 of 13
- Away xG #12 of 13
Defence
- xGA / match #12 of 12
- Shots allowed #12 of 12
- Chance quality allowed #8 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.