xgEdge

Expected goals

Metz expected goals (xG) 2025/2026

Ligue 1 · after 34 matches · updated 1 Oct

Metz's attacking and defensive expected goals in Ligue 1 2025/2026, compared with the results they produced and with the rest of the competition.

Metz xG and xGA per match

Every match ↓
Attack
1.02 xG per match
#17/18
Attack (xG per match) across Ligue 1, best first
Rank Club xG per match
#1 Paris Saint-Germain 2.05
#2 RC Lens 1.98
#3 Olympique de Marseille 1.79
#4 AS Monaco 1.67
#5 Lille 1.61
#6 Stade Rennais 1.60
#7 RC Strasbourg 1.55
#8 Olympique Lyonnais 1.51
#9 Lorient 1.34
#10 Paris FC 1.33
#11 Stade Brestois 1.32
#12 Toulouse 1.30
#13 Nice 1.28
#14 Le Havre 1.12
#15 Nantes 1.09
#16 Auxerre 1.04
#17 Metz 1.02
#18 Angers 0.95
League avg
1.42
Total
34.78 34 matches
Defence
1.84 xGA per match
#18/18
Defence (xGA per match) across Ligue 1, best first
Rank Club xGA per match
#1 Paris Saint-Germain 0.93
#2 Lille 1.08
#3 RC Lens 1.28
#4 Olympique Lyonnais 1.29
#5 Toulouse 1.29
#6 RC Strasbourg 1.34
#7 Lorient 1.35
#8 Olympique de Marseille 1.36
#9 Auxerre 1.41
#10 Nantes 1.43
#11 AS Monaco 1.43
#12 Stade Brestois 1.47
#13 Le Havre 1.52
#14 Stade Rennais 1.57
#15 Paris FC 1.63
#16 Angers 1.64
#17 Nice 1.71
#18 Metz 1.84
League avg
1.42
Total
62.52 34 matches
xG difference
-0.82 xGD per match
#18/18
xG difference (xGD per match) across Ligue 1, best first
Rank Club xGD per match
#1 Paris Saint-Germain +1.12
#2 RC Lens +0.71
#3 Lille +0.53
#4 Olympique de Marseille +0.43
#5 AS Monaco +0.24
#6 Olympique Lyonnais +0.22
#7 RC Strasbourg +0.21
#8 Stade Rennais +0.03
#9 Toulouse +0.00
#10 Lorient -0.01
#11 Stade Brestois -0.16
#12 Paris FC -0.30
#13 Nantes -0.34
#14 Auxerre -0.37
#15 Le Havre -0.40
#16 Nice -0.43
#17 Angers -0.69
#18 Metz -0.82
League avg
0.00
Total
-27.74 34 matches
Expected points Model — Model output — computed from each match's xG, not a result. How xPts works →
0.89 xPts per match
#18/18
Expected points (xPts per match) across Ligue 1, best first
Rank Club xPts per match
#1 Paris Saint-Germain 2.10
#2 RC Lens 1.81
#3 Lille 1.72
#4 Olympique de Marseille 1.66
#5 Olympique Lyonnais 1.53
#6 AS Monaco 1.51
#7 RC Strasbourg 1.47
#8 Stade Rennais 1.42
#9 Toulouse 1.39
#10 Lorient 1.35
#11 Stade Brestois 1.32
#12 Paris FC 1.21
#13 Le Havre 1.16
#14 Auxerre 1.13
#15 Nice 1.13
#16 Nantes 1.12
#17 Angers 0.93
#18 Metz 0.89
League avg
1.38
Total
30.12 vs 17 actual pts

What the xG says

Metz's underlying numbers are among the weakest in Ligue 1. They rank #18 for xG difference at -0.82 per match, from low shot volume and low chance quality. Their 32 goals are 2.78 below 34.78 xG, while 17 points are 13.12 below 30.12 xPts.

Actual vs expected

Measure Actual Expected Difference Reading
Goals vs xG Includes 6.17 xG from penalties
32 34.78 -2.78 scored 2.78 fewer than xG within normal variance
76 62.52 +13.48 conceded 13.48 more than xGA outside normal variance

