# 2019–20 English Football League

The 2019–20 season was the 121st season of the English Football League (EFL) and the fourth season under that name after it was renamed from The Football League in 2016. For the seventh season running, the league was sponsored by Sky Betting & Gaming and was therefore known as the Sky Bet EFL.
The EFL is contested through three divisions: the Championship, League One and League Two. The winner and the runner up of the Championship are automatically promoted to the Premier League along with the winner of the Championship playoff. Originally the bottom two teams in League Two were to be relegated to the National League, but because of the expulsion of Bury from League One, only the bottom team in League Two was relegated.

## Championship
### Table

| Pos | Teamvte | Pld | W | D | L | GF | GA | GD | Pts | Promotion, qualification or relegation |
| 1 | Leeds United (C, P) | 46 | 28 | 9 | 9 | 77 | 35 | +42 | 93 | Promotion to the Premier League |
| 2 | West Bromwich Albion (P) | 46 | 22 | 17 | 7 | 77 | 45 | +32 | 83 | Promotion to the Premier League |
| 3 | Brentford | 46 | 24 | 9 | 13 | 80 | 38 | +42 | 81 | Qualification for Championship play-offs |
| 4 | Fulham (O, P) | 46 | 23 | 12 | 11 | 64 | 48 | +16 | 81 | Qualification for Championship play-offs |
| 5 | Cardiff City | 46 | 19 | 16 | 11 | 68 | 58 | +10 | 73 | Qualification for Championship play-offs |
| 6 | Swansea City | 46 | 18 | 16 | 12 | 62 | 53 | +9 | 70 | Qualification for Championship play-offs |
| 7 | Nottingham Forest | 46 | 18 | 16 | 12 | 58 | 50 | +8 | 70 | |
| 8 | Millwall | 46 | 17 | 17 | 12 | 57 | 51 | +6 | 68 | |
| 9 | Preston North End | 46 | 18 | 12 | 16 | 59 | 54 | +5 | 66 | |
| 10 | Derby County | 46 | 17 | 13 | 16 | 62 | 64 | −2 | 64 | |
| 11 | Blackburn Rovers | 46 | 17 | 12 | 17 | 66 | 63 | +3 | 63 | |
| 12 | Bristol City | 46 | 17 | 12 | 17 | 60 | 65 | −5 | 63 | |
| 13 | Queens Park Rangers | 46 | 16 | 10 | 20 | 67 | 76 | −9 | 58 | |
| 14 | Reading | 46 | 15 | 11 | 20 | 59 | 58 | +1 | 56 | |
| 15 | Stoke City | 46 | 16 | 8 | 22 | 62 | 68 | −6 | 56 | |
| 16 | Sheffield Wednesday | 46 | 15 | 11 | 20 | 58 | 66 | −8 | 56 | |
| 17 | Middlesbrough | 46 | 13 | 14 | 19 | 48 | 61 | −13 | 53 | |
| 18 | Huddersfield Town | 46 | 13 | 12 | 21 | 52 | 70 | −18 | 51 | |
| 19 | Luton Town | 46 | 14 | 9 | 23 | 54 | 82 | −28 | 51 | |
| 20 | Birmingham City | 46 | 12 | 14 | 20 | 54 | 75 | −21 | 50 | |
| 21 | Barnsley | 46 | 12 | 13 | 21 | 49 | 69 | −20 | 49 | |
| 22 | Charlton Athletic (R) | 46 | 12 | 12 | 22 | 50 | 65 | −15 | 48 | Relegation to EFL League One |
| 23 | Wigan Athletic (R) | 46 | 15 | 14 | 17 | 57 | 56 | +1 | 47 | Relegation to EFL League One |
| 24 | Hull City (R) | 46 | 12 | 9 | 25 | 57 | 87 | −30 | 45 | Relegation to EFL League One |
* ↑ Four teams play for one spot and promotion to the Premier League.
* ↑ As a result of Wigan Athletic entering administration, the club was subject to a 12-point deduction. In accordance with EFL regulations, the timing of the sporting sanction was only determined once final league placings in the Championship were determined. Since the club did not finish in the relegation places at the end of season, the sanction was applied to their 2019–20 total and final league standings were amended as appropriate.

### Play-offs

| Semi-finals | Semi-finals | Semi-finals | Semi-finals | Semi-finals | Final | Final | Final |
| 3 | Brentford | 0 | 3 | 3 | | | |
| 6 | Swansea City | 1 | 1 | 2 | | | |
| 6 | Swansea City | 1 | 1 | 2 | 3 | Brentford | 1 |
| | | | | | 4 | Fulham | 2 |
| 4 | Fulham | 2 | 1 | 3 | 4 | Fulham | 2 |
| 5 | Cardiff City | 0 | 2 | 2 | | | |

### Results

