France

Ligue 2 2023/24 final table, results and top scorers

The 2023/24 season as it ended: the final table, every result by month and the player boards. History only, never a prediction.

Final table

Final table
#TeamPWDLGoalsGDPts
1Auxerre382111672:36+3674
2Angers382081056:42+1468
3Saint-Étienne381981148:31+1765
4Rodez3816121062:51+1160
5Paris FC3816111149:42+759
6Caen381771451:45+658
7Laval3815101340:45−555
8Amiens381217936:36053
9Guingamp3813121344:40+451
10Pau FC3813121360:57+351
11Grenoble3813121343:44−151
12Bordeaux381491550:52−251
13Bastia381491544:48−451
14Annecy3812101649:50−146
15Ajaccio3812101635:46−1146
16Dunkerque3812101636:52−1646
17Troyes389151443:50−742
18Quevilly Rouen387171451:55−438
19Concarneau381082039:57−1838
20Valenciennes385122126:55−2927

League rounds only, 90 minutes: 3 points a win, then goal difference and goals scored.

Player boards

Top scorers

Player boards · Top scorers
#PlayerGoals
1Alexandre Mendy
Caen
22
2Ado Onaiwu
Auxerre
15
3Louis Mafouta
Amiens
15
4Loïs Diony
Angers
15
5Moussa Sylla
Pau FC
15

Penalties scored

Player boards · Penalties scored
#PlayerGoals
1Himad Abdelli
Angers
6
2Alexandre Mendy
Caen
5
3Ibrahim Sissoko
Saint-Étienne
5
4Jessy Benet
Grenoble
5

Hat-tricks

Player boards · Hat-tricks
#PlayerHat-tricks
1Ado Onaiwu
Auxerre
2
2Louis Mafouta
Amiens
1
3Migouel Alfarela
Bastia
1
4Tairyk Arconte
Rodez
1

Yellow cards

Player boards · Yellow cards
#PlayerYellow
1Kylian Kaiboue
Amiens
12
2Kalidou Sidibé
Guingamp
11
3Danylo Ignatenko
Bordeaux
10
4Giovanni Haag
Rodez
10
5Jean Ruiz
Pau FC
10
6Maxime Sivis
Guingamp
10
7Xavier Chavalerin
Troyes
10

The season's records

Biggest win: Dunkerque 0–5 Bastia (5 Dec 2023)

Highest-scoring game: Rodez 5–3 Caen (7 Oct 2023)

All results