Select a row to chart it across the season.

Goals minus xG, match by match

Metz are 2.78 goals below their xG after 34 matches. The gap was widest at -3.99, against RC Lens on Wed 29/10.

Goals
32
xG
34.78
Gap
-2.78
Sun 17/08 Sat 23/08 Sun 31/08 Sun 14/09 Sun 21/09 Sun 28/09 Sat 04/10 Sun 19/10 Sun 26/10 Wed 29/10 Sun 02/11 Sun 09/11 Sun 23/11 Fri 28/11 Sun 07/12 Sat 13/12 Sun 04/01 Sun 18/01 Sun 25/01 Sun 01/02 Fri 06/02 Sun 15/02 Sat 21/02 Sun 01/03 Sun 08/03 Sun 15/03 Sun 22/03 Sun 05/04 Fri 10/04 Sun 19/04 Sun 26/04 Sat 02/05 Sun 10/05 Sun 17/05 -4 -3 -2 -1 0 +1 -0.30 -0.86 -0.70 -1.41 -1.57 -2.04 -2.20 -2.28 -2.57 -3.99 -3.33 -2.91 -1.96 -2.98 -2.53 -1.15 -0.56 -0.64 +0.08 -0.37 -1.00 -0.93 -1.01 -2.28 -2.68 -1.33 -1.66 -3.97 -3.45 -3.46 -1.04 -1.26 -1.93 -2.78 -0.30 -0.56 +0.16 -0.71 -0.16 -0.47 -0.16 -0.08 -0.29 -1.42 +0.66 +0.42 +0.95 -1.02 +0.45 +1.38 +0.59 -0.08 +0.72 -0.45 -0.63 +0.07 -0.08 -1.27 -0.40 +1.35 -0.33 -2.31 +0.52 -0.01 +2.42 -0.22 -0.67 -0.85 Running gap goals − xG Each match goals − xG
Metz: Goals vs xG, the gap after every match with xG
Date Opponent Goals xG Match gap Running gap
Sun 17/08 RC Strasbourg 0 0.30 -0.30 -0.30
Sat 23/08 Olympique Lyonnais 0 0.56 -0.56 -0.86
Sun 31/08 Paris FC 2 1.84 +0.16 -0.70
Sun 14/09 Angers 1 1.71 -0.71 -1.41
Sun 21/09 AS Monaco 2 2.16 -0.16 -1.57
Sun 28/09 Le Havre 0 0.47 -0.47 -2.04
Sat 04/10 Olympique de Marseille 0 0.16 -0.16 -2.20
Sun 19/10 Toulouse 0 0.08 -0.08 -2.28
Sun 26/10 Lille 1 1.29 -0.29 -2.57
Wed 29/10 RC Lens 2 3.42 -1.42 -3.99
Sun 02/11 Nantes 2 1.34 +0.66 -3.33
Sun 09/11 Nice 2 1.58 +0.42 -2.91
Sun 23/11 Stade Brestois 2 1.05 +0.95 -1.96
Fri 28/11 Stade Rennais 0 1.02 -1.02 -2.98
Sun 07/12 Auxerre 1 0.55 +0.45 -2.53
Sat 13/12 Paris Saint-Germain 2 0.62 +1.38 -1.15
Sun 04/01 Lorient 1 0.41 +0.59 -0.56
Sun 18/01 RC Strasbourg 1 1.08 -0.08 -0.64
Sun 25/01 Olympique Lyonnais 2 1.28 +0.72 +0.08
Sun 01/02 Angers 0 0.45 -0.45 -0.37
Fri 06/02 Lille 0 0.63 -0.63 -1.00
Sun 15/02 Auxerre 1 0.93 +0.07 -0.93
Sat 21/02 Paris Saint-Germain 0 0.08 -0.08 -1.01
Sun 01/03 Stade Brestois 0 1.27 -1.27 -2.28
Sun 08/03 RC Lens 0 0.40 -0.40 -2.68
Sun 15/03 Toulouse 3 1.65 +1.35 -1.33
Sun 22/03 Stade Rennais 0 0.33 -0.33 -1.66
Sun 05/04 Nantes 0 2.31 -2.31 -3.97
Fri 10/04 Olympique de Marseille 1 0.48 +0.52 -3.45
Sun 19/04 Paris FC 1 1.01 -0.01 -3.46
Sun 26/04 Le Havre 4 1.58 +2.42 -1.04
Sat 02/05 AS Monaco 1 1.22 -0.22 -1.26
Sun 10/05 Lorient 0 0.67 -0.67 -1.93
Sun 17/05 Nice 0 0.85 -0.85 -2.78