| Home \ Away | BAR | BIR | BLB | BRE | BRI | CAR | CHA | DER | FUL | HUD | HUL | LEE | LUT | MID | MIL | NOT | PNE | QPR | REA | SHW | STO | SWA | WBA | WIG |
| Barnsley | — | 0–1 | 2–0 | 1–3 | 2–2 | 0–2 | 2–2 | 2–2 | 1–0 | 2–1 | 3–1 | 0–2 | 1–3 | 1–0 | 0–0 | 1–0 | 0–3 | 5–3 | 1–1 | 1–1 | 2–4 | 1–1 | 1–1 | 0–0 |
| Birmingham City | 2–0 | — | 1–0 | 1–1 | 1–1 | 1–1 | 1–1 | 1–3 | 0–1 | 0–3 | 3–3 | 4–5 | 2–1 | 2–1 | 1–1 | 2–1 | 0–1 | 0–2 | 1–3 | 3–3 | 2–1 | 1–3 | 2–3 | 2–3 |
| Blackburn Rovers | 3–2 | 1–1 | — | 1–0 | 3–1 | 0–0 | 1–2 | 1–0 | 0–1 | 2–2 | 3–0 | 1–3 | 1–2 | 1–0 | 2–0 | 1–1 | 1–1 | 2–1 | 4–3 | 2–1 | 0–0 | 2–2 | 1–1 | 0–0 |
| Brentford | 1–2 | 0–1 | 2–2 | — | 1–1 | 2–1 | 2–1 | 3–0 | 1–0 | 0–1 | 1–1 | 1–1 | 7–0 | 3–2 | 3–2 | 0–1 | 1–0 | 3–1 | 1–0 | 5–0 | 0–0 | 3–1 | 1–0 | 3–0 |
| Bristol City | 1–0 | 1–3 | 0–2 | 0–4 | — | 0–1 | 2–1 | 3–2 | 1–1 | 5–2 | 2–1 | 1–3 | 3–0 | 2–2 | 1–2 | 0–0 | 1–1 | 2–0 | 1–0 | 1–2 | 1–1 | 0–0 | 0–3 | 2–2 |
| Cardiff City | 3–2 | 4–2 | 2–3 | 2–2 | 0–1 | — | 0–0 | 2–1 | 1–1 | 2–1 | 3–0 | 2–0 | 2–1 | 1–0 | 1–1 | 0–1 | 0–0 | 3–0 | 1–1 | 1–1 | 1–0 | 0–0 | 2–1 | 2–2 |
| Charlton Athletic | 2–1 | 0–1 | 0–2 | 1–0 | 3–2 | 2–2 | — | 3–0 | 0–0 | 0–1 | 2–2 | 1–0 | 3–1 | 0–1 | 0–1 | 1–1 | 0–1 | 1–0 | 0–1 | 1–3 | 3–1 | 1–2 | 2–2 | 2–2 |
| Derby County | 2–1 | 3–2 | 3–0 | 1–3 | 1–2 | 1–1 | 2–1 | — | 1–1 | 1–1 | 1–0 | 1–3 | 2–0 | 2–0 | 0–1 | 1–1 | 1–0 | 1–1 | 2–1 | 1–1 | 4–0 | 0–0 | 1–1 | 1–0 |
| Fulham | 0–3 | 1–0 | 2–0 | 0–2 | 1–2 | 2–0 | 2–2 | 3–0 | — | 3–2 | 0–3 | 2–1 | 3–2 | 1–0 | 4–0 | 1–2 | 2–0 | 2–1 | 1–2 | 5–3 | 1–0 | 1–0 | 1–1 | 2–0 |
| Huddersfield Town | 2–1 | 1–1 | 2–1 | 0–0 | 2–1 | 0–3 | 4–0 | 1–2 | 1–2 | — | 3–0 | 0–2 | 0–2 | 0–0 | 1–1 | 2–1 | 0–0 | 2–0 | 0–2 | 0–2 | 2–5 | 1–1 | 2–1 | 0–2 |
| Hull City | 0–1 | 3–0 | 0–1 | 1–5 | 1–3 | 2–2 | 0–1 | 2–0 | 0–1 | 1–2 | — | 0–4 | 0–1 | 2–1 | 0–1 | 0–2 | 4–0 | 2–3 | 2–1 | 1–0 | 2–1 | 4–4 | 0–1 | 2–2 |
| Leeds United | 1–0 | 1–0 | 2–1 | 1–0 | 1–0 | 3–3 | 4–0 | 1–1 | 3–0 | 2–0 | 2–0 | — | 1–1 | 4–0 | 3–2 | 1–1 | 1–1 | 2–0 | 1–0 | 0–2 | 5–0 | 0–1 | 1–0 | 0–1 |
| Luton Town | 1–1 | 1–2 | 3–2 | 2–1 | 3–0 | 0–1 | 2–1 | 3–2 | 3–3 | 2–1 | 0–3 | 1–2 | — | 3–3 | 1–1 | 1–2 | 1–1 | 1–1 | 0–5 | 1–0 | 1–1 | 0–1 | 1–2 | 2–1 |
| Middlesbrough | 1–0 | 1–1 | 1–1 | 0–1 | 1–3 | 1–3 | 1–0 | 2–2 | 0–0 | 1–0 | 2–2 | 0–1 | 0–1 | — | 1–1 | 2–2 | 1–1 | 0–1 | 1–0 | 1–4 | 2–1 | 0–3 | 0–1 | 1–0 |
| Millwall | 1–2 | 0–0 | 1–0 | 1–0 | 1–1 | 2–2 | 2–1 | 2–3 | 1–1 | 4–1 | 1–1 | 2–1 | 3–1 | 0–2 | — | 2–2 | 1–0 | 1–2 | 2–0 | 1–0 | 2–0 | 1–1 | 0–2 | 2–2 |
| Nottingham Forest | 1–0 | 3–0 | 3–2 | 1–0 | 1–0 | 0–1 | 0–1 | 1–0 | 0–1 | 3–1 | 1–2 | 2–0 | 3–1 | 1–1 | 0–3 | — | 1–1 | 0–0 | 1–1 | 0–4 | 1–4 | 2–2 | 1–2 | 1–0 |
| Preston North End | 5–1 | 2–0 | 3–2 | 2–0 | 3–3 | 1–3 | 2–1 | 0–1 | 2–1 | 3–1 | 2–1 | 1–1 | 2–1 | 0–2 | 0–1 | 1–1 | — | 1–3 | 0–2 | 2–1 | 3–1 | 1–1 | 0–1 | 3–0 |
| Queens Park Rangers | 0–1 | 2–2 | 4–2 | 1–3 | 0–1 | 6–1 | 2–2 | 2–1 | 1–2 | 1–1 | 1–2 | 1–0 | 3–2 | 2–2 | 4–3 | 0–4 | 2–0 | — | 2–2 | 0–3 | 4–2 | 1–3 | 0–2 | 3–1 |
| Reading | 2–0 | 2–3 | 1–2 | 0–3 | 0–1 | 3–0 | 0–2 | 3–0 | 1–4 | 0–0 | 1–1 | 0–1 | 3–0 | 1–2 | 2–1 | 1–1 | 1–0 | 1–0 | — | 1–3 | 1–1 | 1–4 | 1–2 | 0–3 |
| Sheffield Wednesday | 2–0 | 1–1 | 0–5 | 2–1 | 1–0 | 1–2 | 1–0 | 1–3 | 1–1 | 0–0 | 0–1 | 0–0 | 1–0 | 1–2 | 0–0 | 1–1 | 1–3 | 1–2 | 0–3 | — | 1–0 | 2–2 | 0–3 | 1–0 |
| Stoke City | 4–0 | 2–0 | 1–2 | 1–0 | 1–2 | 2–0 | 3–1 | 2–2 | 2–0 | 0–1 | 5–1 | 0–3 | 3–0 | 0–2 | 0–0 | 2–3 | 0–2 | 1–2 | 0–0 | 3–2 | — | 2–0 | 0–2 | 2–1 |
| Swansea City | 0–0 | 3–0 | 1–1 | 0–3 | 1–0 | 1–0 | 1–0 | 2–3 | 1–2 | 3–1 | 2–1 | 0–1 | 0–1 | 3–1 | 0–1 | 0–1 | 3–2 | 0–0 | 1–1 | 2–1 | 1–2 | — | 0–0 | 2–1 |
| West Bromwich Albion | 2–2 | 0–0 | 3–2 | 1–1 | 4–1 | 4–2 | 2–2 | 2–0 | 0–0 | 4–2 | 4–2 | 1–1 | 2–0 | 0–2 | 1–1 | 2–2 | 2–0 | 2–2 | 1–1 | 2–1 | 0–1 | 5–1 | — | 0–1 |
| Wigan Athletic | 0–0 | 1–0 | 2–0 | 0–3 | 0–2 | 3–2 | 2–0 | 1–1 | 1–1 | 1–1 | 8–0 | 0–2 | 0–0 | 2–2 | 1–0 | 1–0 | 1–2 | 1–0 | 1–3 | 2–1 | 3–0 | 1–2 | 1–1 | — |