May 2024 · 30 matches
All results · May 2024
DateMatchScore
3 MayAngers – Pau FC2–1
3 MayBastia – Amiens1–2
3 MayBordeaux – Ajaccio4–0
3 MayCaen – Laval1–0
3 MayGrenoble – Concarneau2–1
3 MayQuevilly Rouen – Dunkerque1–2
3 MayRodez – Annecy1–3
3 MayTroyes – Valenciennes1–1
4 MayAuxerre – Paris FC2–0
4 MayGuingamp – Saint-Étienne2–2
10 MayAjaccio – Grenoble1–2
10 MayAmiens – Auxerre0–0
10 MayAnnecy – Angers1–2
10 MayConcarneau – Bordeaux4–2
10 MayDunkerque – Caen2–2
10 MayLaval – Troyes1–2
10 MayParis FC – Guingamp2–1
10 MayPau FC – Bastia1–2
10 MaySaint-Étienne – Rodez1–1
10 MayValenciennes – Quevilly Rouen2–1
17 MayAngers – Dunkerque0–0
17 MayAuxerre – Concarneau4–1
17 MayBastia – Paris FC1–1
17 MayBordeaux – Pau FC3–2
17 MayCaen – Valenciennes3–0
17 MayGrenoble – Amiens1–3
17 MayGuingamp – Laval0–1
17 MayQuevilly Rouen – Saint-Étienne2–1
17 MayRodez – Ajaccio2–0
17 MayTroyes – Annecy1–1
April 2024 · 51 matches
All results · April 2024
DateMatchScore
1 AprAjaccio – Auxerre0–1
6 AprAngers – Laval1–1
6 AprAnnecy – Valenciennes2–1
6 AprBastia – Dunkerque1–1
6 AprCaen – Bordeaux0–1
6 AprGuingamp – Amiens0–0
6 AprParis FC – Grenoble2–1
6 AprPau FC – Ajaccio1–1
6 AprRodez – Quevilly Rouen3–3
6 AprSaint-Étienne – Concarneau1–0
8 AprAuxerre – Troyes2–0
13 AprAjaccio – Saint-Étienne2–0
13 AprBordeaux – Bastia2–3
13 AprCaen – Rodez1–0
13 AprConcarneau – Amiens0–0
13 AprDunkerque – Guingamp0–1
13 AprLaval – Annecy0–3
13 AprQuevilly Rouen – Auxerre4–3
13 AprTroyes – Paris FC1–2
13 AprValenciennes – Pau FC1–4
15 AprGrenoble – Angers0–0
20 AprAjaccio – Caen2–1
20 AprAmiens – Dunkerque0–1
20 AprAngers – Troyes2–1
20 AprAnnecy – Grenoble0–1
20 AprConcarneau – Quevilly Rouen0–0
20 AprGuingamp – Bastia0–1
20 AprParis FC – Valenciennes2–1
20 AprPau FC – Laval3–0
20 AprRodez – Auxerre2–0
20 AprSaint-Étienne – Bordeaux2–1
23 AprAuxerre – Laval4–0
23 AprBastia – Concarneau2–0
23 AprBordeaux – Dunkerque2–0
23 AprCaen – Annecy2–1
23 AprGrenoble – Saint-Étienne0–2
23 AprGuingamp – Angers1–2
23 AprQuevilly Rouen – Amiens3–3
23 AprRodez – Paris FC1–0
23 AprTroyes – Pau FC2–2
23 AprValenciennes – Ajaccio1–0
27 AprAjaccio – Quevilly Rouen1–1
27 AprAmiens – Troyes0–0
27 AprAnnecy – Bastia3–2
27 AprConcarneau – Rodez1–2
27 AprLaval – Bordeaux1–0
27 AprParis FC – Angers3–1
27 AprPau FC – Guingamp1–2
27 AprSaint-Étienne – Caen1–0
27 AprValenciennes – Grenoble2–0
29 AprDunkerque – Auxerre1–3
March 2024 · 39 matches
All results · March 2024
DateMatchScore
2 MarAnnecy – Quevilly Rouen0–0
2 MarAuxerre – Valenciennes0–0
2 MarBastia – Grenoble1–0
2 MarDunkerque – Concarneau2–2
2 MarGuingamp – Troyes0–0
2 MarLaval – Amiens1–1
2 MarParis FC – Saint-Étienne0–0
2 MarPau FC – Caen2–3
2 MarRodez – Bordeaux2–2
4 MarAngers – Ajaccio3–1
9 MarAjaccio – Annecy1–3
9 MarAmiens – Rodez1–1
9 MarBordeaux – Quevilly Rouen0–0
9 MarCaen – Paris FC0–1
9 MarConcarneau – Guingamp2–3
9 MarDunkerque – Pau FC1–0
9 MarSaint-Étienne – Auxerre1–0
9 MarTroyes – Bastia2–0
9 MarValenciennes – Angers0–0
11 MarGrenoble – Laval0–2
16 MarAngers – Amiens1–3
16 MarAnnecy – Bordeaux3–1
16 MarAuxerre – Caen2–1
16 MarBastia – Saint-Étienne0–4
16 MarGuingamp – Valenciennes3–0
16 MarLaval – Dunkerque1–2
16 MarParis FC – Ajaccio2–0
16 MarPau FC – Concarneau2–0
16 MarQuevilly Rouen – Troyes1–1
16 MarRodez – Grenoble3–1
30 MarAmiens – Pau FC2–3
30 MarBordeaux – Paris FC3–3
30 MarConcarneau – Angers2–4
30 MarDunkerque – Annecy0–2
30 MarGrenoble – Guingamp0–0
30 MarLaval – Bastia1–2
30 MarQuevilly Rouen – Caen1–2
30 MarTroyes – Rodez2–3
30 MarValenciennes – Saint-Étienne0–2
February 2024 · 40 matches
All results · February 2024
DateMatchScore
3 FebAmiens – Paris FC1–1
3 FebAngers – Rodez2–1
3 FebConcarneau – Valenciennes1–0
3 FebDunkerque – Saint-Étienne1–0
3 FebGrenoble – Caen5–1
3 FebGuingamp – Annecy1–4
3 FebLaval – Quevilly Rouen2–4
3 FebPau FC – Auxerre2–2
3 FebTroyes – Bordeaux2–1
5 FebBastia – Ajaccio1–0
10 FebAjaccio – Guingamp3–0
10 FebAnnecy – Concarneau0–3
10 FebAuxerre – Angers1–0
10 FebBordeaux – Grenoble1–0
10 FebCaen – Amiens2–0
10 FebParis FC – Pau FC1–1
10 FebQuevilly Rouen – Bastia0–1
10 FebRodez – Dunkerque0–0
10 FebValenciennes – Laval1–1
12 FebSaint-Étienne – Troyes5–0
17 FebAngers – Saint-Étienne0–3
17 FebAnnecy – Auxerre0–2
17 FebBastia – Rodez0–2
17 FebConcarneau – Paris FC2–2
17 FebDunkerque – Valenciennes2–1
17 FebGuingamp – Caen1–0
17 FebLaval – Ajaccio1–1
17 FebPau FC – Quevilly Rouen0–2
17 FebTroyes – Grenoble3–1
19 FebAmiens – Bordeaux1–1
24 FebAjaccio – Amiens0–0
24 FebAuxerre – Bastia1–1
24 FebBordeaux – Guingamp1–0
24 FebConcarneau – Laval1–3
24 FebGrenoble – Pau FC0–1
24 FebQuevilly Rouen – Paris FC0–0
24 FebSaint-Étienne – Annecy2–1
24 FebTroyes – Dunkerque1–2
24 FebValenciennes – Rodez0–2
26 FebCaen – Angers2–0
January 2024 · 30 matches
All results · January 2024
DateMatchScore
13 JanBastia – Angers2–0
13 JanCaen – Concarneau1–0
13 JanGrenoble – Dunkerque2–2
13 JanParis FC – Annecy2–1
13 JanQuevilly Rouen – Guingamp0–1
13 JanRodez – Pau FC2–1
13 JanSaint-Étienne – Laval0–0
13 JanTroyes – Ajaccio3–1
13 JanValenciennes – Amiens0–1
15 JanAuxerre – Bordeaux3–1
23 JanAmiens – Annecy1–0
23 JanAngers – Quevilly Rouen3–2
23 JanBastia – Caen1–2
23 JanBordeaux – Valenciennes3–1
23 JanConcarneau – Troyes1–0
23 JanDunkerque – Ajaccio2–0
23 JanGrenoble – Auxerre1–1
23 JanGuingamp – Rodez3–3
23 JanLaval – Paris FC1–1
23 JanPau FC – Saint-Étienne0–1
27 JanAjaccio – Concarneau1–0
27 JanAnnecy – Pau FC0–0
27 JanAuxerre – Guingamp1–1
27 JanCaen – Troyes0–0
27 JanParis FC – Dunkerque1–2
27 JanQuevilly Rouen – Grenoble1–1
27 JanRodez – Laval1–2
27 JanSaint-Étienne – Amiens0–1
27 JanValenciennes – Bastia3–1
29 JanBordeaux – Angers1–0
December 2023 · 40 matches
All results · December 2023
DateMatchScore
2 DecAjaccio – Angers1–1
2 DecAmiens – Saint-Étienne1–0
2 DecAuxerre – Quevilly Rouen3–2
2 DecBordeaux – Troyes0–1
2 DecCaen – Bastia1–0
2 DecGuingamp – Paris FC0–1
2 DecLaval – Grenoble1–1
2 DecPau FC – Dunkerque1–1
2 DecRodez – Concarneau2–0
2 DecValenciennes – Annecy0–0
5 DecAjaccio – Laval2–0
5 DecAngers – Grenoble1–0
5 DecConcarneau – Auxerre1–2
5 DecDunkerque – Bastia0–5
5 DecParis FC – Rodez2–0
5 DecPau FC – Valenciennes3–1
5 DecQuevilly Rouen – Bordeaux3–2
5 DecSaint-Étienne – Guingamp1–3
5 DecTroyes – Amiens2–0
6 DecAnnecy – Caen1–2
16 DecAuxerre – Ajaccio2–0
16 DecBastia – Quevilly Rouen0–0
16 DecBordeaux – Saint-Étienne0–0
16 DecCaen – Dunkerque1–0
16 DecGrenoble – Annecy1–0
16 DecGuingamp – Concarneau0–1
16 DecLaval – Pau FC1–1
16 DecRodez – Amiens2–2
16 DecTroyes – Angers1–4
16 DecValenciennes – Paris FC0–1
19 DecAjaccio – Valenciennes2–1
19 DecAmiens – Caen0–0
19 DecAngers – Guingamp1–0
19 DecAnnecy – Rodez1–2
19 DecConcarneau – Grenoble0–3
19 DecDunkerque – Bordeaux0–2
19 DecLaval – Auxerre1–3
19 DecParis FC – Quevilly Rouen2–2
19 DecPau FC – Troyes1–1
19 DecSaint-Étienne – Bastia3–2
November 2023 · 30 matches
All results · November 2023
DateMatchScore
4 NovAngers – Valenciennes2–0
4 NovAnnecy – Laval1–3
4 NovBastia – Bordeaux3–1
4 NovDunkerque – Amiens0–1
4 NovGrenoble – Ajaccio0–3
4 NovQuevilly Rouen – Rodez3–1
4 NovSaint-Étienne – Paris FC0–1
4 NovTroyes – Caen2–1
6 NovGuingamp – Auxerre2–1
11 NovAjaccio – Troyes1–0
11 NovAmiens – Grenoble1–2
11 NovAuxerre – Saint-Étienne5–2
11 NovBordeaux – Annecy3–1
11 NovCaen – Quevilly Rouen3–3
11 NovLaval – Concarneau0–3
11 NovParis FC – Bastia1–0
11 NovPau FC – Angers4–4
11 NovRodez – Guingamp0–0
11 NovValenciennes – Dunkerque0–1
25 NovAmiens – Concarneau1–1
25 NovAnnecy – Ajaccio2–0
25 NovBastia – Auxerre0–0
25 NovDunkerque – Laval0–2
25 NovGrenoble – Rodez2–1
25 NovParis FC – Bordeaux1–2
25 NovQuevilly Rouen – Valenciennes0–0
25 NovSaint-Étienne – Pau FC1–2
25 NovTroyes – Guingamp0–1
27 NovAngers – Caen3–0
28 NovConcarneau – Pau FC1–2
October 2023 · 33 matches
All results · October 2023
DateMatchScore
2 OctAjaccio – Bastia2–0
3 OctBordeaux – Caen1–1
4 OctSaint-Étienne – Dunkerque2–0
7 OctAmiens – Angers1–4
7 OctBastia – Annecy2–1
7 OctBordeaux – Laval0–1
7 OctConcarneau – Dunkerque4–3
7 OctGuingamp – Grenoble2–2
7 OctParis FC – Auxerre0–2
7 OctQuevilly Rouen – Pau FC2–2
7 OctRodez – Caen5–3
7 OctSaint-Étienne – Ajaccio0–0
7 OctValenciennes – Troyes1–1
21 OctAjaccio – Pau FC2–0
21 OctAngers – Bordeaux2–0
21 OctAnnecy – Amiens1–1
21 OctCaen – Auxerre1–1
21 OctDunkerque – Paris FC1–3
21 OctGrenoble – Valenciennes3–3
21 OctGuingamp – Quevilly Rouen2–2
21 OctRodez – Bastia1–1
21 OctTroyes – Concarneau0–0
23 OctLaval – Saint-Étienne0–1
28 OctAmiens – Laval0–0
28 OctAuxerre – Dunkerque0–1
28 OctBastia – Guingamp0–0
28 OctBordeaux – Rodez2–2
28 OctConcarneau – Ajaccio2–1
28 OctParis FC – Troyes2–2
28 OctPau FC – Grenoble3–2
28 OctQuevilly Rouen – Annecy1–2
28 OctValenciennes – Caen2–2
30 OctSaint-Étienne – Angers2–0
September 2023 · 47 matches
All results · September 2023
DateMatchScore
2 SepAjaccio – Dunkerque2–2
2 SepAmiens – Guingamp4–1
2 SepAngers – Paris FC2–0
2 SepBordeaux – Auxerre2–4
2 SepConcarneau – Annecy1–1
2 SepGrenoble – Bastia0–0
2 SepLaval – Caen2–1
2 SepPau FC – Rodez2–2
2 SepSaint-Étienne – Valenciennes0–0
2 SepTroyes – Quevilly Rouen2–2
16 SepAnnecy – Troyes0–0
16 SepAuxerre – Pau FC2–2
16 SepBastia – Laval0–3
16 SepCaen – Saint-Étienne1–2
16 SepDunkerque – Grenoble0–0
16 SepParis FC – Amiens3–0
16 SepQuevilly Rouen – Concarneau2–3
16 SepRodez – Angers4–1
16 SepValenciennes – Bordeaux1–2
18 SepGuingamp – Ajaccio3–0
23 SepAjaccio – Paris FC2–1
23 SepAmiens – Valenciennes0–0
23 SepAngers – Bastia2–0
23 SepConcarneau – Saint-Étienne0–1
23 SepDunkerque – Rodez1–2
23 SepGrenoble – Quevilly Rouen2–1
23 SepLaval – Guingamp2–1
23 SepPau FC – Annecy0–3
23 SepTroyes – Auxerre1–2
26 SepAmiens – Ajaccio0–0
26 SepAuxerre – Annecy4–0
26 SepBastia – Pau FC1–4
26 SepCaen – Grenoble1–2
26 SepGuingamp – Bordeaux0–0
26 SepParis FC – Laval0–1
26 SepQuevilly Rouen – Angers0–1
26 SepRodez – Troyes2–1
26 SepValenciennes – Concarneau0–1
30 SepAngers – Concarneau2–0
30 SepAnnecy – Paris FC2–2
30 SepAuxerre – Rodez3–1
30 SepCaen – Guingamp0–1
30 SepDunkerque – Quevilly Rouen0–1
30 SepGrenoble – Bordeaux2–0
30 SepLaval – Valenciennes1–0
30 SepPau FC – Amiens1–0
30 SepTroyes – Saint-Étienne0–1
August 2023 · 40 matches
All results · August 2023
DateMatchScore
5 AugAjaccio – Rodez1–1
5 AugAmiens – Quevilly Rouen1–0
5 AugAnnecy – Guingamp1–4
5 AugConcarneau – Bastia0–0
5 AugDunkerque – Troyes2–2
5 AugLaval – Angers1–0
5 AugParis FC – Caen0–2
5 AugSaint-Étienne – Grenoble0–1
5 AugValenciennes – Auxerre1–4
7 AugPau FC – Bordeaux3–0
12 AugAngers – Annecy0–0
12 AugAuxerre – Amiens0–1
12 AugBastia – Valenciennes3–0
12 AugCaen – Pau FC2–0
12 AugGrenoble – Paris FC2–0
12 AugGuingamp – Dunkerque0–1
12 AugQuevilly Rouen – Ajaccio0–1
12 AugRodez – Saint-Étienne2–1
12 AugTroyes – Laval3–1
14 AugBordeaux – Concarneau1–0
19 AugAmiens – Bastia2–1
19 AugAngers – Auxerre2–2
19 AugAnnecy – Dunkerque3–0
19 AugConcarneau – Caen0–2
19 AugGrenoble – Troyes0–0
19 AugLaval – Rodez1–0
19 AugPau FC – Paris FC2–0
19 AugSaint-Étienne – Quevilly Rouen2–1
19 AugValenciennes – Guingamp0–0
21 AugAjaccio – Bordeaux0–0
26 AugAuxerre – Grenoble0–0
26 AugBastia – Troyes3–2
26 AugBordeaux – Amiens2–0
26 AugCaen – Ajaccio3–0
26 AugDunkerque – Angers0–1
26 AugGuingamp – Pau FC4–0
26 AugParis FC – Concarneau3–0
26 AugQuevilly Rouen – Laval0–0
26 AugRodez – Valenciennes0–1
28 AugAnnecy – Saint-Étienne1–1

League rounds, 90 minutes, by month.

Referees

Referees
RefereeMatches
Abdelatif Kherradji22
Aurelien Petit22
Guillaume Paradis22
Mikael Lesage22
Faouzi Benchabane21
Olivier Thual21
Ahmed Taleb20
Azzedine Souifi20
Nicolas Rainville20
Remi Landry20
Antoine Valnet19
Mickael Leleu19
Benjamin Lepaysant18
Karim Abed18
Thierry Bouille18
P. Legat16
Romain Delpech8
Florent Batta5
B. Dechepy4
Mathieu Vernice4
Romain Lissorgue4
Ruddy Buquet4
Eric Wattellier3
Gael Angoula3
Jeremie Pignard3
Marc Bollengier3
Pierre Gaillouste3

Matches per referee from the season's schedule; the table lists referees with at least 3 matches.

From our data: the season's league matches. History only, never a prediction.

The day's tips on Telegram

Every morning (about 10:00 Tallinn time) the day's card tips go to the free Telegram channel; on some days there are none, and we say so.