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 ↓| 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
| 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
| 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
| 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
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
- This match
- Match gap
- Running gap
| 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 |
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
- npxG
- npxGA
- npxGD
- Avg 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.
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
- Nice Away −0.17
- Lorient Home −0.09
- AS Monaco Home +0.04
- Le Havre Away −0.32
- Paris FC Home −0.09
- Olympique de Marseille Away +0.26
- Nantes Home +0.12
- Stade Rennais Away +0.11
- Toulouse Home −0.02
- RC Lens Away +0.74
- Stade Brestois Home −0.27
- Paris Saint-Germain Away +0.69
- Auxerre Home −0.18
- Lille Home +0.32
- Angers Away −0.48
- Olympique Lyonnais Home +0.02
- RC Strasbourg Away −0.20
- Lorient Away −0.09
- Paris Saint-Germain Home +0.69
- Auxerre Away −0.18
- Stade Rennais Home +0.11
- Stade Brestois Away −0.27
- Nice Home −0.17
- Nantes Away +0.12
- RC Lens Home +0.74
- Lille Away +0.32
- Toulouse Away −0.02
- Olympique de Marseille Home +0.26
- Le Havre Home −0.32
- AS Monaco Away +0.04
- Angers Home −0.48
- Paris FC Away −0.09
- Olympique Lyonnais Away +0.02
- RC Strasbourg Home −0.20
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
| 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
| 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
| 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
| 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
62% inside the box
League avg 66%
From 213 of 342 shots over 34 matches
64% allowed inside the box
League avg 66%
From 333 of 521 shots allowed over 34 matches
77% open play · 23% set pieces
League avg 22% set pieces
From 6.9 of 29.9 npxG over 34 matches
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
| 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
This season
- Matches
- 34
- xG / match
- 1.02
- xGA / match
- 1.84
- xGD / match
- -0.82
- Points
- 17 of 102
- Sun 17/05 Nice A xG 0.85 xGA 1.64 xGD -0.79 xPts 0.73
- Sun 10/05 Lorient H xG 0.67 xGA 2.00 xGD -1.33 xPts 0.43
- Sat 02/05 AS Monaco H xG 1.22 xGA 1.25 xGD -0.03 xPts 1.32
- Sun 26/04 Le Havre A xG 1.58 P xGA 1.99 xGD -0.41 xPts 1.08
- Sun 19/04 Paris FC H xG 1.01 xGA 1.74 xGD -0.73 xPts 0.79
- Fri 10/04 Olympique de Marseille A Weakest underlying xG 0.48 xGA 3.55 xGD -3.07 xPts 0.06
- Sun 05/04 Nantes H xG 2.31 xGA 0.46 xGD +1.85 xPts 2.66
- Sun 22/03 Stade Rennais A xG 0.33 xGA 1.52 xGD -1.19 xPts 0.39
- Sun 15/03 Toulouse H xG 1.65 P xGA 1.42 xGD +0.23 xPts 1.54
- Sun 08/03 RC Lens A xG 0.40 xGA 3.22 xGD -2.82 xPts 0.08
- Sun 01/03 Stade Brestois H xG 1.27 xGA 0.87 xGD +0.40 xPts 1.70
- Sat 21/02 Paris Saint-Germain A xG 0.08 xGA 2.13 xGD -2.05 xPts 0.10
- Sun 15/02 Auxerre H xG 0.93 xGA 0.78 xGD +0.15 xPts 1.45
- Fri 06/02 Lille H xG 0.63 xGA 1.65 xGD -1.02 xPts 0.55
- Sun 01/02 Angers A xG 0.45 xGA 1.62 xGD -1.17 xPts 0.42
- Sun 25/01 Olympique Lyonnais H xG 1.28 xGA 2.55 P xGD -1.27 xPts 0.59
- Sun 18/01 RC Strasbourg A xG 1.08 P xGA 1.12 xGD -0.04 xPts 1.30
- Sun 04/01 Lorient A xG 0.41 xGA 1.44 xGD -1.03 xPts 0.46
- Sat 13/12 Paris Saint-Germain H xG 0.62 xGA 1.85 P xGD -1.23 xPts 0.47
- Sun 07/12 Auxerre A xG 0.55 xGA 1.94 P xGD -1.39 xPts 0.38
- Fri 28/11 Stade Rennais H xG 1.02 xGA 0.78 xGD +0.24 xPts 1.55
- Sun 23/11 Stade Brestois A xG 1.05 xGA 3.11 P xGD -2.06 xPts 0.28
- Sun 09/11 Nice H xG 1.58 P xGA 0.95 xGD +0.63 xPts 1.87
- Sun 02/11 Nantes A xG 1.34 xGA 0.81 xGD +0.53 xPts 1.81
- Wed 29/10 RC Lens H Best underlying xG 3.42 P xGA 1.32 xGD +2.10 xPts 2.57
- Sun 26/10 Lille A xG 1.29 xGA 2.92 xGD -1.63 xPts 0.45
- Sun 19/10 Toulouse A xG 0.08 xGA 2.54 P xGD -2.46 xPts 0.07
- Sat 04/10 Olympique de Marseille H xG 0.16 xGA 2.71 xGD -2.55 xPts 0.07
- Sun 28/09 Le Havre H xG 0.47 xGA 0.27 xGD +0.20 xPts 1.54
- Sun 21/09 AS Monaco A xG 2.16 P xGA 3.50 xGD -1.34 xPts 0.69
- Sun 14/09 Angers H xG 1.71 P xGA 2.27 xGD -0.56 xPts 1.01
- Sun 31/08 Paris FC A xG 1.84 xGA 3.21 P xGD -1.37 xPts 0.63
- Sat 23/08 Olympique Lyonnais A xG 0.56 xGA 2.77 xGD -2.21 xPts 0.18
- Sun 17/08 RC Strasbourg H xG 0.30 xGA 0.62 xGD -0.32 xPts 0.89
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.
Metz in Ligue 1
Attack
- xG / match #17 of 18
- Shots / match #17 of 18
- Chance quality #17 of 18
- Home xG #16 of 21
- Away xG #18 of 21
Defence
- xGA / match #18 of 18
- Shots allowed #18 of 18
- Chance quality allowed #13 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.