## League One
### Table

| Pos | Teamvte | Pld | W | D | L | GF | GA | GD | Pts | PPG | Promotion, qualification or relegation |
| 1 | Coventry City (C, P) | 34 | 18 | 13 | 3 | 48 | 30 | +18 | 67 | 1.97 | Promotion to the EFL Championship |
| 2 | Rotherham United (P) | 35 | 18 | 8 | 9 | 61 | 38 | +23 | 62 | 1.77 | Promotion to the EFL Championship |
| 3 | Wycombe Wanderers (O, P) | 34 | 17 | 8 | 9 | 45 | 40 | +5 | 59 | 1.74 | Qualification for League One play-offs |
| 4 | Oxford United | 35 | 17 | 9 | 9 | 61 | 37 | +24 | 60 | 1.71 | Qualification for League One play-offs |
| 5 | Portsmouth | 35 | 17 | 9 | 9 | 53 | 36 | +17 | 60 | 1.71 | Qualification for League One play-offs |
| 6 | Fleetwood Town | 35 | 16 | 12 | 7 | 51 | 38 | +13 | 60 | 1.71 | Qualification for League One play-offs |
| 7 | Peterborough United | 35 | 17 | 8 | 10 | 68 | 40 | +28 | 59 | 1.69 | |
| 8 | Sunderland | 36 | 16 | 11 | 9 | 48 | 32 | +16 | 59 | 1.64 | |
| 9 | Doncaster Rovers | 34 | 15 | 9 | 10 | 51 | 33 | +18 | 54 | 1.59 | |
| 10 | Gillingham | 35 | 12 | 15 | 8 | 42 | 34 | +8 | 51 | 1.46 | |
| 11 | Ipswich Town | 36 | 14 | 10 | 12 | 46 | 36 | +10 | 52 | 1.44 | |
| 12 | Burton Albion | 35 | 12 | 12 | 11 | 50 | 50 | 0 | 48 | 1.37 | |
| 13 | Blackpool | 35 | 11 | 12 | 12 | 44 | 43 | +1 | 45 | 1.29 | |
| 14 | Bristol Rovers | 35 | 12 | 9 | 14 | 38 | 49 | −11 | 45 | 1.29 | |
| 15 | Shrewsbury Town | 34 | 10 | 11 | 13 | 31 | 42 | −11 | 41 | 1.21 | |
| 16 | Lincoln City | 35 | 12 | 6 | 17 | 44 | 46 | −2 | 42 | 1.20 | |
| 17 | Accrington Stanley | 35 | 10 | 10 | 15 | 47 | 53 | −6 | 40 | 1.14 | |
| 18 | Rochdale | 34 | 10 | 6 | 18 | 39 | 57 | −18 | 36 | 1.06 | |
| 19 | Milton Keynes Dons | 35 | 10 | 7 | 18 | 36 | 47 | −11 | 37 | 1.06 | |
| 20 | AFC Wimbledon | 35 | 8 | 11 | 16 | 39 | 52 | −13 | 35 | 1.00 | |
| 21 | Tranmere Rovers (R) | 34 | 8 | 8 | 18 | 36 | 60 | −24 | 32 | 0.94 | Relegation to EFL League Two |
| 22 | Southend United (R) | 35 | 4 | 7 | 24 | 39 | 85 | −46 | 19 | 0.54 | Relegation to EFL League Two |
| 23 | Bolton Wanderers (R) | 34 | 5 | 11 | 18 | 27 | 66 | −39 | 14 | 0.41 | Relegation to EFL League Two |
| 24 | Bury (D, R) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | −12 | — | Club expelled |
* ↑ Four teams play for one spot and promotion to the EFL Championship.
* 1 2 Bolton Wanderers deducted 12 points for entering administration.
* 1 2 Bury deducted 12 points for entering into an insolvency event, before later being expelled from the EFL on 27 August 2019. At the time of their expulsion, they had played no matches.

