GoalSoon · built 05 September 2026 · every figure is our own calculation
18 clubs, 491 players currently registered with them, and a projected points total for each — not from what the clubs did last season, but from what the men now in their squads did, wherever in the world they did it. The error is measured and published: ±8 points.
On this page: how it works · how wrong it is · the 18 clubs · where it disagrees with last season · where the minutes were played · club by club
A club is not the same thing in August that it was in April. Squads turn over, and a projection built on last season’s league table cannot see that. So this one starts a level down: every player registered with the 18 clubs, what he did last season, and where he did it.
The problem with adding players up is that a good season in one division is not a good season in another. We do not assume the gap — we measure it, on 8,628 players who actually moved and so were rated in both divisions in consecutive seasons. Fitting all those moves at once puts every division on one scale. The zero has to sit somewhere and we put it on League One, so every number below reads as “this much above or below a League One season”:
| Division | Level, in rating z | Moves seen |
|---|---|---|
| the Premier League | +1.46 | 1015 |
| La Liga | +1.18 | 1247 |
| the Bundesliga | +1.07 | 918 |
| Serie A | +1.03 | 1524 |
| Ligue 1 | +0.83 | 1139 |
| the Championship | +0.61 | 1189 |
| the Belgian Pro League | +0.44 | 628 |
| the Eredivisie | +0.36 | 731 |
| the Segunda | +0.35 | 1288 |
| the Primeira Liga | +0.35 | 652 |
| the 2. Bundesliga | +0.26 | 590 |
| Serie B | +0.23 | 1120 |
| the Scottish Premiership | +0.02 | 408 |
| Ligue 2 | +0.00 | 662 |
| League One | +0.00 | 1560 |
| the 3. Liga | -0.18 | 270 |
| the HNL | -0.21 | 279 |
| League Two | -0.27 | 1267 |
| the Challenger Pro League | -0.27 | 228 |
| the Eerste Divisie | -0.36 | 515 |
The Premier League sits about a point and a half of a standard deviation above League One, the Championship six tenths, League Two a quarter below. A separate term in the same fit carries whatever a player gains or loses simply by changing club, whichever division he lands in (+0.04 on this scale — near enough nothing), so that common effect is not charged to the divisions.
Five figures per club, each measured within its own division and season so that a Championship squad and a League Two squad are read on the same terms. The weights are fitted, not chosen:
| Input | Weight | What it is |
|---|---|---|
| squad quality | +0.254 | Squad quality — the 25 players with the heaviest minutes last season, each scored against his own division and then put on one scale. |
| attacking end | +0.250 | The attacking end — the six best goal-and-assist rates in the squad, again measured against the division each man played in. |
| the club’s own last season | +0.237 | What the club itself did last season, points per game, adjusted for the level it did it at — the only club-level input, and a light one. |
| minutes from the Championship or above | +0.122 | How much of the squad’s minutes were played in a division rated above League One — the Championship, the Premier League or a foreign division at that level. The threshold is fixed at League One for every page, so the input means the same thing wherever it is used. It is not a bonus for names; a man who played those minutes badly scores badly. |
| ball-winning | +0.012 | Ball-winning — tackles per 90 across the squad, on the same scale. |
Fitted on 113 club-seasons from the Championship, League One and League Two, 2020/21 to 2025/26.
Checked by holding out one season at a time and predicting it from the others, so nothing is scored on data it was fitted on:
| Approach | Error, pts/game | Over 34 games |
|---|---|---|
| Give every club the division average | 0.367 | ±12.5 |
| Repeat last season, adjusted for level | 0.310 | ±10.5 |
| This model, from the players | 0.245 | ±8.3 |
So it is worth about 4 points of accuracy over knowing nothing, and about 2 points over assuming last season repeats. That is a real edge and a small one — on 113 club-seasons it holds against the division average at p < 0.001. One thing that number does not say on its own: this method was carried over from three English divisions and tested on thirteen more before any of them got a page. Seven failed and have none — almost all of them second tiers, where a squad explains far less of a season. This division is one that passed, so read the figure as a division that survived a selection, not as a single test. The whole projected range across the division is 44 points and the error on any one club is ±8, which is why the table below is ordered but not numbered, and why the bands overlap almost everywhere. Anyone who tells you they can rank 18 clubs 1 to 18 in August is not measuring their own error.
The same model run on goals rather than points gives 0.223 of a goal per game of error on goals scored against 0.326 for the division average, and 0.232 against 0.262 on goals conceded. So the attacking half reads off a squad list and the defensive half barely does — a defence is harder to see in a list of players than an attack.
| Club | Projected pts | Band | Scored/game | Conceded/game | Squad | No data | Age | Mins from above | Mins from below | Last season pts | Where |
|---|---|---|---|---|---|---|---|---|---|---|---|
| PSG | 71 | 63–80 | 2.13 | 1.02 | 34 | 11 | 23.9 | 0% | 0% | 76 | Ligue 1 |
| Lens | 60 | 51–68 | 1.74 | 1.10 | 22 | 5 | 26.6 | 0% | 25% | 70 | Ligue 1 |
| Lille | 57 | 49–65 | 1.66 | 1.21 | 30 | 9 | 26.3 | 0% | 6% | 61 | Ligue 1 |
| Marseille | 57 | 49–65 | 1.69 | 1.25 | 30 | 8 | 27.7 | 0% | 9% | 59 | Ligue 1 |
| Lyon | 55 | 47–64 | 1.63 | 1.27 | 31 | 11 | 26.9 | 0% | 3% | 60 | Ligue 1 |
| Rennes | 54 | 45–62 | 1.57 | 1.27 | 33 | 9 | 26.8 | 2% | 14% | 56 | Ligue 1 |
| Monaco | 52 | 43–60 | 1.52 | 1.28 | 27 | 8 | 25.1 | 0% | 14% | 54 | Ligue 1 |
| Strasbourg | 51 | 42–59 | 1.49 | 1.31 | 31 | 12 | 22.0 | 0% | 7% | 53 | Ligue 1 |
| Toulouse | 48 | 39–56 | 1.40 | 1.43 | 31 | 11 | 24.6 | 0% | 0% | 45 | Ligue 1 |
| Lorient | 46 | 38–54 | 1.41 | 1.49 | 26 | 11 | 25.7 | 0% | 11% | 45 | Ligue 1 |
| Paris FC | 44 | 36–52 | 1.33 | 1.52 | 29 | 3 | 27.0 | 0% | 6% | 44 | Ligue 1 |
| Brest | 43 | 35–52 | 1.31 | 1.44 | 20 | 4 | 27.7 | 0% | 4% | 39 | Ligue 1 |
| Le Havre | 38 | 30–46 | 1.18 | 1.56 | 20 | 5 | 27.8 | 0% | 17% | 35 | Ligue 1 |
| Auxerre | 37 | 29–45 | 1.16 | 1.59 | 29 | 8 | 24.8 | 0% | 24% | 34 | Ligue 1 |
| Nice | 36 | 28–45 | 1.12 | 1.60 | 28 | 13 | 26.7 | 0% | 0% | 32 | Ligue 1 |
| Angers | 35 | 27–44 | 1.02 | 1.53 | 27 | 10 | 26.2 | 0% | 3% | 36 | Ligue 1 |
| Troyes | 33 | 25–42 | 1.09 | 1.64 | 20 | 7 | 26.9 | 0% | 100% | 67 | Ligue 2 |
| Le Mans | 27 | 19–35 | 0.83 | 1.72 | 23 | 6 | 28.2 | 0% | 100% | 62 | Ligue 2 |
▲ upper group ▼ lower group — grouping is by projection ± half the measured error, not by predicted position. Age is the squad’s average age weighted by the minutes each man played last season, so it describes the side that actually plays rather than the registration list. Mins from above and from below are the shares of last season’s measured minutes played in a division rated higher or lower than this one; the rest were played at this level or in a division we cannot place.
The plainest rival to this model is “whatever the club did last season, corrected for the division it did it in” — the second row of the error table above. Here is that number next to ours, club by club. Where the two agree, the squad has not really changed. Where they part, the summer did something the table cannot see:
| Club | Last season | Repeat it, level-adjusted | This model | Difference |
|---|---|---|---|---|
| Le Mans | 62 pts, Ligue 2, 2nd | 49 | 27 | -22 |
| Troyes | 67 pts, Ligue 2, 1st | 54 | 33 | -21 |
| Lens | 70 pts, Ligue 1, 2nd | 70 | 60 | -10 |
| PSG | 76 pts, Ligue 1, 1st | 76 | 71 | -5 |
| Lyon | 60 pts, Ligue 1, 4th | 60 | 55 | -5 |
| Nice | 32 pts, Ligue 1, 16th | 32 | 36 | +4 |
| Rennes | 56 pts, Ligue 1, 6th | 58 | 54 | -4 |
| Lille | 61 pts, Ligue 1, 3rd | 61 | 57 | -4 |
| Brest | 39 pts, Ligue 1, 12th | 40 | 43 | +3 |
| Le Havre | 35 pts, Ligue 1, 14th | 35 | 38 | +3 |
| Auxerre | 34 pts, Ligue 1, 15th | 34 | 37 | +3 |
| Toulouse | 45 pts, Ligue 1, 9th | 45 | 48 | +3 |
| Strasbourg | 53 pts, Ligue 1, 8th | 53 | 51 | -2 |
| Monaco | 54 pts, Ligue 1, 7th | 54 | 52 | -2 |
| Marseille | 59 pts, Ligue 1, 5th | 59 | 57 | -2 |
| Lorient | 45 pts, Ligue 1, 10th | 45 | 46 | +1 |
| Angers | 36 pts, Ligue 1, 13th | 36 | 35 | -1 |
| Paris FC | 44 pts, Ligue 1, 11th | 44 | 44 | -0 |
Sorted by the size of the disagreement. The level adjustment is why a club promoted from League One does not simply keep its 25/26 points total: a point won a division lower is worth less here, and the size of that discount is the measured one from the transfers table above, not a guess.
Every club number on this page is built out of last season’s minutes, so it is worth seeing where those minutes come from. Across the division, the 491 registered players carry 6,004 full games of measured playing time from 2025/26, split like this:
| Division those minutes were played in | Minutes | Share | Level, in rating z |
|---|---|---|---|
| Ligue 1 | 443,568 | 82.1% | +0.83 |
| Ligue 2 | 68,778 | 12.7% | +0.00 |
| the Belgian Pro League | 15,515 | 2.9% | +0.44 |
| the Eredivisie | 3,385 | 0.6% | +0.36 |
| the Primeira Liga | 2,546 | 0.5% | +0.35 |
| the 2. Bundesliga | 2,513 | 0.5% | +0.26 |
| the 3. Liga | 1,755 | 0.3% | -0.18 |
Only divisions we hold match-level player data for appear here; minutes played outside them are in the “no measured season” count instead, which is 151 of the 491 registered players. Per-club splits are on each club card below.
Last season those minutes were played in: Ligue 1 100%.
We project 71 points (63–80), against a division average of 47. Last season: 76 points in Ligue 1, finishing 1st. What pushes them up: squad quality (+10), the club’s own last season (+7), attacking end (+6) points. Of the 22 men who played for them last season, 22 are still on the list. 11 of the 34 registered players have no season in our data, so the projection is built on the other 23. Squad value on our player feed: €1277.8m across 21 players — recorded here for context, it is not in the model.
| Where it comes from | Pts |
|---|---|
| squad quality | +9.9 |
| the club’s own last season | +7.5 |
| attacking end | +6.1 |
| minutes from the Championship or above | +0.9 |
| ball-winning | -0.1 |
| Player | Pos | Where in 2025/26 | Division | Mins | Apps | G | A | Rating pct |
|---|---|---|---|---|---|---|---|---|
| Vitinha | M | PSG | Ligue 1 | 2121 | 31 | 1 | 7 | 100 |
| Ilya Zabarnyi | D | PSG | Ligue 1 | 2387 | 32 | 1 | 0 | 95 |
| Lucas Beraldo | D | PSG | Ligue 1 | 1570 | 33 | 2 | 1 | 99 |
| Warren Zaire-Emery | D | PSG | Ligue 1 | 2453 | 32 | 3 | 4 | 87 |
| Bradley Barcola | F | PSG | Ligue 1 | 1750 | 31 | 11 | 1 | 97 |
| Khvicha Kvaratskhelia | F | PSG | Ligue 1 | 1483 | 31 | 8 | 4 | 98 |
Last season those minutes were played in: Ligue 1 75%, the Belgian Pro League 17%, the 2. Bundesliga 8%.
We project 60 points (51–68), against a division average of 47. Last season: 70 points in Ligue 1, finishing 2nd. What pushes them up: the club’s own last season (+6), squad quality (+5), attacking end (+2) points. Of the 26 men who played for them last season, 15 are still on the list. 5 of the 22 registered players have no season in our data, so the projection is built on the other 17. Squad value on our player feed: €225.4m across 24 players — recorded here for context, it is not in the model.
| Where it comes from | Pts |
|---|---|
| the club’s own last season | +5.7 |
| squad quality | +4.5 |
| attacking end | +1.5 |
| minutes from the Championship or above | +0.9 |
| ball-winning | +0.1 |
| Player | Pos | Where in 2025/26 | Division | Mins | Apps | G | A | Rating pct |
|---|---|---|---|---|---|---|---|---|
| Florian Thauvin | F | Lens | Ligue 1 | 2460 | 33 | 11 | 6 | 98 |
| Matthieu Udol | M | Lens | Ligue 1 | 3003 | 34 | 1 | 7 | 86 |
| Mamadou Sangare | M | Lens | Ligue 1 | 2327 | 29 | 3 | 4 | 92 |
| Samson Baidoo | D | Lens | Ligue 1 | 1832 | 24 | 2 | 1 | 97 |
| Ismaelo Ganiou | D | Lens | Ligue 1 | 2014 | 31 | 3 | 0 | 93 |
| Thorgan Hazard | M | Anderlecht | the Belgian Pro League | 2722 | 38 | 13 | 7 | 86 |
Last season those minutes were played in: Ligue 1 94%, the Eredivisie 6%.
We project 57 points (49–65), against a division average of 47. Last season: 61 points in Ligue 1, finishing 3rd. What pushes them up: attacking end (+4), the club’s own last season (+3), squad quality (+2) points. Of the 25 men who played for them last season, 20 are still on the list. 9 of the 30 registered players have no season in our data, so the projection is built on the other 21. Squad value on our player feed: €274.7m across 24 players — recorded here for context, it is not in the model.
| Where it comes from | Pts |
|---|---|
| attacking end | +3.5 |
| the club’s own last season | +3.1 |
| squad quality | +2.5 |
| minutes from the Championship or above | +0.9 |
| ball-winning | +0.1 |
| Player | Pos | Where in 2025/26 | Division | Mins | Apps | G | A | Rating pct |
|---|---|---|---|---|---|---|---|---|
| Aissa Mandi | D | Lille | Ligue 1 | 2435 | 31 | 1 | 0 | 98 |
| Benjamin Andre | M | Lille | Ligue 1 | 2333 | 27 | 2 | 2 | 93 |
| Matias Fernandez-Pardo | F | Lille | Ligue 1 | 2379 | 31 | 8 | 5 | 89 |
| Berke Ozer | G | Lille | Ligue 1 | 2834 | 32 | 0 | 1 | 78 |
| Arnar Haraldsson Hakon | M | Lille | Ligue 1 | 2475 | 32 | 8 | 2 | 81 |
| Basar Onal | F | Nijmegen | the Eredivisie | 2069 | 30 | 7 | 7 | 90 |
Last season those minutes were played in: Ligue 1 91%, the Belgian Pro League 4%, the Eredivisie 4%.
We project 57 points (49–65), against a division average of 47. Last season: 59 points in Ligue 1, finishing 5th. What pushes them up: attacking end (+4), squad quality (+3), the club’s own last season (+3) points. Of the 32 men who played for them last season, 22 are still on the list. 8 of the 30 registered players have no season in our data, so the projection is built on the other 22. Squad value on our player feed: €311.1m across 21 players — recorded here for context, it is not in the model.
| Where it comes from | Pts |
|---|---|
| attacking end | +3.6 |
| squad quality | +2.9 |
| the club’s own last season | +2.5 |
| minutes from the Championship or above | +0.9 |
| ball-winning | -0.0 |
| Player | Pos | Where in 2025/26 | Division | Mins | Apps | G | A | Rating pct |
|---|---|---|---|---|---|---|---|---|
| Mason Greenwood | M | Marseille | Ligue 1 | 2469 | 33 | 16 | 7 | 99 |
| Pierre-Emile Hojbjerg | M | Marseille | Ligue 1 | 2715 | 32 | 4 | 5 | 97 |
| Pierre-Emerick Aubameyang | F | Marseille | Ligue 1 | 2046 | 33 | 10 | 5 | 85 |
| Igor Paixao | M | Marseille | Ligue 1 | 1981 | 30 | 6 | 5 | 83 |
| Nayef Aguerd | D | Marseille | Ligue 1 | 1399 | 17 | 1 | 0 | 95 |
| Emerson | D | Marseille | Ligue 1 | 2124 | 29 | 0 | 3 | 78 |
Last season those minutes were played in: Ligue 1 97%, Ligue 2 3%.
We project 55 points (47–64), against a division average of 47. Last season: 60 points in Ligue 1, finishing 4th. What pushes them up: attacking end (+3), the club’s own last season (+3), squad quality (+2) points. Of the 24 men who played for them last season, 15 are still on the list. 11 of the 31 registered players have no season in our data, so the projection is built on the other 20. Squad value on our player feed: €249.3m across 21 players — recorded here for context, it is not in the model.
| Where it comes from | Pts |
|---|---|
| attacking end | +3.3 |
| the club’s own last season | +2.8 |
| squad quality | +1.8 |
| minutes from the Championship or above | +0.7 |
| ball-winning | -0.0 |
| Player | Pos | Where in 2025/26 | Division | Mins | Apps | G | A | Rating pct |
|---|---|---|---|---|---|---|---|---|
| Moussa Niakhate | D | Lyon | Ligue 1 | 2758 | 32 | 0 | 2 | 97 |
| Tyler Morton | M | Lyon | Ligue 1 | 2524 | 29 | 2 | 2 | 94 |
| Corentin Tolisso | M | Lyon | Ligue 1 | 2306 | 30 | 11 | 4 | 95 |
| Clinton Mata | D | Lyon | Ligue 1 | 2836 | 32 | 0 | 0 | 81 |
| Dominik Greif | G | Lyon | Ligue 1 | 2610 | 33 | 0 | 1 | 62 |
| Pavel Sulc | M | Lyon | Ligue 1 | 1568 | 28 | 11 | 3 | 79 |
Last season those minutes were played in: Ligue 1 84%, the Belgian Pro League 8%.
We project 54 points (45–62), against a division average of 47. Last season: 56 points in Ligue 1, finishing 6th. What pushes them up: attacking end (+2), the club’s own last season (+2), squad quality (+1) points. Of the 27 men who played for them last season, 19 are still on the list. 9 of the 33 registered players have no season in our data, so the projection is built on the other 24. Squad value on our player feed: €289.3m across 27 players — recorded here for context, it is not in the model.
| Where it comes from | Pts |
|---|---|
| attacking end | +2.4 |
| the club’s own last season | +2.2 |
| squad quality | +1.4 |
| minutes from the Championship or above | +0.7 |
| ball-winning | +0.1 |
| Player | Pos | Where in 2025/26 | Division | Mins | Apps | G | A | Rating pct |
|---|---|---|---|---|---|---|---|---|
| Valentin Rongier | M | Rennes | Ligue 1 | 2655 | 31 | 2 | 5 | 98 |
| Issa Soumare | F | Le Havre | Ligue 1 | 2949 | 34 | 8 | 5 | 94 |
| Esteban Lepaul | F | Rennes | Ligue 1 | 2437 | 31 | 18 | 5 | 91 |
| Adrien Thomasson | F | Lens | Ligue 1 | 2690 | 32 | 3 | 9 | 79 |
| Quentin Merlin | D | Rennes | Ligue 1 | 2442 | 33 | 1 | 4 | 77 |
| Anthony Rouault | D | Rennes | Ligue 1 | 1724 | 32 | 1 | 0 | 91 |
Last season those minutes were played in: Ligue 1 86%, the Belgian Pro League 8%, Ligue 2 6%.
We project 52 points (43–60), against a division average of 47. Last season: 54 points in Ligue 1, finishing 7th. What pushes them up: attacking end (+2), squad quality (+1), the club’s own last season (+1) points. Of the 27 men who played for them last season, 18 are still on the list. 8 of the 27 registered players have no season in our data, so the projection is built on the other 19. Squad value on our player feed: €342.3m across 23 players — recorded here for context, it is not in the model.
| Where it comes from | Pts |
|---|---|
| attacking end | +1.7 |
| squad quality | +1.4 |
| the club’s own last season | +1.1 |
| minutes from the Championship or above | +0.5 |
| ball-winning | +0.2 |
| Player | Pos | Where in 2025/26 | Division | Mins | Apps | G | A | Rating pct |
|---|---|---|---|---|---|---|---|---|
| Lamine Camara | M | Monaco | Ligue 1 | 1851 | 24 | 3 | 4 | 97 |
| Maghnes Akliouche | M | Monaco | Ligue 1 | 2410 | 32 | 6 | 6 | 88 |
| Jordan Teze | D | Monaco | Ligue 1 | 2494 | 34 | 1 | 2 | 81 |
| Thilo Kehrer | D | Monaco | Ligue 1 | 2358 | 31 | 0 | 0 | 77 |
| Nazinho | D | Cercle Brugge KSV | the Belgian Pro League | 2554 | 30 | 3 | 7 | 83 |
| Sadibou Sane | D | Metz | Ligue 1 | 1943 | 26 | 2 | 1 | 83 |
Last season those minutes were played in: Ligue 1 93%, the Primeira Liga 4%.
We project 51 points (42–59), against a division average of 47. Last season: 53 points in Ligue 1, finishing 8th. What pushes them up: attacking end (+1), squad quality (+1), the club’s own last season (+1) points. Of the 26 men who played for them last season, 18 are still on the list. 12 of the 31 registered players have no season in our data, so the projection is built on the other 19. Squad value on our player feed: €386.2m across 26 players — recorded here for context, it is not in the model.
| Where it comes from | Pts |
|---|---|
| attacking end | +1.1 |
| squad quality | +0.9 |
| the club’s own last season | +0.8 |
| minutes from the Championship or above | +0.7 |
| ball-winning | +0.1 |
| Player | Pos | Where in 2025/26 | Division | Mins | Apps | G | A | Rating pct |
|---|---|---|---|---|---|---|---|---|
| Valentin Barco | M | Strasbourg | Ligue 1 | 2170 | 27 | 2 | 4 | 94 |
| Diego Moreira | F | Strasbourg | Ligue 1 | 2041 | 27 | 4 | 6 | 91 |
| Julio Enciso | M | Strasbourg | Ligue 1 | 1892 | 28 | 3 | 6 | 89 |
| Samir El Mourabet | M | Strasbourg | Ligue 1 | 2141 | 33 | 1 | 2 | 82 |
| Joaquin Panichelli | F | Strasbourg | Ligue 1 | 2195 | 27 | 16 | 1 | 77 |
| Guela Doue | D | Strasbourg | Ligue 1 | 2063 | 24 | 2 | 6 | 75 |
Last season those minutes were played in: Ligue 1 100%.
We project 48 points (39–56), against a division average of 47. Last season: 45 points in Ligue 1, finishing 9th. What pushes them up: attacking end (+3), minutes from the Championship or above (+1) points. What pulls them down: squad quality (-2), the club’s own last season (-2) points. Of the 22 men who played for them last season, 20 are still on the list. 11 of the 31 registered players have no season in our data, so the projection is built on the other 20. Squad value on our player feed: €133.5m across 19 players — recorded here for context, it is not in the model.
| Where it comes from | Pts |
|---|---|
| attacking end | +3.1 |
| squad quality | -1.8 |
| the club’s own last season | -1.5 |
| minutes from the Championship or above | +0.9 |
| ball-winning | +0.1 |
| Player | Pos | Where in 2025/26 | Division | Mins | Apps | G | A | Rating pct |
|---|---|---|---|---|---|---|---|---|
| Aron Donnum | M | Toulouse | Ligue 1 | 2424 | 28 | 4 | 4 | 98 |
| Cristian Casseres | M | Toulouse | Ligue 1 | 2499 | 30 | 2 | 3 | 96 |
| Yann Gboho | M | Toulouse | Ligue 1 | 2608 | 31 | 8 | 3 | 93 |
| Charlie Cresswell | D | Toulouse | Ligue 1 | 2533 | 29 | 3 | 2 | 82 |
| Mark McKenzie | D | Toulouse | Ligue 1 | 2405 | 29 | 0 | 2 | 55 |
| Pape Demba | M | Toulouse | Ligue 1 | 1185 | 15 | 1 | 2 | 80 |
Last season those minutes were played in: Ligue 1 89%, Ligue 2 11%.
We project 46 points (38–54), against a division average of 47. Last season: 45 points in Ligue 1, finishing 10th. What pushes them up: attacking end (+1) points. What pulls them down: the club’s own last season (-2) points. Of the 24 men who played for them last season, 15 are still on the list. 11 of the 26 registered players have no season in our data, so the projection is built on the other 15. Squad value on our player feed: €108.7m across 23 players — recorded here for context, it is not in the model.
| Where it comes from | Pts |
|---|---|
| the club’s own last season | -1.5 |
| attacking end | +0.7 |
| minutes from the Championship or above | +0.3 |
| squad quality | -0.2 |
| ball-winning | -0.2 |
| Player | Pos | Where in 2025/26 | Division | Mins | Apps | G | A | Rating pct |
|---|---|---|---|---|---|---|---|---|
| Arthur Avom | M | Lorient | Ligue 1 | 2115 | 32 | 2 | 1 | 86 |
| Arsene Kouassi | D | Lorient | Ligue 1 | 2612 | 31 | 2 | 6 | 74 |
| Pablo Pagis | M | Lorient | Ligue 1 | 1770 | 29 | 10 | 5 | 90 |
| Montassar Talbi | D | Lorient | Ligue 1 | 2610 | 29 | 0 | 1 | 73 |
| Noah Cadiou | M | Lorient | Ligue 1 | 1881 | 32 | 3 | 1 | 78 |
| Alec Georgen | D | Dunkerque | Ligue 2 | 2627 | 31 | 0 | 2 | 86 |
Last season those minutes were played in: Ligue 1 94%, Ligue 2 6%.
We project 44 points (36–52), against a division average of 47. Last season: 44 points in Ligue 1, finishing 11th. What pushes them up: attacking end (+2) points. What pulls them down: squad quality (-3), the club’s own last season (-2) points. Of the 30 men who played for them last season, 22 are still on the list. 3 of the 29 registered players have no season in our data, so the projection is built on the other 26. Squad value on our player feed: €170.7m across 32 players — recorded here for context, it is not in the model.
| Where it comes from | Pts |
|---|---|
| squad quality | -3.0 |
| the club’s own last season | -1.8 |
| attacking end | +1.5 |
| minutes from the Championship or above | +0.5 |
| ball-winning | -0.2 |
| Player | Pos | Where in 2025/26 | Division | Mins | Apps | G | A | Rating pct |
|---|---|---|---|---|---|---|---|---|
| Ilan Kebbal | M | Paris FC | Ligue 1 | 2229 | 30 | 9 | 4 | 100 |
| Lassine Sinayoko | F | Auxerre | Ligue 1 | 2780 | 32 | 12 | 4 | 90 |
| Pablo Pagis | M | Lorient | Ligue 1 | 1770 | 29 | 10 | 5 | 90 |
| Mamadou Mbow | D | Paris FC | Ligue 1 | 2716 | 33 | 0 | 1 | 66 |
| Pierre Lees-Melou | M | Paris FC | Ligue 1 | 1786 | 22 | 1 | 3 | 80 |
| Maxime Lopez | M | Paris FC | Ligue 1 | 1960 | 28 | 0 | 3 | 71 |
Last season those minutes were played in: Ligue 1 96%, Ligue 2 4%.
We project 43 points (35–52), against a division average of 47. Last season: 39 points in Ligue 1, finishing 12th. What pushes them up: minutes from the Championship or above (+1) points. What pulls them down: the club’s own last season (-3), attacking end (-1) points. Of the 23 men who played for them last season, 14 are still on the list. 4 of the 20 registered players have no season in our data, so the projection is built on the other 16. Squad value on our player feed: €81.8m across 20 players — recorded here for context, it is not in the model.
| Where it comes from | Pts |
|---|---|
| the club’s own last season | -3.0 |
| attacking end | -1.3 |
| minutes from the Championship or above | +0.7 |
| ball-winning | +0.2 |
| squad quality | -0.0 |
| Player | Pos | Where in 2025/26 | Division | Mins | Apps | G | A | Rating pct |
|---|---|---|---|---|---|---|---|---|
| Ludovic Ajorque | F | Brest | Ligue 1 | 2733 | 31 | 8 | 8 | 86 |
| Joris Chotard | M | Brest | Ligue 1 | 2687 | 32 | 2 | 1 | 82 |
| Brendan Chardonnet | D | Brest | Ligue 1 | 2457 | 30 | 1 | 3 | 83 |
| Gregoire Coudert | G | Brest | Ligue 1 | 2101 | 33 | 0 | 0 | 84 |
| Romain Del Castillo | F | Brest | Ligue 1 | 2553 | 31 | 9 | 3 | 74 |
| Hugo Magnetti | M | Brest | Ligue 1 | 2607 | 32 | 1 | 1 | 64 |
Last season those minutes were played in: Ligue 1 83%, Ligue 2 9%, the 3. Liga 8%.
We project 38 points (30–46), against a division average of 47. Last season: 35 points in Ligue 1, finishing 14th. What pulls them down: the club’s own last season (-4), attacking end (-3), squad quality (-1) points. Of the 21 men who played for them last season, 10 are still on the list. 5 of the 20 registered players have no season in our data, so the projection is built on the other 15. Squad value on our player feed: €42.1m across 18 players — recorded here for context, it is not in the model.
| Where it comes from | Pts |
|---|---|
| the club’s own last season | -4.5 |
| attacking end | -3.2 |
| squad quality | -1.2 |
| minutes from the Championship or above | -0.1 |
| ball-winning | +0.1 |
| Player | Pos | Where in 2025/26 | Division | Mins | Apps | G | A | Rating pct |
|---|---|---|---|---|---|---|---|---|
| Rassoul Ndiaye | F | Le Havre | Ligue 1 | 2573 | 33 | 4 | 4 | 92 |
| Gautier Lloris | D | Le Havre | Ligue 1 | 2400 | 29 | 1 | 1 | 89 |
| Vincent Sasso | D | Dunkerque | Ligue 2 | 2204 | 25 | 4 | 1 | 93 |
| Mory Diaw | G | Le Havre | Ligue 1 | 2655 | 31 | 0 | 1 | 60 |
| Kaito Mizuta | M | RW Essen | the 3. Liga | 1755 | 22 | 6 | 7 | 95 |
| Ayumu Seko | D | Le Havre | Ligue 1 | 2625 | 30 | 0 | 0 | 53 |
Last season those minutes were played in: Ligue 1 76%, Ligue 2 13%, the Belgian Pro League 8%.
We project 37 points (29–45), against a division average of 47. Last season: 34 points in Ligue 1, finishing 15th. What pulls them down: the club’s own last season (-5), attacking end (-4), squad quality (-2) points. Of the 24 men who played for them last season, 17 are still on the list. 8 of the 29 registered players have no season in our data, so the projection is built on the other 21. Squad value on our player feed: €85.6m across 22 players — recorded here for context, it is not in the model.
| Where it comes from | Pts |
|---|---|
| the club’s own last season | -4.8 |
| attacking end | -3.7 |
| squad quality | -1.5 |
| minutes from the Championship or above | -0.0 |
| ball-winning | +0.0 |
| Player | Pos | Where in 2025/26 | Division | Mins | Apps | G | A | Rating pct |
|---|---|---|---|---|---|---|---|---|
| Lassine Sinayoko | F | Auxerre | Ligue 1 | 2780 | 32 | 12 | 4 | 90 |
| Kevin Danois | M | Auxerre | Ligue 1 | 2835 | 34 | 3 | 1 | 85 |
| Arthur Piedfort | M | Westerlo | the Belgian Pro League | 2900 | 38 | 3 | 1 | 90 |
| Mamadou Diop | G | Grenoble | Ligue 2 | 2684 | 31 | 0 | 0 | 92 |
| Donovan Leon | G | Auxerre | Ligue 1 | 2464 | 29 | 0 | 0 | 73 |
| Sinaly Diomande | D | Auxerre | Ligue 1 | 2134 | 25 | 2 | 2 | 78 |
Last season those minutes were played in: Ligue 1 100%.
We project 36 points (28–45), against a division average of 47. Last season: 32 points in Ligue 1, finishing 16th. What pushes them up: minutes from the Championship or above (+1) points. What pulls them down: the club’s own last season (-5), attacking end (-3), squad quality (-3) points. Of the 30 men who played for them last season, 15 are still on the list. 13 of the 28 registered players have no season in our data, so the projection is built on the other 15. Squad value on our player feed: €154.2m across 22 players — recorded here for context, it is not in the model.
| Where it comes from | Pts |
|---|---|
| the club’s own last season | -5.3 |
| attacking end | -3.2 |
| squad quality | -3.0 |
| minutes from the Championship or above | +0.9 |
| ball-winning | +0.0 |
| Player | Pos | Where in 2025/26 | Division | Mins | Apps | G | A | Rating pct |
|---|---|---|---|---|---|---|---|---|
| Jonathan Clauss | M | Nice | Ligue 1 | 2531 | 30 | 1 | 6 | 84 |
| Sofiane Diop | F | Nice | Ligue 1 | 2144 | 33 | 8 | 2 | 83 |
| Laurent Abergel | M | Lorient | Ligue 1 | 2324 | 28 | 1 | 0 | 78 |
| Mohamed-Ali Cho | F | Nice | Ligue 1 | 1681 | 24 | 4 | 3 | 72 |
| Kojo Peprah | D | Nice | Ligue 1 | 2428 | 32 | 1 | 0 | 55 |
| Yehvann Diouf | G | Nice | Ligue 1 | 2340 | 32 | 0 | 0 | 54 |
Last season those minutes were played in: Ligue 1 97%.
We project 35 points (27–44), against a division average of 47. Last season: 36 points in Ligue 1, finishing 13th. What pushes them up: minutes from the Championship or above (+1) points. What pulls them down: squad quality (-6), the club’s own last season (-4), attacking end (-3) points. Of the 22 men who played for them last season, 13 are still on the list. 10 of the 27 registered players have no season in our data, so the projection is built on the other 17. Squad value on our player feed: €59.2m across 19 players — recorded here for context, it is not in the model.
| Where it comes from | Pts |
|---|---|
| squad quality | -5.9 |
| the club’s own last season | -4.2 |
| attacking end | -2.5 |
| minutes from the Championship or above | +0.9 |
| ball-winning | +0.3 |
| Player | Pos | Where in 2025/26 | Division | Mins | Apps | G | A | Rating pct |
|---|---|---|---|---|---|---|---|---|
| Anthony Lopes | G | Nantes | Ligue 1 | 2789 | 31 | 0 | 0 | 68 |
| Ousmane Camara | D | Angers | Ligue 1 | 2719 | 33 | 1 | 0 | 61 |
| Jordan Lefort | D | Angers | Ligue 1 | 3060 | 34 | 0 | 2 | 55 |
| Branco van den Boomen | M | Angers | Ligue 1 | 1242 | 15 | 0 | 1 | 88 |
| Lilian Raolisoa | D | Angers | Ligue 1 | 1976 | 32 | 2 | 4 | 60 |
| Yassine Belkhdim | M | Angers | Ligue 1 | 2149 | 27 | 2 | 2 | 55 |
Last season those minutes were played in: Ligue 2 100%.
We project 33 points (25–42), against a division average of 47. Last season: 67 points in Ligue 2, finishing 1st. What pushes them up: the club’s own last season (+1) points. What pulls them down: attacking end (-8), minutes from the Championship or above (-5), squad quality (-1) points. Of the 24 men who played for them last season, 14 are still on the list. 7 of the 20 registered players have no season in our data, so the projection is built on the other 13. Squad value on our player feed: €24.5m across 19 players — recorded here for context, it is not in the model.
| Where it comes from | Pts |
|---|---|
| attacking end | -8.4 |
| minutes from the Championship or above | -5.1 |
| the club’s own last season | +1.2 |
| squad quality | -0.9 |
| ball-winning | -0.4 |
| Player | Pos | Where in 2025/26 | Division | Mins | Apps | G | A | Rating pct |
|---|---|---|---|---|---|---|---|---|
| Antoine Mille | M | Troyes | Ligue 2 | 2917 | 33 | 3 | 5 | 98 |
| Adrien Monfray | D | Troyes | Ligue 2 | 2880 | 32 | 0 | 0 | 98 |
| Mouhamed Diop | M | Troyes | Ligue 2 | 2714 | 31 | 3 | 2 | 94 |
| Merwan Ifnaoui | F | Troyes | Ligue 2 | 2001 | 26 | 4 | 3 | 96 |
| Ismael Boura | D | Troyes | Ligue 2 | 2228 | 28 | 1 | 2 | 92 |
| Yvann Titi | D | Troyes | Ligue 2 | 1386 | 24 | 0 | 4 | 87 |
Last season those minutes were played in: Ligue 2 100%.
We project 27 points (19–35), against a division average of 47. Last season: 62 points in Ligue 2, finishing 2nd. What pulls them down: squad quality (-8), attacking end (-6), minutes from the Championship or above (-5) points. Of the 21 men who played for them last season, 15 are still on the list. 6 of the 23 registered players have no season in our data, so the projection is built on the other 17. Squad value on our player feed: €20.1m across 24 players — recorded here for context, it is not in the model.
| Where it comes from | Pts |
|---|---|
| squad quality | -7.7 |
| attacking end | -6.4 |
| minutes from the Championship or above | -5.1 |
| the club’s own last season | -0.3 |
| ball-winning | -0.3 |
| Player | Pos | Where in 2025/26 | Division | Mins | Apps | G | A | Rating pct |
|---|---|---|---|---|---|---|---|---|
| Lucas Buades | M | Le Mans | Ligue 2 | 2136 | 27 | 3 | 2 | 99 |
| Lucas Calodat | M | Le Mans | Ligue 2 | 2319 | 31 | 2 | 4 | 83 |
| Samuel Yohou | D | Le Mans | Ligue 2 | 2783 | 31 | 4 | 0 | 77 |
| Theo Eyoum | D | Le Mans | Ligue 2 | 1092 | 13 | 1 | 0 | 94 |
| Louis Mafouta | F | Guingamp | Ligue 2 | 2897 | 34 | 15 | 3 | 70 |
| Alexandre Lauray | D | Le Mans | Ligue 2 | 1878 | 31 | 0 | 2 | 76 |
No account, no email. Links are not allowed — say it in words.
Loading…