At a glance
- Full name
- Joshua James Leslie Duffus
- Born
- 15 Dec 2004
- Age today
- 21
- Nationality
- England
Career by season
49 recorded appearances| Season | Competition | Team | Apps | Starts | Goals | Assists | Minutes | Cards |
|---|---|---|---|---|---|---|---|---|
| 26/27 | Ligue 2 | AS Saint-Étienne | 11 | 0 | 1 | 0 | 237 | 1 |
| 25/26 | Ligue 2 | AS Saint-Étienne | 27 | 7 | 7 | 3 | 808 | 1 |
| 25/26 | Ligue 1/Ligue 2 play-off | AS Saint-Étienne | 3 | 1 | 0 | 0 | 99 | 0 |
| 23/24 | UEFA Europa League | Brighton & Hove Albion | 1 | 0 | 0 | 0 | 2 | 0 |
| 23/24 | International Friendly Games | England U19 | 4 | 1 | 0 | 2 | 156 | 0 |
| 22/23 | International Friendly Games | England U19 | 1 | 1 | 0 | 0 | 90 | 0 |
| 21/22 | International Friendly Games | England U17 | 2 | 1 | 0 | 0 | 55 | 0 |
Appearances in our supported competitions. Goals, assists and minutes come from match reports where we have them.
Match log
Newest first| Date | Competition | Match | Score | Minutes | Goals |
|---|---|---|---|---|---|
| 31 Oct 2026 | Ligue 2 | EA Guingamp v AS Saint-ÉtienneSubstitute, on 68′ | 3 – 0 | 22 | |
| 24 Oct 2026 | Ligue 2 | AS Saint-Étienne v FC NantesSubstitute, on 83′ | 1 – 0 | 7 | |
| 17 Oct 2026 | Ligue 2 | Red Star FC v AS Saint-ÉtienneSubstitute, on 72′ | 0 – 1 | 18 | |
| 10 Oct 2026 | Ligue 2 | AS Saint-Étienne v Rodez AFSubstitute, on 71′ | 2 – 0 | 19 | |
| 19 Sep 2026 | Ligue 2 | FC Metz v AS Saint-ÉtienneSubstitute, on 80′ | 2 – 2 | 10 | |
| 12 Sep 2026 | Ligue 2 | USL Dunkerque v AS Saint-ÉtienneSubstitute, on 70′ | 2 – 1 | 20 | |
| 05 Sep 2026 | Ligue 2 | AS Saint-Étienne v Montpellier HSCSubstitute, on 64′ | 3 – 1 | 26 | 1 |
| 31 Aug 2026 | Ligue 2 | Dijon FCO v AS Saint-ÉtienneSubstitute, on 65′ | 2 – 3 | 25 | |
| 22 Aug 2026 | Ligue 2 | AS Saint-Étienne v Grenoble Foot 38Substitute, on 62′ | 4 – 0 | 28 | |
| 14 Aug 2026 | Ligue 2 | AS Saint-Étienne v Clermont Foot 63Substitute, on 72′ | 3 – 1 | 18 | |
| 08 Aug 2026 | Ligue 2 | FC Sochaux-Montbéliard v AS Saint-ÉtienneSubstitute, on 46′ | 0 – 3 | 44 | |
| 29 May 2026 | Ligue 1/Ligue 2 play-off | OGC Nice v AS Saint-ÉtienneSubstitute, on 84′ | 4 – 1 | 16 | |
| 26 May 2026 | Ligue 1/Ligue 2 play-off | AS Saint-Étienne v OGC NiceSubstitute, on 67′ | 0 – 0 | 23 | |
| 15 May 2026 | Ligue 1/Ligue 2 play-off | AS Saint-Étienne v Rodez AF | 0 – 0 | 60 | |
| 09 May 2026 | Ligue 2 | AS Saint-Étienne v Amiens SC | 5 – 0 | 56 | 2 |
| 02 May 2026 | Ligue 2 | Rodez AF v AS Saint-Étienne | 2 – 1 | 73 | |
| 25 Apr 2026 | Ligue 2 | AS Saint-Étienne v ESTAC TroyesSubstitute, on 16′ | 0 – 3 | 74 | |
| 18 Apr 2026 | Ligue 2 | SC Bastia v AS Saint-ÉtienneSubstitute, on 53′ | 2 – 0 | 37 | |
| 11 Apr 2026 | Ligue 2 | AS Saint-Étienne v USL DunkerqueSubstitute, on 64′ | 2 – 1 | 26 | |
| 04 Apr 2026 | Ligue 2 | AS Nancy-Lorraine v AS Saint-ÉtienneSubstitute, on 68′ | 1 – 1 | 22 |
Career transfers
3 recorded movesAll recorded career moves, newest first.
| Date | From | To | Move | Fee |
|---|---|---|---|---|
| 13 Aug 2025 | Brighton & Hove Albion U21 | AS Saint-Étienne | Transfer | Free |
| 01 Jul 2023 | Brighton & Hove Albion U18 | Brighton & Hove Albion U21 | Internal move | — |
| 01 Jul 2021 | Brighton & Hove Albion Youth | Brighton & Hove Albion U18 | Internal move | — |
Contracts and market values are not available yet.