The complete 2024/25 Ligue 1 final table
Paris Saint-Germain won the 2024/25 Ligue 1 championship with 84 points, finishing 19 ahead of Marseille. Monaco completed the top three. At the other end, Saint-Étienne and Montpellier occupied the automatic relegation positions, while Reims finished in the play-off place. These are the standings after the 34-match league programme; the subsequent play-off is explained separately below.
| Pos | Club | P | W | D | L | GF | GA | GD | Pts |
|---|---|---|---|---|---|---|---|---|---|
| 1 | PSG | 34 | 26 | 6 | 2 | 92 | 35 | 57 | 84 |
| 2 | Marseille | 34 | 20 | 5 | 9 | 74 | 47 | 27 | 65 |
| 3 | Monaco | 34 | 18 | 7 | 9 | 63 | 41 | 22 | 61 |
| 4 | Nice | 34 | 17 | 9 | 8 | 66 | 41 | 25 | 60 |
| 5 | Lille | 34 | 17 | 9 | 8 | 52 | 36 | 16 | 60 |
| 6 | Lyon | 34 | 17 | 6 | 11 | 65 | 46 | 19 | 57 |
| 7 | Strasbourg | 34 | 16 | 9 | 9 | 56 | 44 | 12 | 57 |
| 8 | Lens | 34 | 15 | 7 | 12 | 42 | 39 | 3 | 52 |
| 9 | Brest | 34 | 15 | 5 | 14 | 52 | 59 | -7 | 50 |
| 10 | Toulouse | 34 | 11 | 9 | 14 | 44 | 43 | 1 | 42 |
| 11 | Auxerre | 34 | 11 | 9 | 14 | 48 | 51 | -3 | 42 |
| 12 | Rennes | 34 | 13 | 2 | 19 | 51 | 50 | 1 | 41 |
| 13 | Nantes | 34 | 8 | 12 | 14 | 39 | 52 | -13 | 36 |
| 14 | Angers | 34 | 10 | 6 | 18 | 32 | 53 | -21 | 36 |
| 15 | Le Havre | 34 | 10 | 4 | 20 | 40 | 71 | -31 | 34 |
| 16 | Reims | 34 | 8 | 9 | 17 | 33 | 47 | -14 | 33 |
| 17 | Saint-Étienne | 34 | 8 | 6 | 20 | 39 | 77 | -38 | 30 |
| 18 | Montpellier | 34 | 4 | 4 | 26 | 23 | 79 | -56 | 16 |
The figures can be checked against PSG's archived standings and the complete season record at RSSSF. The latter also retains the awarded Montpellier–Saint-Étienne result, which matters when checking the bottom two clubs' totals. All clubs have 34 matches here, including that adjudicated fixture. A table showing either of those clubs with 33 is incomplete for this purpose.
Read the points column first, then the goal difference and the qualification boundaries. The distance between first and second was substantial, but a much smaller change could alter a club's European route: Monaco finished only one point above Nice and Lille. Equal points also explain why merely grouping teams by total is insufficient. Nice and Lille each collected 60, while Lyon and Strasbourg each collected 57; their final positions still differed.
Wins, draws and losses add useful texture to those rankings. Reims lost fewer games than Le Havre but finished below them, because Le Havre converted more matches into victories. Rennes won more games than Toulouse and Auxerre but collected fewer points, with only two draws. Those are different ways of reaching a total, and a final position conceals the week-to-week experiences behind them.
This is a fixed historical table for the campaign that ended in May 2025. “Last season” now points to a different competition and will change again as time passes. Anyone looking for a match happening now should use the today's matches page; the numbers above should remain attached to 2024/25. The original league calendar confirms the 34-round structure and the final weekend, keeping the historical comparison on the correct footing.
How PSG turned the title race into a procession
The championship was secured with six matches remaining
The decisive title match came on 5 April, when PSG beat Angers 1–0 at the Parc des Princes. Désiré Doué scored the winner, and matchday 28 left six league matches still to play. The club's season retrospective identifies that afternoon as the moment the championship became official.
That timing changes how the last weeks should be understood. Paris did not need to win a final-day showdown with a direct challenger. Its accumulated advantage had already removed the possibility of being caught. Supporters could celebrate the league while other clubs were still treating every match as decisive for their next season. A final table flattens those different pressures into one list, even though the competitive questions had stopped being the same.
Securing a title early also separates two measures of achievement. The first is doing enough to finish above every rival; the second is sustaining an exceptional record after that job is done. Points earned later still belong to the season, but a late defeat cannot retrospectively reopen a championship that has been settled mathematically. That distinction helps explain why an unbeaten run could dominate discussion without making the trophy uncertain.
What the final record tells us about Paris
PSG's league record ended at 26 wins, six draws and two defeats, with 92 goals scored and 35 conceded. It was an emphatic combination of scoring power and limited damage at the other end. The gap to Marseille came from a season-long accumulation of results, not a single dramatic afternoon. A team that scores freely but regularly drops points would produce a different table; Paris paired its attack with enough consistency to stay clear.
The 1–3 home loss to Nice on 25 April is a useful counterweight to any claim of perfection. Nice's official match record lists two Morgan Sanson goals and another from Youssouf Ndayishimiye. Paris could dominate the season and still be beaten on a particular night. The result was especially valuable to the visitor, whose European position remained open, while the champion's league status was already fixed.
For a neutral viewer, the productive question is therefore how the winning side creates repeatable advantages, rather than whether every individual scoreline matches the final ranking. A strong season should survive occasional bad results. Equally, a large points total does not prove a particular pressing scheme worked in every match, and goals alone cannot identify the quality of every chance. The table establishes the achievement; close match study supplies the football mechanism.
The early clinch and the eventual two defeats can both be true without diminishing each other. One describes how quickly PSG outpaced the field; the other puts a boundary around the season's consistency. Together they give a fairer account than treating the championship either as a flawless march or as a story determined by its few setbacks.
Why one point and goal difference reshaped Europe
Marseille and Monaco took the direct Champions League places
Marseille and Monaco secured places in the following Champions League's league phase on 10 May, one round before the league ended. Marseille won 3–1 away at Le Havre, with Amine Gouiri scoring twice and Mason Greenwood once, as the league's match report records. Monaco's 2–0 win over Lyon delivered the same guarantee.
The final standings placed Marseille second and Monaco third. The important shared benefit was direct entry: neither needed to turn a summer qualifying tie into a league-phase place. For supporters, that distinction affects the certainty of European fixtures and the rhythm of the next campaign. Third was not merely the last step on the podium; it sat above a meaningful access boundary.
Monaco's 4–0 final-day defeat at Lens illustrates how qualification and the final score of the season can tell different stories. The loss belongs in a review of performance, but the club had already secured the place it needed. Looking only at that last result would miss the greater consequence of beating Lyon a week earlier. Conversely, an impressive final win cannot rescue a target that accumulated results have already put beyond reach.
Nice, Lille, Lyon and Strasbourg faced different routes
Nice beat Brest 6–0 on the final evening and finished fourth. The club's official report is precise about the reward: entry to the third qualifying round of the Champions League. Fourth therefore kept that competition within reach, but it did not provide the same league-phase certainty as the top three.
Lille also won, beating Reims 2–1, but ended fifth. Nice and Lille finished level on points and had identical totals of wins, draws and defeats. The difference was in the goals columns: Nice's goal difference was +25, Lille's +16. A late score elsewhere could change a points race, yet here the season-long separation in goal difference remained decisive between two clubs with the same total.
The league's Lille–Reims report confirms Europa League qualification for Lille. That game also mattered to survival, an example of how separate table boundaries can meet in the same fixture. A European contender's winning goal can be a relegation-threatened opponent's disastrous concession. The league's closing night makes more sense when both teams' incentives are considered.
Lyon finished sixth ahead of Strasbourg in seventh, again on goal difference after equal points. Their European destinations required one more event beyond the league schedule. PSG's 3–0 Coupe de France final win over Reims on 24 May meant Lyon entered the Europa League and Strasbourg the Conference League play-off round, as the post-final report explains.
That sequence is worth preserving in any retrospective. The league positions were fixed on 17 May; the cup result settled the remaining allocation a week later. Calling every club “qualified for Europe” hides both the competition and the stage at which it entered. A useful table review names those routes separately, while recognising how small margins in domestic results created substantially different summer prospects.
The middle of the table contained very different seasons
A club's position needs a starting point before it can be called success or disappointment. Brest finished ninth, outside the European places, but its campaign also contained a Champions League programme. UEFA's record of the league phase includes Brest's victories over Sturm Graz and Salzburg and its draw with Bayer Leverkusen. That second competition formed part of the season supporters actually experienced.
It would be too simple to turn that context into a proven explanation for every domestic setback. The final Ligue 1 table does not measure fatigue, squad rotation or the quality of chances conceded. What it does show is a side still capable of collecting many wins, while losses and a negative goal difference prevented those results from becoming another finish near the top. European memories and domestic ranking are both necessary parts of an honest assessment.
Auxerre's eleventh place carried a different meaning. A promoted club had established a comfortable final separation from the relegation play-off position, rather than spending the final evening dependent on survival permutations. Remaining in the division gives a returning side a chance to build continuity; it also means supporters can approach the next campaign with evidence that the club can compete at this level.