Goals vs xG ranking → Expected points ranking →

Metz xG trend

Current form -1.12 npxGD per match

The last 6 matches with xG.

Out-created the opponent in 7 of 34 matches. The worst was against RC Lens on Sun 08/03 (-3.17).

npxG · last 6
0.75
npxGA · last 6
1.87
-4 -3 -2 -1 0 +1 +2 +3 -0.32 Sun 17/08 -2.23 Sat 23/08 -0.58 Sun 31/08 -0.88 Sun 14/09 -2.14 Sun 21/09 +0.19 Sun 28/09 -2.58 Sat 04/10 -1.66 Sun 19/10 -1.61 Sun 26/10 +1.36 Wed 29/10 +0.46 Sun 02/11 -0.15 Sun 09/11 -0.68 Sun 23/11 +0.18 Fri 28/11 -0.59 Sun 07/12 -0.57 Sat 13/12 -1.18 Sun 04/01 -0.87 Sun 18/01 -0.41 Sun 25/01 -0.97 Sun 01/02 -1.02 Fri 06/02 +0.25 Sun 15/02 -2.09 Sat 21/02 +0.11 Sun 01/03 -3.17 Sun 08/03 -0.37 Sun 15/03 -1.15 Sun 22/03 +2.03 Sun 05/04 -2.85 Fri 10/04 -0.38 Sun 19/04 -0.83 Sun 26/04 -0.02 Sat 02/05 -1.88 Sun 10/05 -0.77 Sun 17/05 -0.80 season avg
Metz: non-penalty xG, xGA and their difference in each match, with the season's average so far
Date Opponent npxG npxGA npxGD Avg so far
Sun 17/08 RC Strasbourg 0.30 0.62 -0.32 -0.32
Sat 23/08 Olympique Lyonnais 0.56 2.79 -2.23 -1.28
Sun 31/08 Paris FC 1.84 2.42 -0.58 -1.04
Sun 14/09 Angers 0.93 1.81 -0.88 -1.00
Sun 21/09 AS Monaco 1.37 3.51 -2.14 -1.23
Sun 28/09 Le Havre 0.46 0.27 +0.19 -0.99
Sat 04/10 Olympique de Marseille 0.14 2.72 -2.58 -1.22
Sun 19/10 Toulouse 0.10 1.76 -1.66 -1.28
Sun 26/10 Lille 1.31 2.92 -1.61 -1.31
Wed 29/10 RC Lens 2.68 1.32 +1.36 -1.05
Sun 02/11 Nantes 1.34 0.88 +0.46 -0.91
Sun 09/11 Nice 0.80 0.95 -0.15 -0.84
Sun 23/11 Stade Brestois 0.95 1.63 -0.68 -0.83
Fri 28/11 Stade Rennais 1.03 0.85 +0.18 -0.76
Sun 07/12 Auxerre 0.57 1.16 -0.59 -0.75
Sat 13/12 Paris Saint-Germain 0.63 1.20 -0.57 -0.74
Sun 04/01 Lorient 0.41 1.59 -1.18 -0.76
Sun 18/01 RC Strasbourg 0.25 1.12 -0.87 -0.77
Sun 25/01 Olympique Lyonnais 1.28 1.69 -0.41 -0.75
Sun 01/02 Angers 0.40 1.37 -0.97 -0.76
Fri 06/02 Lille 0.63 1.65 -1.02 -0.77
Sun 15/02 Auxerre 1.03 0.78 +0.25 -0.73
Sat 21/02 Paris Saint-Germain 0.08 2.17 -2.09 -0.79
Sun 01/03 Stade Brestois 0.98 0.87 +0.11 -0.75
Sun 08/03 RC Lens 0.16 3.33 -3.17 -0.85
Sun 15/03 Toulouse 1.05 1.42 -0.37 -0.83
Sun 22/03 Stade Rennais 0.31 1.46 -1.15 -0.84
Sun 05/04 Nantes 2.51 0.48 +2.03 -0.74
Fri 10/04 Olympique de Marseille 0.49 3.34 -2.85 -0.81
Sun 19/04 Paris FC 1.10 1.48 -0.38 -0.80
Sun 26/04 Le Havre 0.71 1.54 -0.83 -0.80
Sat 02/05 AS Monaco 1.03 1.05 -0.02 -0.77
Sun 10/05 Lorient 0.45 2.33 -1.88 -0.81
Sun 17/05 Nice 0.73 1.50 -0.77 -0.80

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 — 0.84 npxG and 1.65 npxGA per match. Current form is the same difference over the last 6 matches with xG.