### Play-offs

| Semi-finals | Semi-finals | Semi-finals | Semi-finals | Semi-finals | final | final | final |
| 3 | Wycombe Wanderers | 4 | 2 | 6 | | | |
| 6 | Fleetwood Town | 1 | 2 | 3 | | | |
| 6 | Fleetwood Town | 1 | 2 | 3 | 3 | Wycombe Wanderers | 2 |
| | | | | | 4 | Oxford United | 1 |
| 4 | Oxford United | 1 | 1 | 2 (5) | 4 | Oxford United | 1 |
| 5 | Portsmouth | 1 | 1 | 2 (4) | | | |

### Results

| Home \ Away | ACC | WIM | BLP | BOL | BRI | BRT | COV | DON | FLE | GIL | IPS | LIN | MKD | OXF | PET | POR | ROC | ROT | SHR | STD | SUN | TRA | WYC |
| Accrington Stanley | — | 2–1 | 1–1 | 7–1 | | 2–0 | | | | 0–1 | 2–0 | 4–3 | 2–1 | 2–2 | 0–2 | 4–1 | 1–2 | 1–2 | 2–3 | 1–2 | 1–3 | 1–2 | |
| AFC Wimbledon | 1–1 | — | 0–0 | 0–0 | 1–3 | 2–2 | | 2–1 | 1–2 | 1–0 | 0–0 | 1–1 | a | 1–2 | 1–0 | 1–0 | 3–2 | 1–2 | 1–1 | 1–1 | | | 0–0 |
| Blackpool | 0–1 | 2–0 | — | 2–1 | 2–0 | | | | 3–1 | 2–3 | 2–1 | 2–1 | 0–3 | 2–1 | 4–3 | 1–1 | | 1–2 | 0–1 | 2–1 | | 1–2 | 1–1 |
| Bolton Wanderers | 0–0 | 2–2 | 0–0 | — | 1–1 | 3–4 | 0–0 | | 2–1 | | 0–5 | | 1–0 | 0–0 | | 0–1 | 1–3 | | 1–1 | 3–2 | 1–1 | 2–0 | 0–2 |
| Bristol Rovers | 3–3 | 1–2 | 2–1 | 0–2 | — | | 1–2 | 0–2 | 0–0 | 1–1 | | | 1–0 | 3–1 | 0–0 | 2–2 | | 1–0 | 0–1 | 4–2 | 2–0 | 2–0 | 0–0 |
| Burton Albion | 1–1 | 1–0 | 0–0 | 2–2 | 2–0 | — | 0–0 | | 1–0 | 0–0 | 0–1 | 0–2 | 1–0 | 2–2 | 1–1 | | 3–1 | 0–1 | | 1–1 | | 4–2 | |
| Coventry City | 0–0 | 2–1 | 3–2 | 2–1 | 2–0 | | — | 1–1 | 2–1 | 1–0 | 1–1 | 1–0 | 1–1 | | | 1–0 | 2–1 | 1–1 | | 1–0 | 1–0 | 0–1 | |
| Doncaster Rovers | 1–1 | | 0–1 | 2–1 | 2–0 | 2–2 | 0–1 | — | 3–2 | 1–1 | | 2–1 | 1–1 | 1–0 | 2–0 | 1–2 | 1–1 | 2–1 | 2–0 | 3–1 | 1–2 | | 3–1 |
| Fleetwood Town | 2–0 | 2–1 | 0–0 | | 0–0 | 4–1 | 0–0 | 2–1 | — | 1–1 | 0–1 | | 1–0 | 2–1 | 2–1 | 1–0 | 2–1 | | 2–2 | | 1–1 | 2–1 | 1–1 |
| Gillingham | | 1–2 | 2–2 | 5–0 | | 1–2 | | 2–1 | | — | 0–1 | 1–0 | 3–1 | 1–1 | 1–2 | 1–1 | 1–0 | 0–3 | 2–0 | 3–1 | 1–0 | | 2–0 |
| Ipswich Town | 4–1 | 2–1 | 2–2 | | 1–2 | 4–1 | 0–1 | 0–0 | 0–1 | 0–0 | — | 1–0 | | 0–1 | 1–4 | | | 0–2 | 3–0 | | 1–1 | 4–1 | 0–0 |
| Lincoln City | 2–0 | | 1–0 | 5–1 | 0–1 | 3–2 | | | 2–0 | 0–0 | 5–3 | — | 1–1 | 0–6 | 2–1 | 0–2 | | 0–1 | 0–0 | 4–0 | 2–0 | 1–0 | |
| MK Dons | | 2–1 | | 1–0 | 3–0 | 0–3 | 0–0 | 0–1 | | | 0–1 | 2–1 | — | 1–0 | 0–4 | 3–1 | 2–1 | 2–3 | 1–0 | 0–1 | 0–1 | 1–3 | 2–0 |
| Oxford United | 3–0 | 5–0 | 2–1 | | | 2–4 | 3–3 | 3–0 | | 3–0 | 0–0 | 1–0 | | — | 1–0 | | 3–0 | 1–3 | 0–0 | 2–1 | 0–1 | 3–0 | 1–0 |
| Peterborough United | 4–0 | 3–2 | | 1–0 | | 1–0 | 2–2 | 0–3 | 1–3 | 0–0 | 2–2 | 2–0 | | 4–0 | — | 2–0 | 6–0 | 2–1 | | 4–0 | 3–0 | | 4–0 |
| Portsmouth | | 2–1 | | 1–0 | | 2–2 | 3–3 | | 2–2 | 0–0 | 1–0 | 1–0 | 3–1 | 1–1 | 2–2 | — | 3–0 | 3–2 | 2–0 | 4–1 | 2–0 | 2–0 | 2–0 |
| Rochdale | 2–1 | | 0–0 | 2–0 | 1–2 | | 1–2 | 1–1 | 2–3 | 2–2 | 0–1 | 1–1 | 2–0 | | | 0–3 | — | 3–1 | 1–0 | | 1–2 | | 0–3 |
| Rotherham United | 1–0 | 2–2 | 2–1 | 6–1 | 3–0 | 3–2 | 4–0 | | 2–2 | | 1–0 | 0–2 | 1–1 | 1–2 | 4–0 | | 0–1 | — | 0–0 | | | 1–1 | 0–1 |
| Shrewsbury Town | 0–2 | | | | 3–4 | 0–0 | 2–1 | 1–0 | 0–3 | 1–1 | | 1–1 | 1–1 | 2–3 | 1–0 | 1–0 | 0–0 | 1–2 | — | 4–3 | 1–0 | 2–3 | |
| Southend United | 0–1 | 1–4 | 1–3 | | 3–1 | 2–3 | 0–2 | 1–7 | 3–3 | 0–1 | 1–3 | 2–1 | 2–2 | 0–4 | 0–2 | | 0–3 | 2–2 | | — | | 0–0 | |
| Sunderland | | 3–1 | 1–1 | 0–0 | 3–0 | 1–2 | 1–1 | 0–0 | 1–1 | 2–2 | 1–0 | 3–1 | 2–1 | 1–1 | | 2–1 | 3–0 | 1–1 | | 1–0 | — | 5–0 | 4–0 |
| Tranmere Rovers | 1–1 | 1–0 | 1–1 | 5–0 | 0–0 | 2–1 | 1–4 | 0–3 | | 2–2 | 1–2 | | | | 2–2 | 0–2 | 2–3 | | 0–1 | 1–1 | 0–1 | — | 0–2 |
| Wycombe Wanderers | 1–1 | | 2–1 | 2–0 | 3–1 | 2–0 | 1–4 | 1–0 | 0–1 | | 1–1 | 3–1 | 3–2 | | 3–3 | 1–0 | 2–1 | | 1–0 | 4–3 | 1–0 | 3–1 | — |