The club's account of its stadium places that continuity in a longer history of developing its ground beside the Yonne. A league position belongs to one season, whereas the attachment to a home and a club extends beyond it. For an Auxerre fan, staying up is consequently more than moving a name a few rows away from the bottom.
Toulouse and Auxerre finished on equal points with identical win, draw and loss totals. Their ordering came from goal difference. Rennes, immediately below them, demonstrates another pattern: more victories, but far fewer draws and more defeats. A side can offer frequent winning afternoons and still finish behind teams that take something from a greater number of games. Avoiding defeat is not an end in itself, but drawn matches still count when the points are added.
Lens occupied eighth, close enough to the European group for the boundary to be visible but below it once the season was complete. That position is best read as a gap to the required qualification threshold, rather than merged with every other midtable finish. The useful comparison asks which target each team missed or reached, then examines the results behind it. Equal labels such as “midtable” should never erase those different competitive circumstances.
How the survival race continued after matchday 34
Le Havre escaped while Saint-Étienne and Montpellier went down
Le Havre's 3–2 victory at Strasbourg was the closing night's great escape. Abdoulaye Touré converted a penalty deep into stoppage time to deliver the win that put the club fifteenth, just above Reims. The final-day report captures that last reversal.
The points difference was only one, but its consequence was substantial. Le Havre avoided another tie for its place in the division. Reims had to keep playing. It is a reminder that “safe” does not mean one universal number of points: safety is a position relative to the rest of that season's field. The same total in a different year might create a different outcome.
Goal difference also needs to be read in the right order. Le Havre conceded heavily across the campaign and ended with a worse goal difference than Reims. That did not undo its higher points total. Goal difference decides relevant ties; it does not replace points as the basic ranking measure. For a side fighting to survive, turning a draw into a victory can therefore matter far more than reducing the margin of an earlier defeat.
Saint-Étienne's final-day loss to Toulouse left the club seventeenth, while Montpellier finished bottom. Those two positions meant automatic relegation. The contrast with Auxerre and Angers, the other promoted sides in this campaign, shows why a promoted-club label is not enough to predict a season. The task is shared, but the results and the capacity to collect points against the field are not.
Reims still had a play-off to lose
Sixteenth was a warning rather than a completed relegation verdict. Reims met Metz over two legs to decide which club would play in the following Ligue 1 season. The first leg on 21 May ended 1–1. Reims then lost the home return 1–3 after extra time on 29 May, making the aggregate score 2–4.
The league's return-leg report records Reims taking the lead before Matthieu Udol equalised. Extra time then produced two more Metz goals. The lower-division club won the opportunity, and Reims joined Saint-Étienne and Montpellier among the relegated clubs. The final league table alone cannot show that additional contest.
Those goals do not belong in Reims' regular-season goals-against total, and the two play-off matches do not turn its league record into 36 games. They are a separate sporting mechanism attached to the finishing position. Keeping the records separate makes historical comparisons clearer and explains why a club can be listed sixteenth in the final table while also being described correctly as relegated.
For the wider structure, the promotion and play-off guide sets out the route. In this season, the practical lesson was stark: securing fifteenth removed a major uncertainty, while sixteenth offered a second chance with a very real cost if it was lost.
How to use this season when comparing Ligue 1 campaigns
The most useful first comparison is with another 18-club, 34-match campaign. A season with 20 clubs and 38 fixtures gives each team more opportunities to collect points and score goals. Raw totals can therefore reward the longer schedule even when the shorter-season team performed more consistently. Record the number of games beside the points before using either as a measure of strength.
The site's historical tables comparison shows the format change across earlier campaigns. It is a useful next stop for placing this season in context. Start with the same denominator, then examine the distance to the closest challenger and the rules attached to the other places. A large title margin and a high points total describe related but different achievements.
Within a single season, use the table to ask a specific question. Did a club reach the qualification route it needed? How far was it from the next meaningful boundary? Was the separation measured in points or decided after a tie? Those questions explain a finishing position better than a broad claim that the league was competitive or uncompetitive. The championship, Europe and survival could have very different levels of uncertainty at the same time.
Match results then supply the detail the ranking cannot preserve. Monaco's penultimate-round win settled one target; Le Havre's stoppage-time penalty changed another at the last possible moment. An archive should help a fan locate those turning points, not treat every result as interchangeable merely because all wins award the same points. Timing and the opponent's own incentives are part of the football story.
Finally, keep the historical season separate from present-day squads and fixtures. These standings establish what the clubs achieved in 2024/25; they do not guarantee later form or identify who now plays for each team. Use the current schedule for the next match, and return to this table when discussing the campaign ending in May 2025. That separation makes both the live information and the historical record more useful.

Loading comments…