| Position | Midfielder |
| Nationality | Scotland |
| Villa career | 2018– — still going — a goal every 8.2 games |
| Captaincy | 2022– |
| Era | The Modern Era (2016– ) |
Appearances and goals above are across all competitions (every competitive first-team match; wartime fixtures excluded). Legacy numbers are the club's official 150th-anniversary numbering of every player to appear for Villa, in debut order.
Reported wage: £130,000/week (Capology, via FBref)
Every competition John McGinn has played for Villa, season by season, with a total for each. Villa appearances only. St starts · Pk penalties scored · Y/R/2Y cards · Sh shots · SoT on target · Fls/Fld fouls for/against · Off offsides · Crs crosses · Int interceptions · TkW tackles won · PkW/PkC penalties won/conceded · OG own goals · Cmp complete matches · Sub sub apps · PPG points per game · +/- team goal difference on pitch. Minutes are shown so any per-90 rate can be worked out (stat ÷ minutes × 90).
| Season | Apps | St | Min | G | A | Pk | Y | R | 2Y | Sh | SoT | Fls | Fld | Off | Crs | Int | TkW | PkW | PkC | OG | Cmp | Sub | PPG | +/- |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2019-20 | 28 | 27 | 2,312 | 3 | 3 | 0 | 3 | 0 | 0 | 55 | 20 | 37 | 65 | 0 | 64 | 25 | 34 | — | — | 0 | 21 | 1 | 0.89 | -12 |
| 2020-21 | 37 | 37 | 3,330 | 3 | 5 | 0 | 12 | 0 | 0 | 46 | 12 | 45 | 77 | 2 | 51 | 42 | 37 | — | — | 0 | 37 | 0 | 1.41 | +7 |
| 2021-22 | 35 | 35 | 3,090 | 3 | 4 | 0 | 8 | 0 | 0 | 43 | 16 | 57 | 80 | 0 | 110 | 32 | 63 | — | — | 0 | 32 | 0 | 1.23 | -3 |
| 2022-23 | 34 | 30 | 2,693 | 1 | 3 | 0 | 7 | 0 | 0 | 42 | 11 | 41 | 64 | 0 | 51 | 23 | 36 | — | — | 0 | 22 | 4 | 1.59 | +5 |
| 2023-24 | 35 | 35 | 2,999 | 6 | 4 | 0 | 9 | 1 | 0 | 40 | 16 | 39 | 69 | 2 | 77 | 20 | 34 | — | — | 0 | 24 | 0 | 1.83 | +16 |
| 2024-25 | 34 | 27 | 2,223 | 1 | 4 | 0 | 7 | 0 | 0 | 31 | 5 | 43 | 69 | 3 | 60 | 11 | 23 | — | — | 0 | 11 | 7 | 1.76 | -1 |
| 2025-26 | 30 | 28 | 2,137 | 5 | 4 | 0 | 5 | 0 | 0 | 28 | 12 | 31 | 48 | 0 | 82 | 12 | 17 | — | — | 0 | 6 | 2 | 1.90 | +9 |
| Total | 233 | 219 | 18,784 | 22 | 27 | 0 | 51 | 1 | 0 | 285 | 92 | 293 | 472 | 7 | 495 | 165 | 244 | — | — | 0 | 153 | 14 | — | +21 |
| Season | Apps | St | Min | G | A | Pk | Y | R | 2Y | Sh | SoT | Fls | Fld | Off | Crs | Int | TkW | PkW | PkC | OG | Cmp | Sub | PPG | +/- |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2018-19 | 40 | 39 | 3,459 | 6 | 9 | 0 | 14 | 0 | 0 | 96 | 29 | 62 | 107 | 1 | 120 | 40 | 57 | 1 | 0 | 0 | 33 | 1 | 1.67 | +15 |
| Total | 40 | 39 | 3,459 | 6 | 9 | 0 | 14 | 0 | 0 | 96 | 29 | 62 | 107 | 1 | 120 | 40 | 57 | 1 | 0 | 0 | 33 | 1 | — | +15 |
| Season | Apps | St | Min | G | A | Pk | Y | R | 2Y | Sh | SoT | Fls | Fld | Off | Crs | Int | TkW | PkW | PkC | OG | Cmp | Sub | PPG | +/- |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2018-19 | 1 | 1 | 90 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | 0 | 2 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | -3 |
| 2021-22 | 1 | 1 | 90 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 1 | 1 | 1 | 0 | 5 | 0 | 1 | — | — | 0 | 1 | 0 | 0.00 | -1 |
| 2023-24 | 3 | 3 | 230 | 0 | 0 | 0 | 0 | 0 | 0 | 6 | 2 | 4 | 3 | 1 | 9 | 1 | 1 | — | — | 0 | 1 | 0 | 1.33 | -3 |
| 2024-25 | 4 | 3 | 257 | 0 | 0 | 0 | 0 | 0 | 0 | 3 | 3 | 2 | 2 | 0 | 4 | 4 | 3 | — | — | 0 | 2 | 1 | 2.25 | +1 |
| 2025-26 | 1 | 1 | 64 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 2 | 0 | 1 | 1 | 0 | — | — | 0 | 0 | 0 | 3.00 | +1 |
| Total | 10 | 9 | 731 | 0 | 0 | 0 | 0 | 0 | 0 | 14 | 7 | 7 | 10 | 1 | 21 | 6 | 5 | 0 | 0 | 0 | 5 | 1 | — | -5 |
| Season | Apps | St | Min | G | A | Pk | Y | R | 2Y | Sh | SoT | Fls | Fld | Off | Crs | Int | TkW | PkW | PkC | OG | Cmp | Sub | PPG | +/- |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2019-20 | 2 | 1 | 75 | 0 | 0 | 0 | 1 | 0 | 0 | 5 | 1 | 1 | 2 | 0 | 2 | 3 | 3 | — | — | 0 | 0 | 1 | 3.00 | +1 |
| 2022-23 | 2 | 2 | 180 | 0 | 0 | 0 | 0 | 0 | 0 | 3 | 1 | 4 | 5 | 0 | 2 | 1 | 4 | — | — | 0 | 2 | 0 | 1.50 | +1 |
| 2023-24 | 1 | 1 | 45 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 0 | 1 | 0 | 1 | — | — | 0 | 0 | 0 | 0.00 | -1 |
| 2024-25 | 1 | 1 | 78 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 3 | 0 | 0 | — | — | 0 | 0 | 0 | 0.00 | -1 |
| 2025-26 | 1 | 1 | 90 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 0 | 4 | 0 | 2 | — | — | 0 | 1 | 0 | 1.00 | 0 |
| Total | 7 | 6 | 468 | 0 | 1 | 0 | 1 | 0 | 0 | 9 | 2 | 7 | 11 | 0 | 12 | 4 | 10 | — | — | 0 | 3 | 1 | — | 0 |
| Season | Apps | St | Min | G | A | Pk | Y | R | 2Y | Sh | SoT | Fls | Fld | Off | Crs | Int | TkW | PkW | PkC | OG | Cmp | Sub | PPG | +/- |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2024-25 | 10 | 9 | 734 | 3 | 2 | 0 | 1 | 0 | 0 | 13 | 6 | 8 | 9 | 0 | 13 | 5 | 7 | — | — | 0 | 3 | 1 | 2.20 | +7 |
| Total | 10 | 9 | 734 | 3 | 2 | 0 | 1 | 0 | 0 | 13 | 6 | 8 | 9 | 0 | 13 | 5 | 7 | — | — | 0 | 3 | 1 | — | +7 |
| Season | Apps | St | Min | G | A | Pk | Y | R | 2Y | Sh | SoT | Fls | Fld | Off | Crs | Int | TkW | PkW | PkC | OG | Cmp | Sub | PPG | +/- |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2025-26 | 12 | 8 | 715 | 5 | 2 | 0 | 3 | 0 | 0 | 12 | 7 | 13 | 15 | 1 | 32 | 3 | 7 | — | — | 0 | 3 | 4 | 2.50 | +15 |
| Total | 12 | 8 | 715 | 5 | 2 | 0 | 3 | 0 | 0 | 12 | 7 | 13 | 15 | 1 | 32 | 3 | 7 | — | — | 0 | 3 | 4 | — | +15 |
| Season | Apps | St | Min | G | A | Pk | Y | R | 2Y | Sh | SoT | Fls | Fld | Off | Crs | Int | TkW | PkW | PkC | OG | Cmp | Sub | PPG | +/- |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2023-24 | 12 | 10 | 890 | 3 | 3 | 0 | 2 | 0 | 0 | 9 | 4 | 8 | 20 | 0 | 14 | 4 | 6 | — | — | 0 | 6 | 2 | 1.86 | +4 |
| Total | 12 | 10 | 890 | 3 | 3 | 0 | 2 | 0 | 0 | 9 | 4 | 8 | 20 | 0 | 14 | 4 | 6 | — | — | 0 | 6 | 2 | — | +4 |