## League Two
### Table

| Pos | Teamvte | Pld | W | D | L | GF | GA | GD | Pts | PPG | Promotion, qualification or relegation |
| 1 | Swindon Town (C, P) | 36 | 21 | 6 | 9 | 62 | 39 | +23 | 69 | 1.92 | Promotion to EFL League One |
| 2 | Crewe Alexandra (P) | 37 | 20 | 9 | 8 | 67 | 43 | +24 | 69 | 1.86 | Promotion to EFL League One |
| 3 | Plymouth Argyle (P) | 37 | 20 | 8 | 9 | 61 | 39 | +22 | 68 | 1.84 | Promotion to EFL League One |
| 4 | Cheltenham Town | 36 | 17 | 13 | 6 | 52 | 27 | +25 | 64 | 1.78 | Qualification for League Two play-offs |
| 5 | Exeter City | 37 | 18 | 11 | 8 | 53 | 43 | +10 | 65 | 1.76 | Qualification for League Two play-offs |
| 6 | Colchester United | 37 | 15 | 13 | 9 | 52 | 37 | +15 | 58 | 1.57 | Qualification for League Two play-offs |
| 7 | Northampton Town (O, P) | 37 | 17 | 7 | 13 | 54 | 40 | +14 | 58 | 1.57 | Qualification for League Two play-offs |
| 8 | Port Vale | 37 | 14 | 15 | 8 | 50 | 44 | +6 | 57 | 1.54 | |
| 9 | Bradford City | 37 | 14 | 12 | 11 | 44 | 40 | +4 | 54 | 1.46 | |
| 10 | Forest Green Rovers | 36 | 13 | 10 | 13 | 43 | 40 | +3 | 49 | 1.36 | |
| 11 | Salford City | 37 | 13 | 11 | 13 | 49 | 46 | +3 | 50 | 1.35 | |
| 12 | Walsall | 36 | 13 | 8 | 15 | 40 | 49 | −9 | 47 | 1.31 | |
| 13 | Crawley Town | 37 | 11 | 15 | 11 | 51 | 47 | +4 | 48 | 1.30 | |
| 14 | Newport County | 36 | 12 | 10 | 14 | 32 | 39 | −7 | 46 | 1.28 | |
| 15 | Grimsby Town | 37 | 12 | 11 | 14 | 45 | 51 | −6 | 47 | 1.27 | |
| 16 | Cambridge United | 37 | 12 | 9 | 16 | 40 | 48 | −8 | 45 | 1.22 | |
| 17 | Leyton Orient | 36 | 10 | 12 | 14 | 47 | 55 | −8 | 42 | 1.17 | |
| 18 | Carlisle United | 37 | 10 | 12 | 15 | 39 | 56 | −17 | 42 | 1.14 | |
| 19 | Oldham Athletic | 37 | 9 | 14 | 14 | 44 | 57 | −13 | 41 | 1.11 | |
| 20 | Scunthorpe United | 37 | 10 | 10 | 17 | 44 | 56 | −12 | 40 | 1.08 | |
| 21 | Mansfield Town | 36 | 9 | 11 | 16 | 48 | 55 | −7 | 38 | 1.06 | |
| 22 | Morecambe | 37 | 7 | 11 | 19 | 35 | 60 | −25 | 32 | 0.86 | |
| 23 | Stevenage | 36 | 3 | 13 | 20 | 24 | 50 | −26 | 22 | 0.61 | Reprieved from relegation |
| 24 | Macclesfield Town (R) | 37 | 7 | 15 | 15 | 32 | 47 | −15 | 19 | 0.51 | Relegation to the National League |
* ↑ Four teams play for one spot and promotion to EFL League One.
* ↑ As a result of Bury's expulsion from League One, only one team is relegated to maintain League Two at 24 teams.
* 1 2 Macclesfield Town deducted four points for failing to both pay their players' wages and to fulfil a fixture, reduced from six points after appeal. A further seven-point deduction was given for failing to play December's match against Plymouth Argyle. A further two-point deduction was given for breaches of regulations over non-payment of wages. On 3 July the EFL appealed against the independent disciplinary panel's sanctions on Macclesfield. A further four points were deducted on 11 August 2020, resulting in Macclesfield Town being relegated. Stevenage reprieved

