FootballEdgeSeason 2026/27Self-updating record
xG ratings · 2026/27

The table underneath
the table.

The league table tells you what happened. This one tells you how well each side actually played — ranked by the quality of chances they created and conceded, not by results. This is the season in progress.

New here? Read these three columns. xG diff is the headline: chances created minus chances conceded, per match. The side at the top of it played the best football, whatever the results say. Pts +/- is the luck column — actual points minus what the chances in each match were worth. A big positive means a team has been finishing well, keeping well, or riding their luck. Goals vs xG is the same idea in goals. Both tend to drift back toward zero, which is why the sides at the top of them are usually the ones who fall away next season. Every column header explains itself if you hover over it, and every column sorts.

Prefer one league at a time? The per-league hubs →

Or see the headline numbers drawn as one page: Floodlights →

↓ Download the full ratings table (CSV)free to reuse, a credit to Football Edge is appreciated

La Liga

On chance quality alone, Barcelona were the best side here (+2.48 xG difference per game). Deportivo La Coruna scored +4.6 goals more than their chances were worth, the biggest gap in the division. Real Betis collected +6.6 points more than those chances deserved. Gaps like that usually shrink over time, which is why sides at the top of them often fall away.

#TeamPldW-D-LPtsxPtsPts +/-GFGAxGF/gxGA/gxG diffG vs xG
1Barcelona55-0-01512.4+2.62143.501.02+2.48+3.5
2Real Madrid54-0-11210.9+1.11442.360.77+1.59+2.2
3Osasuna52-1-278.5-1.5581.550.94+0.60-2.7
4Alaves53-1-1108.3+1.71151.531.11+0.41+3.4
5Espanyol52-1-278.0-1.0851.090.79+0.30+2.5
6Villarreal50-2-327.3-5.37101.661.56+0.11-1.3
7Sevilla53-1-1106.8+3.2860.940.86+0.09+3.3
8Racing Santander52-1-277.0+0.0991.401.33+0.07+2.0
9Atletico Madrid53-1-1107.1+2.91061.091.19-0.10+4.5
10Levante51-2-256.3-1.3791.521.64-0.12-0.6
11Deportivo La Coruna52-3-095.1+3.9960.881.33-0.44+4.6
12Malaga50-3-235.2-2.2280.941.40-0.46-2.7
13Real Betis54-0-1125.4+6.6761.602.14-0.54-1.0
14Celta Vigo60-4-246.6-2.6360.781.34-0.55-1.7
15Getafe51-2-254.7+0.3360.711.29-0.58-0.5
16Real Sociedad62-1-376.5+0.56110.951.63-0.68+0.3
17Rayo Vallecano51-1-345.0-1.08141.262.01-0.75+1.7
18Valencia50-1-414.8-3.81100.771.56-0.79-2.8
What each column means
  • Pld — Matches played
  • W-D-L — Wins, draws and losses
  • Pts — Actual league points won
  • xPts — Expected points — what the chances created and conceded in each match were worth, run through the same model as the rest of the site
  • Pts +/- — Actual points minus expected points. Positive means they took more from their chances than the chances deserved — finishing, goalkeeping, or luck
  • GF — Goals scored
  • GA — Goals conceded
  • xGF/g — Expected goals created per match — the quality of chances they made
  • xGA/g — Expected goals conceded per match — the quality of chances they allowed
  • xG diff — xGF/g minus xGA/g. The honest measure of how good a side has been, regardless of results
  • G vs xG — Goals scored minus expected goals. A big positive means clinical finishing or good luck, and it usually drifts back to zero

Championship

On chance quality alone, Middlesbrough were the best side here (+0.96 xG difference per game). Southampton scored +4.9 goals more than their chances were worth, the biggest gap in the division. West Brom collected +6.5 points more than those chances deserved. Gaps like that usually shrink over time, which is why sides at the top of them often fall away.

#TeamPldW-D-LPtsxPtsPts +/-GFGAxGF/gxGA/gxG diffG vs xG
1Middlesbrough53-1-1109.7+0.3851.810.85+0.96-1.0
2Norwich63-0-3910.5-1.51091.901.24+0.66-1.4
3West Ham63-2-1119.6+1.41381.741.10+0.63+2.6
4Swansea63-2-1119.8+1.2841.440.82+0.61-0.6
5Wolves52-2-188.7-0.713101.631.05+0.59+4.8
6Millwall53-0-298.2+0.81081.851.37+0.47+0.8
7Preston61-0-539.2-6.26121.471.09+0.38-2.8
8Lincoln51-2-258.3-3.3461.551.17+0.38-3.8
9QPR63-2-1119.6+1.4741.351.08+0.27-1.1
10Southampton63-2-1118.7+2.31471.511.29+0.22+4.9
11Wrexham61-4-179.1-2.1751.100.90+0.19+0.4
12Birmingham61-4-178.7-1.7881.291.16+0.13+0.3
13Cardiff60-4-248.4-4.47101.611.50+0.11-2.6
14Portsmouth52-0-367.1-1.1781.381.33+0.05+0.1
15Burnley60-3-336.8-3.87131.171.45-0.28+0.0
16Bolton61-1-446.7-2.76121.241.62-0.38-1.5
17Bristol City53-1-1106.1+3.9971.031.44-0.40+3.8
18Blackburn61-2-356.4-1.4790.881.33-0.45+1.7
19Charlton63-2-1115.9+5.1560.601.07-0.46+1.4
20West Brom64-1-1136.5+6.5961.081.55-0.47+2.5
21Watford62-2-286.0+2.0671.031.61-0.59-0.2
22Stoke City62-1-376.0+1.09100.851.47-0.62+3.9
23Sheffield Utd62-3-195.8+3.2880.951.63-0.67+2.3
24Derby61-1-445.8-1.85110.831.80-0.98+0.0
What each column means
  • Pld — Matches played
  • W-D-L — Wins, draws and losses
  • Pts — Actual league points won
  • xPts — Expected points — what the chances created and conceded in each match were worth, run through the same model as the rest of the site
  • Pts +/- — Actual points minus expected points. Positive means they took more from their chances than the chances deserved — finishing, goalkeeping, or luck
  • GF — Goals scored
  • GA — Goals conceded
  • xGF/g — Expected goals created per match — the quality of chances they made
  • xGA/g — Expected goals conceded per match — the quality of chances they allowed
  • xG diff — xGF/g minus xGA/g. The honest measure of how good a side has been, regardless of results
  • G vs xG — Goals scored minus expected goals. A big positive means clinical finishing or good luck, and it usually drifts back to zero