Form ranking →

Strength of schedule

Season so far
tied number 1 hardest of 18 in Ligue 1
+0.03 xG vs league average
Over 34 league matches
Last 5
number 15 hardest of 17 in Ligue 1
−0.12 xG vs league average
Over 5 league matches
Opponents behind the figures

Season so far

+0.03 xG vs league average · over 34 matches · tied number 1 hardest of 18

  1. Nice Away −0.17
  2. Lorient Home −0.09
  3. AS Monaco Home +0.04
  4. Le Havre Away −0.32
  5. Paris FC Home −0.09
  6. Olympique de Marseille Away +0.26
  7. Nantes Home +0.12
  8. Stade Rennais Away +0.11
  9. Toulouse Home −0.02
  10. RC Lens Away +0.74
  11. Stade Brestois Home −0.27
  12. Paris Saint-Germain Away +0.69
  13. Auxerre Home −0.18
  14. Lille Home +0.32
  15. Angers Away −0.48
  16. Olympique Lyonnais Home +0.02
  17. RC Strasbourg Away −0.20
  18. Lorient Away −0.09
  19. Paris Saint-Germain Home +0.69
  20. Auxerre Away −0.18
  21. Stade Rennais Home +0.11
  22. Stade Brestois Away −0.27
  23. Nice Home −0.17
  24. Nantes Away +0.12
  25. RC Lens Home +0.74
  26. Lille Away +0.32
  27. Toulouse Away −0.02
  28. Olympique de Marseille Home +0.26
  29. Le Havre Home −0.32
  30. AS Monaco Away +0.04
  31. Angers Home −0.48
  32. Paris FC Away −0.09
  33. Olympique Lyonnais Away +0.02
  34. RC Strasbourg Home −0.20

Last 5

−0.12 xG vs league average · over 5 matches · number 15 hardest of 17

  1. Nice Away −0.17
  2. Lorient Home −0.09
  3. AS Monaco Home +0.04
  4. Le Havre Away −0.32
  5. Paris FC Home −0.09

League schedule strength → How this is calculated →

Metz shots and chance quality

Low volume, low quality. Metz take 10.1 shots a match (league 12.4) at 0.08 npxG a shot (league 0.10), #17 in Ligue 1 for volume and #17 for quality. 62% of their shots come from inside the box (league 66%), and set pieces produce 23% of their npxG (league 22%).

Attack