### Play-offs

| Semi-finals | Semi-finals | Semi-finals | Semi-finals | Semi-finals | Final | Final | Final |
| 4 | Cheltenham Town | 2 | 0 | 2 | | | |
| 7 | Northampton Town | 0 | 3 | 3 | | | |
| 7 | Northampton Town | 0 | 3 | 3 | 7 | Northampton Town | 4 |
| | | | | | 5 | Exeter City | 0 |
| 5 | Exeter City | 0 | 3 | 3 | 5 | Exeter City | 0 |
| 6 | Colchester United | 1 | 1 | 2 | | | |

### Results

| Home \ Away | BRA | CAM | CAR | CHE | COL | CRA | CRE | EXE | FGR | GRI | LEY | MAC | MAN | MOR | NEW | NOR | OLD | PLY | POR | SAL | SCU | STE | SWI | WAL |
| Bradford City | — | 0–0 | 3–1 | 1–1 | | 2–1 | | 2–0 | 0–1 | 1–1 | | | 2–0 | 1–0 | 1–0 | 2–1 | 3–0 | 2–1 | 1–2 | 1–1 | 2–2 | 3–1 | 2–1 | |
| Cambridge United | 2–1 | — | 1–2 | | 2–1 | 2–1 | | 4–0 | 0–1 | 0–0 | 2–3 | 2–2 | 2–3 | 1–0 | 0–0 | | 1–2 | 1–0 | | 0–4 | 3–2 | 0–4 | 0–1 | |
| Carlisle United | 0–0 | 0–0 | — | 0–1 | 0–3 | 2–1 | 2–4 | 1–3 | 0–0 | 0–0 | | 2–1 | 0–2 | 2–2 | 2–0 | 0–2 | 1–0 | 0–3 | | 2–2 | | | 1–1 | 2–1 |
| Cheltenham Town | 3–2 | 1–1 | 2–0 | — | 1–1 | | 1–1 | | 1–2 | | 2–1 | 3–0 | 1–0 | 2–1 | | 2–1 | 3–0 | 0–1 | 0–0 | | 4–1 | 4–2 | 2–2 | 3–1 |
| Colchester United | 0–0 | 1–2 | 3–0 | 0–2 | — | 1–1 | | 2–2 | | 2–3 | 2–1 | 2–1 | | 0–1 | 3–1 | 1–0 | | 3–0 | 1–1 | 1–0 | | 3–1 | 3–1 | 0–0 |
| Crawley Town | 2–1 | | 0–0 | 1–0 | 2–1 | — | 1–2 | 0–1 | 1–1 | 3–2 | | | 1–0 | 1–1 | | 4–0 | 3–0 | 2–2 | 0–0 | 2–0 | 3–1 | 2–0 | 0–4 | 2–3 |
| Crewe Alexandra | 2–1 | 2–3 | 4–1 | 1–0 | 0–0 | 2–1 | — | 1–1 | | | 2–0 | 2–0 | 1–1 | 5–0 | | | 2–1 | 0–3 | 0–1 | 4–1 | 3–1 | 3–1 | 3–1 | 1–0 |
| Exeter City | | 2–0 | | 0–0 | 0–0 | 1–1 | 1–1 | — | 1–0 | 1–3 | 2–2 | 1–0 | 1–0 | | 1–0 | 3–2 | 5–1 | 4–0 | 2–0 | | | 2–1 | 1–1 | 3–3 |
| Forest Green Rovers | | | 1–4 | | 1–0 | 3–1 | 0–0 | 0–1 | — | 1–0 | | 1–0 | 2–2 | | 0–2 | | 1–0 | 0–1 | 2–3 | 1–2 | 0–2 | 0–0 | 2–2 | 1–2 |
| Grimsby Town | 1–1 | | | 0–0 | 2–2 | 1–1 | 0–2 | 0–1 | 2–2 | — | 0–4 | 1–0 | 0–1 | 2–1 | 4–2 | 0–3 | | | 5–2 | 1–0 | 0–1 | 3–1 | 0–3 | |
| Leyton Orient | 0–0 | 2–1 | 1–1 | 1–0 | 1–3 | 2–3 | 1–2 | | 2–4 | 1–1 | — | 1–1 | 2–1 | | 2–1 | 1–1 | 2–2 | | 3–3 | | 0–2 | 0–0 | 1–3 | 3–1 |
| Macclesfield Town | 1–1 | 1–0 | | | 1–1 | 1–1 | 1–1 | 2–3 | 2–1 | 1–1 | 3–0 | — | 0–0 | 0–1 | 1–1 | 0–1 | 1–1 | 1–1 | 2–1 | 0–2 | 1–0 | | | |
| Mansfield Town | 3–0 | 0–4 | 2–2 | 0–3 | 2–3 | | | | 3–4 | 0–1 | 2–3 | | — | 2–2 | 1–0 | 1–1 | 6–1 | 0–1 | 2–2 | 1–2 | 2–0 | 0–0 | | |
| Morecambe | 1–2 | 1–1 | 1–1 | 0–0 | 1–1 | | 1–1 | 2–3 | 0–2 | 0–2 | 1–0 | 2–0 | 1–1 | — | 2–1 | 2–2 | 1–2 | | 2–1 | 2–2 | | | | 0–1 |
| Newport County | 2–1 | 0–1 | 1–0 | 1–1 | | 1–1 | 1–0 | 1–1 | | | 1–1 | 1–0 | 2–2 | 1–0 | — | | 0–1 | 1–0 | 1–0 | 1–2 | 2–1 | 1–1 | 2–0 | 0–0 |
| Northampton Town | | 2–0 | | 1–1 | | 2–2 | 4–1 | 2–0 | 1–0 | 2–0 | 0–1 | 1–2 | 1–2 | 4–1 | 2–0 | — | | 3–1 | 0–1 | 2–0 | 3–0 | 1–0 | 0–1 | 0–1 |
| Oldham Athletic | 3–0 | | 1–1 | 1–1 | 0–1 | 2–1 | 1–2 | 0–0 | 1–1 | 2–2 | 1–1 | 0–1 | 3–1 | 3–1 | 5–0 | 2–2 | — | | | 1–4 | 0–2 | | | 2–0 |
| Plymouth Argyle | 2–1 | 0–0 | 2–0 | 0–2 | 1–0 | 2–2 | 2–1 | | | 3–0 | 4–0 | 3–0 | 3–1 | 3–0 | 1–0 | | 2–2 | — | | 2–2 | 2–2 | 2–1 | 1–2 | 3–0 |
| Port Vale | | 1–0 | 2–1 | 1–1 | 3–0 | | | 3–1 | 2–1 | | 1–0 | 2–2 | 2–2 | 3–1 | | 1–1 | 0–0 | 1–0 | — | 1–1 | 2–2 | 1–1 | 2–0 | 0–1 |
| Salford City | 2–0 | 1–0 | | 0–2 | 1–2 | 0–0 | 3–1 | 0–1 | 0–4 | 1–0 | 1–1 | 0–0 | | | | 1–2 | 1–1 | 2–3 | 1–1 | — | 1–1 | 2–0 | 2–3 | 1–2 |
| Scunthorpe United | 1–1 | 0–2 | 0–1 | 1–0 | 2–2 | 2–2 | 2–2 | 3–1 | 1–0 | 0–2 | | | | 3–0 | 1–2 | 3–0 | 2–2 | 1–3 | 2–1 | | — | 0–0 | 0–2 | 0–2 |
| Stevenage | 0–1 | 1–1 | 2–3 | | 0–0 | 0–0 | 1–5 | 0–1 | 0–0 | 2–1 | 0–3 | 2–2 | | 1–0 | | 0–1 | 0–0 | 1–2 | 0–1 | 0–1 | | — | | |
| Swindon Town | 1–1 | 4–0 | 3–2 | | 0–3 | | 3–1 | 2–1 | 0–2 | 3–1 | | 3–0 | 1–0 | 3–1 | 0–2 | 0–1 | 2–0 | 1–1 | 3–0 | | 2–0 | 1–0 | — | 2–1 |
| Walsall | 0–1 | 2–1 | 1–2 | 1–2 | | 2–1 | 1–2 | 3–1 | 1–1 | 1–3 | 1–0 | 1–1 | 1–2 | 0–2 | 0–0 | 3–2 | | | 2–2 | 0–3 | 1–0 | 0–0 | | — |

