Expected goals
Stade Rennais expected goals (xG) 2026/2027
Ligue 1 · after 5 matches · updated 1 Oct
Stade Rennais's attacking and defensive expected goals in Ligue 1 2026/2027, compared with the results they produced and with the rest of the competition.
Stade Rennais xG and xGA per match
Every match ↓| Rank | Club | xG per match |
|---|---|---|
| #1 | Paris Saint-Germain | 2.28 |
| #2 | RC Lens | 2.27 |
| #3 | Toulouse | 2.19 |
| #4 | Stade Brestois | 1.94 |
| #5 | Paris FC | 1.87 |
| #6 | Olympique Lyonnais | 1.79 |
| #7 | Stade Rennais | 1.76 |
| #8 | Le Mans | 1.70 |
| #9 | Angers | 1.61 |
| #10 | Olympique de Marseille | 1.56 |
| #11 | Auxerre | 1.41 |
| #12 | Troyes | 1.40 |
| #13 | Le Havre | 1.39 |
| #14 | Lille | 1.39 |
| #15 | AS Monaco | 1.28 |
| #16 | RC Strasbourg | 1.24 |
| #17 | Lorient | 1.19 |
| #18 | Nice | 1.08 |
- League avg
- 1.63
- Total
- 8.78 5 matches
| Rank | Club | xGA per match |
|---|---|---|
| #1 | Paris FC | 0.65 |
| #2 | Paris Saint-Germain | 1.14 |
| #3 | Olympique Lyonnais | 1.17 |
| #4 | Stade Brestois | 1.19 |
| #5 | AS Monaco | 1.31 |
| #6 | Lorient | 1.39 |
| #7 | Angers | 1.41 |
| #8 | Le Havre | 1.61 |
| #9 | Toulouse | 1.64 |
| =10 | Lille | 1.75 |
| =10 | Nice | 1.75 |
| #12 | Le Mans | 1.91 |
| #13 | RC Lens | 1.92 |
| =14 | RC Strasbourg | 1.96 |
| =14 | Troyes | 1.96 |
| #16 | Auxerre | 2.05 |
| #17 | Stade Rennais | 2.27 |
| #18 | Olympique de Marseille | 2.28 |
- League avg
- 1.63
- Total
- 11.35 5 matches
| Rank | Club | xGD per match |
|---|---|---|
| #1 | Paris FC | +1.22 |
| #2 | Paris Saint-Germain | +1.14 |
| #3 | Stade Brestois | +0.75 |
| #4 | Olympique Lyonnais | +0.62 |
| #5 | Toulouse | +0.55 |
| #6 | RC Lens | +0.35 |
| #7 | Angers | +0.20 |
| #8 | AS Monaco | -0.02 |
| =9 | Le Mans | -0.21 |
| =9 | Lorient | -0.21 |
| #11 | Le Havre | -0.22 |
| #12 | Lille | -0.36 |
| #13 | Stade Rennais | -0.51 |
| #14 | Troyes | -0.56 |
| #15 | Auxerre | -0.63 |
| #16 | Nice | -0.67 |
| #17 | Olympique de Marseille | -0.72 |
| #18 | RC Strasbourg | -0.72 |
- League avg
- 0.00
- Total
- -2.57 5 matches
| Rank | Club | xPts per match |
|---|---|---|
| #1 | Paris FC | 2.17 |
| #2 | Paris Saint-Germain | 2.06 |
| #3 | Olympique Lyonnais | 1.81 |
| #4 | Stade Brestois | 1.78 |
| #5 | Toulouse | 1.74 |
| #6 | RC Lens | 1.49 |
| #7 | Angers | 1.49 |
| #8 | AS Monaco | 1.42 |
| #9 | Le Mans | 1.27 |
| #10 | Lille | 1.23 |
| #11 | Lorient | 1.21 |
| #12 | Le Havre | 1.20 |
| #13 | Auxerre | 1.18 |
| #14 | Olympique de Marseille | 1.09 |
| #15 | Stade Rennais | 1.08 |
| #16 | Troyes | 0.96 |
| #17 | Nice | 0.94 |
| #18 | RC Strasbourg | 0.84 |
- League avg
- 1.39
- Total
- 5.41 vs 10 actual pts
Early-season figures: after 5 matches, per-match rates can move quickly.
What the xG says
Stade Rennais's underlying numbers are among the weakest in Ligue 1. They rank #13 for xG difference at -0.51 per match, driven by elite shot volume at about average chance quality. Their 8 goals are 0.78 below 8.78 xG, while 10 points are 4.59 above 5.41 xPts. After only 5 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
Stade Rennais are 0.78 goals below their xG after 5 matches.
- Goals
- 8
- xG
- 8.78
- Gap
- -0.78
- This match
- Match gap
- Running gap
| Date | Opponent | Goals | xG | Match gap | Running gap |
|---|---|---|---|---|---|
| Sun 23/08 | Paris Saint-Germain | 2 | 0.87 | +1.13 | +1.13 |
| Sun 30/08 | Le Mans | 3 | 3.12 | -0.12 | +1.01 |
| Sun 06/09 | Angers | 2 | 1.54 | +0.46 | +1.47 |
| Fri 11/09 | Olympique de Marseille | 1 | 1.88 | -0.88 | +0.59 |
| Sat 19/09 | Olympique Lyonnais | 0 | 1.37 | -1.37 | -0.78 |
Stade Rennais xG trend
Current form -0.45 npxGD per match
All 5 matches with xG so far — the window fills at 6.
Out-created the opponent in 1 of 5 matches. The worst was against Olympique Lyonnais on Sat 19/09 (-1.76).
- npxG · last 5
- 1.53
- npxGA · last 5
- 1.99
- npxG
- npxGA
- npxGD
- Avg so far
| Date | Opponent | npxG | npxGA | npxGD | Avg so far |
|---|---|---|---|---|---|
| Sun 23/08 | Paris Saint-Germain | 1.07 | 1.92 | -0.85 | -0.85 |
| Sun 30/08 | Le Mans | 1.89 | 2.20 | -0.31 | -0.58 |
| Sun 06/09 | Angers | 1.46 | 1.69 | -0.23 | -0.46 |
| Fri 11/09 | Olympique de Marseille | 1.85 | 0.97 | +0.88 | -0.13 |
| Sat 19/09 | Olympique Lyonnais | 1.40 | 3.16 | -1.76 | -0.45 |
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.53 npxG and 1.99 npxGA per match. Current form is the same difference over the last 6 matches with xG.
Strength of schedule
- Season so far
- number 3 hardest of 18 in Ligue 1
- +0.11 xG vs league average
- Over 5 league matches
Opponents behind the figures
Season so far
+0.11 xG vs league average · over 5 matches · number 3 hardest of 18
- Olympique Lyonnais Away +0.12
- Olympique de Marseille Home −0.04
- Angers Away −0.31
- Le Mans Home −0.13
- Paris Saint-Germain Home +0.90
Stade Rennais shots and chance quality
High volume, average quality. Stade Rennais take 16.2 shots a match (league 13.9) at 0.09 npxG a shot (league 0.11), #3 in Ligue 1 for volume and #13 for quality. 70% of their shots come from inside the box (league 65%), and set pieces produce 11% of their npxG (league 18%).
Attack
| Rank | Club | shots per match |
|---|---|---|
| #1 | Paris Saint-Germain | 21.2 |
| #2 | Stade Brestois | 19.2 |
| #3 | Stade Rennais | 16.2 |
| #4 | Le Havre | 15.6 |
| #5 | Angers | 15.0 |
| =6 | RC Lens | 14.8 |
| =6 | Toulouse | 14.8 |
| =6 | Troyes | 14.8 |
| #9 | Olympique Lyonnais | 13.4 |
| =10 | Olympique de Marseille | 13.2 |
| =10 | Paris FC | 13.2 |
| #12 | Lille | 12.8 |
| #13 | Auxerre | 12.0 |
| #14 | Nice | 11.8 |
| #15 | RC Strasbourg | 11.6 |
| =16 | Le Mans | 10.4 |
| =16 | Lorient | 10.4 |
| #18 | AS Monaco | 10.2 |
- League avg
- 13.9
- Total
- 81 shots from 5 matches
| Rank | Club | npxG per shot |
|---|---|---|
| #1 | Le Mans | 0.15 |
| #2 | Olympique Lyonnais | 0.13 |
| #3 | Toulouse | 0.13 |
| #4 | AS Monaco | 0.12 |
| #5 | Paris FC | 0.11 |
| #6 | RC Lens | 0.11 |
| #7 | RC Strasbourg | 0.11 |
| #8 | Angers | 0.11 |
| #9 | Paris Saint-Germain | 0.11 |
| #10 | Lorient | 0.11 |
| #11 | Lille | 0.11 |
| #12 | Olympique de Marseille | 0.10 |
| #13 | Stade Rennais | 0.09 |
| #14 | Nice | 0.09 |
| #15 | Stade Brestois | 0.09 |
| #16 | Auxerre | 0.09 |
| #17 | Le Havre | 0.08 |
| #18 | Troyes | 0.07 |
- League avg
- 0.11
- Total
- 7.67 npxG from 81 shots
Defence
| Rank | Club | shots per match |
|---|---|---|
| #1 | Paris FC | 9.6 |
| #2 | Paris Saint-Germain | 10.0 |
| =3 | Olympique Lyonnais | 11.2 |
| =3 | RC Lens | 11.2 |
| #5 | Stade Brestois | 11.6 |
| #6 | Nice | 13.0 |
| #7 | Lorient | 13.2 |
| #8 | Auxerre | 13.6 |
| #9 | Troyes | 13.8 |
| #10 | Le Havre | 14.4 |
| =11 | AS Monaco | 15.2 |
| =11 | Toulouse | 15.2 |
| #13 | Stade Rennais | 15.6 |
| #14 | Lille | 16.0 |
| #15 | Le Mans | 16.2 |
| #16 | Angers | 16.4 |
| #17 | Olympique de Marseille | 17.0 |
| #18 | RC Strasbourg | 17.4 |
- League avg
- 13.9
- Total
- 78 shots allowed from 5 matches
| Rank | Club | npxGA per shot |
|---|---|---|
| #1 | Paris FC | 0.07 |
| #2 | Angers | 0.08 |
| #3 | Lorient | 0.08 |
| #4 | AS Monaco | 0.08 |
| #5 | Stade Brestois | 0.09 |
| #6 | Le Havre | 0.09 |
| #7 | RC Strasbourg | 0.09 |
| #8 | Le Mans | 0.09 |
| #9 | Olympique Lyonnais | 0.10 |
| #10 | Toulouse | 0.10 |
| #11 | Lille | 0.11 |
| #12 | Paris Saint-Germain | 0.11 |
| #13 | Nice | 0.12 |
| #14 | Olympique de Marseille | 0.12 |
| #15 | Auxerre | 0.13 |
| #16 | Stade Rennais | 0.13 |
| #17 | Troyes | 0.15 |
| #18 | RC Lens | 0.16 |
- League avg
- 0.11
- Total
- 9.94 npxGA from 78 shots
Shot profile
70% inside the box
League avg 65%
From 57 of 81 shots over 5 matches
Early-season figure: after 5 matches, the share can move quickly.
60% allowed inside the box
League avg 65%
From 47 of 78 shots allowed over 5 matches
Early-season figure: after 5 matches, the share can move quickly.
89% open play · 11% set pieces
League avg 18% set pieces
From 0.8 of 7.6 npxG over 5 matches
Early-season figure: after 5 matches, the share can move quickly.
85% open play · 15% set pieces
League avg 18% set pieces
From 1.5 of 9.9 npxG allowed over 5 matches
Early-season figure: after 5 matches, the share can move quickly.
Stade Rennais home and away xG
| Measure | Home | Away only 2 matches with xG |
|---|---|---|
| Matches | 3 | 2 |
| xG / match | 1.96 | 1.46 |
| xGA / match | 2.19 | 2.40 |
| xGD / match | -0.23 | -0.94 |
| xPts / match Model — Model output — computed from each match's xG, not a result. How xPts works → | 1.24 | 0.85 |
Every figure divides by that half's matches with xG. A half with fewer than 3 matches with xG is muted.
Every Stade Rennais match by xG
This season
- Matches
- 5
- xG / match
- 1.76
- xGA / match
- 2.27
- xGD / match
- -0.51
- Points
- 10 of 15
- Sat 19/09 Olympique Lyonnais A Weakest underlying xG 1.37 xGA 3.13 xGD -1.76 xPts 0.43
- Fri 11/09 Olympique de Marseille H Best underlying xG 1.88 xGA 1.34 xGD +0.54 xPts 1.77
- Sun 06/09 Angers A xG 1.54 xGA 1.66 xGD -0.12 xPts 1.27
- Sun 30/08 Le Mans H xG 3.12 P xGA 3.06 P xGD +0.06 xPts 1.43
- Sun 23/08 Paris Saint-Germain H xG 0.87 xGA 2.16 xGD -1.29 xPts 0.51
Newest first. The dot is xG and the ring is xGA, on one scale from 0 to 3.13. 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.
Stade Rennais in Ligue 1
Attack
- xG / match #7 of 18
- Shots / match #3 of 18
- Chance quality #13 of 18
- Home xG #4 of 18
- Away xG #12 of 18
Defence
- xGA / match #17 of 18
- Shots allowed #13 of 18
- Chance quality allowed #16 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.