Shot volume
10.1 shots per match
#17/18
Shot volume (shots per match) across Ligue 1, best first
Rank Club shots per match
#1 Paris Saint-Germain 17.7
#2 RC Lens 16.5
#3 Olympique de Marseille 15.1
#4 Stade Rennais 14.2
#5 Lille 13.6
#6 Toulouse 12.8
#7 AS Monaco 12.5
#8 Olympique Lyonnais 12.2
#9 Paris FC 11.7
#10 RC Strasbourg 11.4
#11 Nantes 11.3
#12 Lorient 11.3
#13 Nice 11.2
#14 Stade Brestois 11.2
#15 Le Havre 10.9
#16 Auxerre 10.7
#17 Metz 10.1
#18 Angers 9.3
League avg
12.4
Total
342 shots from 34 matches
Chance quality
0.08 npxG per shot
#17/18
Chance quality (npxG per shot) across Ligue 1, best first
Rank Club npxG per shot
#1 AS Monaco 0.13
#2 RC Strasbourg 0.12
#3 RC Lens 0.11
#4 Olympique Lyonnais 0.11
#5 Olympique de Marseille 0.11
#6 Lorient 0.11
#7 Nice 0.10
#8 Paris FC 0.10
#9 Lille 0.10
#10 Paris Saint-Germain 0.10
#11 Stade Rennais 0.10
#12 Stade Brestois 0.10
#13 Le Havre 0.10
#14 Toulouse 0.09
#15 Auxerre 0.09
#16 Nantes 0.09
#17 Metz 0.08
#18 Angers 0.08
League avg
0.10
Total
28.61 npxG from 342 shots

Defence

Shots allowed
15.3 shots per match
#18/18
Shots allowed (shots per match) across Ligue 1, best first
Rank Club shots per match
#1 Paris Saint-Germain 8.8
#2 Lille 9.1
#3 Olympique de Marseille 10.6
#4 Lorient 11.1
#5 RC Lens 11.1
=6 Auxerre 12.0
=6 Olympique Lyonnais 12.0
#8 Toulouse 12.2
#9 Paris FC 12.4
#10 RC Strasbourg 12.6
#11 Le Havre 13.0
#12 AS Monaco 13.4
#13 Nantes 13.5
#14 Stade Rennais 13.5
#15 Stade Brestois 13.9
#16 Angers 14.4
#17 Nice 15.0
#18 Metz 15.3
League avg
12.4
Total
521 shots allowed from 34 matches
Chance quality allowed
0.11 npxGA per shot
#13/18
Chance quality allowed (npxGA per shot) across Ligue 1, best first
Rank Club npxGA per shot
#1 RC Strasbourg 0.09
#2 Paris Saint-Germain 0.09
#3 Toulouse 0.10
#4 Stade Brestois 0.10
#5 Olympique Lyonnais 0.10
#6 Nantes 0.10
#7 Nice 0.10
#8 AS Monaco 0.10
#9 RC Lens 0.10
#10 Angers 0.10
#11 Stade Rennais 0.10
#12 Le Havre 0.10
#13 Metz 0.11
#14 Auxerre 0.11
#15 Lorient 0.11
#16 Paris FC 0.11
#17 Lille 0.11
#18 Olympique de Marseille 0.12
League avg
0.10
Total
55.98 npxGA from 521 shots

Shot profile

Shot location

62% inside the box

League avg 66%

From 213 of 342 shots over 34 matches

Shots allowed, location

64% allowed inside the box

League avg 66%

From 333 of 521 shots allowed over 34 matches

Where the npxG comes from

77% open play · 23% set pieces

League avg 22% set pieces

From 6.9 of 29.9 npxG over 34 matches

Where the npxG allowed comes from

80% open play · 20% set pieces

League avg 22% set pieces

From 11.3 of 57.1 npxG allowed over 34 matches

Metz home and away xG

Metz per-match figures at home and away
Measure Home Away
Matches 17 17
xG / match 1.19 0.85
xGA / match 1.38 2.30
xGD / match -0.19 -1.44
xPts / match Model — Model output — computed from each match's xG, not a result. How xPts works → 1.24 0.54

Every figure divides by that half's matches with xG. A half with fewer than 3 matches with xG is muted.

Every Metz match by xG

Venue

Newest first. The dot is xG and the ring is xGA, on one scale from 0 to 3.55. 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.

Every result, all competitions →

Metz in Ligue 1

Attack

Defence

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.

Learn how our xG analytics work →

How the model works →