## Managerial changes

| Team | Outgoing manager | Manner of departure | Date of vacancy | Position in table | Incoming manager | Date of appointment | Position in table |
| West Bromwich Albion | Darren Moore | Sacked | 9 March 2019 | 2018–19 season | Slaven Bilić | 13 June 2019 | Pre-season |
| Oldham Athletic | Paul Scholes | Resigned | 14 March 2019 | 2018–19 season | Laurent Banide | 11 June 2019 | Pre-season |
| Scunthorpe United | Stuart McCall | Sacked | 24 March 2019 | 2018–19 season | Paul Hurst | 13 May 2019 | Pre-season |
| Queens Park Rangers | Steve McClaren | Sacked | 1 April 2019 | 2018–19 season | Mark Warburton | 9 May 2019 | Pre-season |
| Walsall | Dean Keates | Sacked | 6 April 2019 | 2018–19 season | Darrell Clarke | 10 May 2019 | Pre-season |
| Gillingham | Steve Lovell | Sacked | 26 April 2019 | 2018–19 season | Steve Evans | 1 June 2019 | Pre-season |
| Plymouth Argyle | Derek Adams | Sacked | 28 April 2019 | 2018–19 season | Ryan Lowe | 5 June 2019 | Pre-season |
| Brighton & Hove Albion | Chris Hughton | Sacked | 13 May 2019 | Pre-season | Graham Potter | 20 May 2019 | Pre-season |
| Mansfield Town | David Flitcroft | Sacked | 14 May 2019 | Pre-season | John Dempster | 14 May 2019 | Pre-season |
| Middlesbrough | Tony Pulis | End of contract | 17 May 2019 | Pre-season | Jonathan Woodgate | 14 June 2019 | Pre-season |
| Swansea City | Graham Potter | Signed by Brighton & Hove Albion | 20 May 2019 | Pre-season | Steve Cooper | 13 June 2019 | Pre-season |
| Bury | Ryan Lowe | Signed by Plymouth Argyle | 5 June 2019 | Pre-season | Paul Wilkinson | 2 July 2019 | Pre-season |
| Leyton Orient | Justin Edinburgh | Deceased | 8 June 2019 | Pre-season | Carl Fletcher | 16 October 2019 | 17th |
| Hull City | Nigel Adkins | End of contract | 8 June 2019 | Pre-season | Grant McCann | 21 June 2019 | Pre-season |
| Birmingham City | Garry Monk | Sacked | 18 June 2019 | Pre-season | Pep Clotet | 4 December 2019 | 15th |
| Doncaster Rovers | Grant McCann | Signed by Hull City | 21 June 2019 | Pre-season | Darren Moore | 10 July 2019 | Pre-season |
| Nottingham Forest | Martin O’Neill | Sacked | 28 June 2019 | Pre-season | Sabri Lamouchi | 28 June 2019 | Pre-season |
| Derby County | Frank Lampard | Signed by Chelsea | 4 July 2019 | Pre-season | Phillip Cocu | 5 July 2019 | Pre-season |
| Blackpool | Terry McPhillips | Resigned | 5 July 2019 | Pre-season | Simon Grayson | 6 July 2019 | Pre-season |
| Sheffield Wednesday | Steve Bruce | Resigned | 15 July 2019 | Pre-season | Garry Monk | 6 September 2019 | 11th |
| Macclesfield Town | Sol Campbell | Mutual consent | 15 August 2019 | 8th | Daryl McMahon | 19 August 2019 | 4th |
| Huddersfield Town | Jan Siewert | Sacked | 16 August 2019 | 20th | Danny Cowley | 9 September 2019 | 23rd |
| Bolton Wanderers | Phil Parkinson | Resigned | 22 August 2019 | 23rd | Keith Hill | 31 August 2019 | 23rd |
| Southend United | Kevin Bond | Resigned | 6 September 2019 | 22nd | Sol Campbell | 22 October 2019 | 22nd |
| Stevenage | Dino Maamria | Sacked | 9 September 2019 | 23rd | Graham Westley | 15 December 2019 | 23rd |
| Lincoln City | Danny Cowley | Signed by Huddersfield Town | 9 September 2019 | 5th | Michael Appleton | 20 September 2019 | 8th |
| Oldham Athletic | Laurent Banide | Sacked | 19 September 2019 | 21st | Dino Maamria | 19 September 2019 | 21st |
| Millwall | Neil Harris | Resigned | 3 October 2019 | 18th | Gary Rowett | 21 October 2019 | 17th |
| Barnsley | Daniel Stendel | Sacked | 8 October 2019 | 23rd | Gerhard Struber | 20 November 2019 | 24th |
| Sunderland | Jack Ross | Sacked | 8 October 2019 | 6th | Phil Parkinson | 17 October 2019 | 6th |
| Reading | José Gomes | Sacked | 9 October 2019 | 22nd | Mark Bowen | 14 October 2019 | 22nd |
| AFC Wimbledon | Wally Downes | Mutual consent | 20 October 2019 | 21st | Glyn Hodges | 23 October 2019 | 21st |
| Morecambe | Jim Bentley | Signed by AFC Fylde | 28 October 2019 | 24th | Derek Adams | 7 November 2019 | 24th |
| Stoke City | Nathan Jones | Sacked | 1 November 2019 | 23rd | Michael O'Neill | 8 November 2019 | 24th |
| Milton Keynes Dons | Paul Tisdale | Mutual consent | 2 November 2019 | 21st | Russell Martin | 3 November 2019 | 21st |
| Cardiff City | Neil Warnock | Resigned | 11 November 2019 | 14th | Neil Harris | 16 November 2019 | 14th |
| Carlisle United | Steven Pressley | Sacked | 13 November 2019 | 19th | Chris Beech | 26 November 2019 | 21st |
| Leyton Orient | Carl Fletcher | Sacked | 14 November 2019 | 16th | Ross Embleton | 7 January 2020 | 19th |
| Grimsby Town | Michael Jolley | Sacked | 15 November 2019 | 18th | Ian Holloway | 31 December 2019 | 21st |
| Crawley Town | Gabriele Cioffi | Mutual consent | 2 December 2019 | 17th | John Yems | 5 December 2019 | 17th |
| Mansfield Town | John Dempster | Sacked | 14 December 2019 | 18th | Graham Coughlan | 17 December 2019 | 18th |
| Bristol Rovers | Graham Coughlan | Signed by Mansfield Town | 17 December 2019 | 4th | Ben Garner | 23 December 2019 | 4th |
| Macclesfield Town | Daryl McMahon | Resigned | 2 January 2020 | 22nd | Mark Kennedy | 16 January 2020 | 22nd |
| Cambridge United | Colin Calderwood | Mutual consent | 29 January 2020 | 18th | Mark Bonner | 9 March 2020 | 16th |
| Scunthorpe United | Paul Hurst | Sacked | 29 January 2020 | 15th | Neil Cox | 7 August 2020 | 2020–21 English Football League |
| Bradford City | Gary Bowyer | Sacked | 3 February 2020 | 8th | Stuart McCall | 4 February 2020 | 8th |
| Blackpool | Simon Grayson | Sacked | 12 February 2020 | 15th | Neil Critchley | 2 March 2020 | 13th |
| Stevenage | Graham Westley | Resigned | 16 February 2020 | 24th | Alex Revell | 16 February 2020 | 24th |
| Luton Town | Graeme Jones | Mutual consent | 24 April 2020 | 23rd | Nathan Jones | 28 May 2020 | 23rd |
| Burton Albion | Nigel Clough | Resigned | 18 May 2020 | 12th | Jake Buxton | 18 May 2020 | 12th |
| Bolton Wanderers | Keith Hill | End of contract | 12 June 2020 | 23rd | Ian Evatt | 1 July 2020 | 23rd |
| Middlesbrough | Jonathan Woodgate | Sacked | 23 June 2020 | 21st | Neil Warnock | 23 June 2020 | 21st |
| Southend United | Sol Campbell | Mutual consent | 30 June 2020 | 22nd | Mark Molesley | 13 August 2020 | 2020–21 English Football League |
| Bristol City | Lee Johnson | Sacked | 4 July 2020 | 12th | Dean Holden | 10 August 2020 | 2020–21 English Football League |
| Tranmere Rovers | Micky Mellon | Signed by Dundee United | 6 July 2020 | 21st | Mike Jackson | 18 July 2020 | 21st |
| Birmingham City | Pep Clotet | Mutual consent | 8 July 2020 | 20th | Aitor Karanka | 31 July 2020 | 20th |
| Colchester United | John McGreal | Sacked | 14 July 2020 | 6th | Steve Ball | 28 July 2020 | 6th |
| Huddersfield Town | Danny Cowley | Sacked | 19 July 2020 | 18th | Carlos Corberán | 23 July 2020 | 18th |