Lincoln City won the division with 103 points, 12 clear of Cardiff City, who secured automatic promotion with a 5-4 win at Mansfield Town. The play-off cohort: Stockport County (77 points) and Bradford City (77) occupy third and fourth; Bolton Wanderers (75) and Stevenage (75) complete the group. Relegated: Exeter City (49), Port Vale (42), Rotherham United (41) and Northampton Town (35). The division’s highest points total was 103, the lowest 35, and the top three were separated by 26 points. Final-day results: Bolton secured a play-off place despite losing 2-3 to Luton; Stevenage’s 1-0 win over Wigan confirmed sixth. The summer transfer window opens 1 June.
Featured storylines
Late Season Surge
Bolton bottomed out 23rd at matchday 1 but climbed to 5th.
Late Season Surge
Plymouth bottomed out 24th at matchday 15 but climbed to 8th.
Title Clinch Margin
Lincoln took the title by 12 clear points over Cardiff.
Club-by-club
Port Vale
At home to Lincoln, the Vale lost 0-2, confirming relegation. They finished 22nd on 42 points, goal difference -25. The last five matches produced two wins, one draw, two losses. The biggest win was 5-1 against Blackpool; the heaviest defeat 0-5 at Huddersfield. At home they won four, drew nine, lost ten; away: six wins, three draws, 14 losses. The highest league position was 15th after matchday one, the lowest 24th on matchday 17. Exeter City finished directly above on 49 points, Rotherham directly below on 41 points. Next season they will play in League Two.
Lincoln
The season ended with a 2-0 win away at Port Vale, a result that secured the league title. The side finished 1st on 103 points, with a goal difference of +48 from 31 wins, 10 draws, and 5 losses. The final five matches produced four wins and one draw. The home record was 18-4-1 (53 goals for, 20 against); the away record 13-6-4 (36 goals for, 21 against). The biggest win was 4-0 against Northampton; the heaviest defeat 0-3 at Rotherham. Cardiff finished 2nd on 91 points. The title win guarantees promotion to League One.
Mansfield Town
The side closed the season with a 5-4 win at home over Cardiff, a result that did not change their league standing. They finished 10th on 65 points with a goal difference of plus 12. Their final five matches produced two wins, two draws, and one loss. At home they won nine, drew eight, and lost six; away they won seven, drew nine, and lost seven. Their highest league position was 7th; their lowest 21st. They ended three points behind Huddersfield and two ahead of Wycombe. The club will aim for a stronger outcome next season.
Cardiff
A 4-5 loss at Mansfield Town on the final day, yet the result secured automatic promotion. The club finished second in the table with 91 points and a goal difference of +40. Their last five matches produced three wins, one draw and one loss. They won 17 of 23 home matches and 10 of 23 away. Their highest league position was first after five matches and lowest was seventh after one. Lincoln finished first with 103 points; Stockport County finished third with 77. The side will compete in the Championship next season.
Bolton
At home on the final day, the side lost 2-3 to Luton. The result secured a playoff-5 spot. The season closed with 75 points from 19 wins, 18 draws and nine defeats, goal difference plus-18. Form over the last five matches: no wins, three draws, two losses. Biggest victory was 4-0 against Port Vale; heaviest defeat, 0-3 against Burton Albion. Home record: 13 wins, eight draws, two defeats. Away record: six wins, 10 draws, seven defeats. Highest league position was third on matchday 35; lowest was 23rd on matchday one. The side will contest the playoff-5, with Bradford directly above on 77 points and Stevenage directly below on 75.
Luton
The side beat Bolton 3-2 away on the final day, securing no change in their already-safe league-table standing. The season ended with a seventh-place finish, 74 points, and a goal difference of plus 12. The final five matches produced four wins and one draw, with no defeat. The largest home victory came at 4-0 against Wycombe, the worst defeat a 0-5 reverse at Barnsley. The home record showed 13 wins, six draws, and four defeats; away they won eight, drew five, and lost ten. The one-point gap to the playoff places leaves the side with a clear target for the next campaign.
Barnsley
At home to Stockport County, a 1-3 loss ended the season; the result, which the model’s modal prediction had flagged as a home win, carried no league-table consequence as safety was already assured. The side finished 15th on 59 points, with a goal difference of -5. Their final five matches yielded one win, one draw, and three losses. The season included a 5-0 win over Luton and a 0-4 defeat at Cardiff. At home, nine wins and six draws; away, six wins and eight draws. They ended one point behind Doncaster and three ahead of Wigan, providing immediate reference for next season.
Stockport County
The side won 3-1 away to Barnsley, a result that secured a third-place playoff spot. They finished third with 77 points from 22 wins, 11 draws, and 13 losses, and a goal difference of +13. Their form over the last five matches was two wins, two draws, and one loss. The season’s biggest win was 3-0 against Port Vale; the heaviest defeat was 0-3 to Luton. At home they won 13, drew 4, and lost 6; away they won 9, drew 7, and lost 7. Their highest league position was second after 14 matchdays; their lowest was tenth after eight.
Exeter City
At home to Bradford, the side lost 1-2, a result that confirmed relegation. They finished 21st on 49 points (W12 D13 L21, GF52 GA61, GD-9). Their final five matches produced one win, three draws and one loss. The biggest win was 4-1 against Blackpool; the heaviest defeat was 0-4 against Rotherham. Home form was eight wins, seven draws, eight losses; away form was four wins, six draws, 13 losses. Leyton Orient finished directly above on 52 points; Port Vale finished directly below on 42 points. They move to league two.
Bradford
The side won 2-1 at Exeter City, a result that secured a top-four play-off finish. They ended the season in fourth place with 77 points and a goal difference of +7, one point above fifth-placed Bolton. Their last five matches produced two wins, two draws and one defeat. At home they recorded 15 wins, five draws and three losses; away they had seven wins, six draws and ten defeats. The largest victory was 3-1 against Huddersfield; the heaviest defeat was 0-3 at Mansfield. Stockport County finished directly above on points; the two sides will meet in the play-off semi-finals.
Stevenage
On matchday 46 at home against Wigan, they won 1-0 to secure a sixth-place playoff spot. They finished 6th with 75 points (W21 D12 L13, GD +3). The last five matches produced three wins and two draws. At home they won 14, drew seven, lost two; away they won seven, drew five, lost 11. The highest league position was 1st after matchday 3; the lowest was 9th after matchday 31. Bolton finished directly above on 75 points; Luton directly below on 74. The largest win was 2-0 against Northampton; the heaviest defeat was 1-5 against Bolton. They will contest the League One play-off semi-finals.
Wigan
The team lost 0-1 away at Stevenage on the final day, a result that left their league-table position unchanged. They finished 16th on 56 points from 14 wins, 14 draws and 18 losses, with a goal difference of -9. Their final five matches produced two wins, two losses and a draw. Barnsley finished one place and three points above them; Burton Albion finished one place and two points below. The side will look to improve on their away record of three wins, 10 draws and 10 losses next season.
Northampton
At home to Plymouth, the club lost 2-3, confirming relegation. The season ended in 24th place with 35 points and a goal difference of -35. The final five matches were all losses. The biggest win was 3-0 at home to Plymouth; the heaviest defeat was 1-5 to Burton Albion. At home, six wins, four draws, 13 losses; away, three wins, four draws, 16 losses. The highest league position was 12th after 13 matches; the lowest, 24th, by matchday 39. The club will play in League One next season.
Plymouth
A 3-2 win at Northampton, a result that left the side’s final position already secure. The team finished eighth on 73 points with a goal difference of +12, recording 22 wins, 7 draws, and 17 losses. Its last five matches produced three wins, one draw, and one loss. The side’s biggest win was 4-0 against Burton Albion; its heaviest defeat was 0-4 against Cardiff. It ended one point behind seventh-placed Luton, placing it directly adjacent to the playoff conversation for the next campaign.
Wycombe
The side won 3-2 at home against Rotherham in a match that did not alter their final league standing. They finished 11th in the final table on 63 points with a goal difference of plus 11. The side recorded 17 wins, 12 draws and 17 defeats. Their largest win was a 4-0 victory at home to Doncaster and their heaviest defeat came away against Luton. The club won 13 of their 23 home matches while securing four wins in 23 away fixtures. Over the final five matches the form was one win, one draw and three losses. The team will look to improve on this position next season.
Rotherham
The side lost 2-3 away to Wycombe, a result which confirmed relegation from League One. They finished 23rd on 41 points (W10 D11 L25, GD -30). Form in the final five matches: one win, one draw, three defeats. The home record was six wins, nine draws, eight losses; away it was four wins, two draws, 17 losses. The table low-point was the 23rd position from matchday 26 onward. Port Vale finished 22nd on 42 points, Northampton 24th on 35 points. The club will play in League Two next season.
Reading
The final match was a 0-1 home loss to Blackpool. The result left the side 12th in the final table. The season closed with 63 points, a record of 16 wins, 15 draws, 15 losses, and a goal difference of plus four. The final five matches yielded zero wins, zero draws, and five losses. The side finished directly below Wycombe on 63 points and directly above Blackpool on 60 points. Forward planning begins with a squad that recorded its biggest win, 3-0 against Blackpool, and its heaviest defeat, 0-2 at Lincoln, across the campaign.
Blackpool
Away at Reading on the final day, the side won 1-0. The result left the table position unchanged, already safe. Final position: 13th. Points: 60 (W17 D9 L20, GD -11). Form last five: won four, lost one. Biggest win: 4-0 vs Rotherham. Heaviest defeat: 1-5 at Port Vale. Home record: 12-5-6. Away record: 5-4-14. The side was never above 13th on the table, and had it at 24th in December. Reading finished directly above on 63 points; Doncaster directly below on 60. Four wins through the final five matches provide a base for the next season.
AFC Wimbledon
Lost 0-4 at home to Huddersfield Town, a result that did not alter their already-safe league status. They finished 19th on 53 points (15 wins, 8 draws, 23 losses, goal difference -21). Their last five matches produced one win and four losses. The home record was 8-4-11; the away record was 7-4-12. They reached 5th after matchday 11 and fell to 20th after matchday 43. They ended one point above Leyton Orient and one point below Peterborough. The club conceded 72 league goals, a number that will require attention in the off-season.
Huddersfield
On the final day, away at AFC Wimbledon, the team won 4-0 (W). The result had no league-table consequence as safety was already secured. The side finished ninth in the league with 67 points and a goal difference of +10. Over the final five matches, the record was two wins, two draws, one loss. The home record was 11 wins, nine draws, three losses; away, seven wins, four draws, twelve losses. The highest league position was first after matchday one; the lowest was eleventh after matchday fourteen. The club will aim to improve on a mid-table finish next season.
Peterborough
In their final match, the side lost 1-3 at home to Doncaster. The result carried no league-table consequence.
They finished 18th on 53 points (W15, D8, L23; goal difference -4). Their last five matches yielded one draw and four losses. The season’s biggest win was 5-0 over AFC Wimbledon; the heaviest defeat, 0-3 at Exeter City. The table high-water mark was 8th after matchday 28; the low-water mark was 24th after matchday 3. At home they won eight, drew six, lost nine; away they won seven, drew two, lost 14. Burton Albion (54 points) finished one place and one point above; AFC Wimbledon (53 points) finished one place and level on points below.
The side will prepare for another season in the same division.
Doncaster
The season ended with a 3-1 away win at Peterborough; the result did not change the side’s league position. The team finished 14th on 60 points (W17 D9 L20, goal difference -19). Over the final five matches they recorded three wins, one draw, and one defeat. Their biggest win was 3-0 against Leyton Orient; the heaviest defeat was 0-4, also against Leyton Orient. At home they won nine, drew six, lost eight; away they won eight, drew three, lost twelve. The highest league position was third after matchday 7; the lowest was 23rd after matchday 21. Blackpool finished directly above on 60 points; Barnsley finished directly below on 59. They go again in League one next season.
Leyton Orient
The side drew 2-2 at home with Burton Albion, a result that left their league-table position unchanged with safety already assured. They finished 20th on 52 points (14 wins, 10 draws, 22 losses, goal difference minus 12). The final five matches produced no wins, one draw, four losses. At home they won eight times, drew seven, lost eight; away they won six, drew three, lost 14. The highest league position was ninth after four matches; the lowest was 24th after the opener. AFC Wimbledon finished directly above on 53 points; Exeter City finished directly below on 49. The club will now prepare for another season at this level.
Burton Albion
The side drew 2-2 at Leyton Orient on the final day. The result left their league position unchanged with safety already secured. They finished 17th on 54 points from 13 wins, 15 draws and 18 losses, with a goal difference of -10. The last five matches produced one win and four draws. The season’s biggest win was 5-1 against Northampton; the heaviest defeat was 0-4 at Plymouth. Offseason work now determines whether the squad can push higher next term.
Final table
| Pos | Crest | Team | P | W | D | L | GF | GA | GD | Pts | Form |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ![]() |
Lincoln | 46 | 31 | 10 | 5 | 89 | 41 | +48 | 103 | WWDWW |
| 2 | ![]() |
Cardiff | 46 | 27 | 10 | 9 | 90 | 50 | +40 | 91 | DWWWL |
| 3 | ![]() |
Stockport County | 46 | 22 | 11 | 13 | 71 | 58 | +13 | 77 | DLDWW |
| 4 | ![]() |
Bradford | 46 | 22 | 11 | 13 | 58 | 51 | +7 | 77 | WLDDW |
| 5 | ![]() |
Bolton | 46 | 19 | 18 | 9 | 70 | 52 | +18 | 75 | DLDDL |
| 6 | ![]() |
Stevenage | 46 | 21 | 12 | 13 | 49 | 46 | +3 | 75 | WWDDW |
| 7 | ![]() |
Luton | 46 | 21 | 11 | 14 | 68 | 56 | +12 | 74 | WWDWW |
| 8 | ![]() |
Plymouth | 46 | 22 | 7 | 17 | 75 | 63 | +12 | 73 | WDWWW |
| 9 | ![]() |
Huddersfield | 46 | 18 | 13 | 15 | 74 | 64 | +10 | 67 | WDDLW |
| 10 | ![]() |
Mansfield Town | 46 | 16 | 17 | 13 | 62 | 50 | +12 | 65 | DLDWW |
| 11 | ![]() |
Wycombe | 46 | 17 | 12 | 17 | 69 | 58 | +11 | 63 | LDLLW |
| 12 | ![]() |
Reading | 46 | 16 | 15 | 15 | 64 | 60 | +4 | 63 | LLLDL |
| 13 | ![]() |
Blackpool | 46 | 17 | 9 | 20 | 54 | 65 | -11 | 60 | LWWWW |
| 14 | ![]() |
Doncaster | 46 | 17 | 9 | 20 | 50 | 69 | -19 | 60 | LWWDW |
| 15 | ![]() |
Barnsley | 46 | 15 | 14 | 17 | 68 | 73 | -5 | 59 | LWDLL |
| 16 | ![]() |
Wigan | 46 | 14 | 14 | 18 | 49 | 58 | -9 | 56 | WWDLL |
| 17 | ![]() |
Burton Albion | 46 | 13 | 15 | 18 | 50 | 60 | -10 | 54 | DWDDD |
| 18 | ![]() |
Peterborough | 46 | 15 | 8 | 23 | 64 | 68 | -4 | 53 | DLDLL |
| 19 | ![]() |
AFC Wimbledon | 46 | 15 | 8 | 23 | 51 | 72 | -21 | 53 | LLLWL |
| 20 | ![]() |
Leyton Orient | 46 | 14 | 10 | 22 | 59 | 71 | -12 | 52 | LLLLD |
| 21 | ![]() |
Exeter City | 46 | 12 | 13 | 21 | 52 | 61 | -9 | 49 | WDDDL |
| 22 | ![]() |
Port Vale | 46 | 10 | 12 | 24 | 36 | 61 | -25 | 42 | WWDLL |
| 23 | ![]() |
Rotherham | 46 | 10 | 11 | 25 | 41 | 71 | -30 | 41 | LLWDL |
| 24 | ![]() |
Northampton | 46 | 9 | 8 | 29 | 39 | 74 | -35 | 35 | LLLLL |
What’s Brier? A measure of how confident and correct the model’s probability predictions were. Lower is better. A perfect prediction scores 0; a coin-flip on a 3-way outcome scores around 0.667; the dashed line shows the naive “always predict home win” baseline of 1.10. The pink line is our model’s 5-matchday rolling Brier — it tracks whether the model is improving, holding steady, or drifting as the season progresses.
ML retrospective
Top high-confidence hits
model: away win 78%; result: 0-2 away
model: home win 74%; result: 2-0 home
model: home win 74%; result: 5-1 home
model: home win 71%; result: 3-2 home
model: away win 71%; result: 0-1 away
Top high-confidence misses
model: away win 78%; result: 2-0 home
model: home win 72%; result: 1-2 away
model: away win 72%; result: 1-1 draw
model: home win 68%; result: 0-0 draw
model: away win 67%; result: 1-0 home
Matchday accuracy is computed against pre-kickoff live predictions. Season-wide accuracy is computed against retrospectively-generated predictions using a uniform point-in-time pipeline (asof = kickoff − 1s); equivalent within data-correction margins to the live predictions where both exist.
Headline accuracy from N=540 fixtures, Wilson 95% CI ±4pp. Up from N=62 preview-only coverage (±12pp), a roughly 3× tightening.
Conditional-modal scoreline accuracy is omitted for League One — Poisson model coverage gap (FT-28); 1X2 outcome accuracy reported only. CV-log-loss reference unavailable for the L1 LR (FT-30); the ‘in line with cross-validation expectations’ read is omitted.

























