The headline achievement so far is a pair of top-level wins, at Haydock Park and most recently at Warwick in February 2026. Winning one of the biggest races in Britain at Warwick, mid-winter, is the kind of result that gets you noticed in the weighing room. Two top-level wins in four years tells you this isn't a jockey just filling rides — he has already shown he can perform when the occasion demands it.
His most important professional relationship is with trainer Neil Mulholland, and the numbers there are striking. O'Farrell has ridden 219 races for Mulholland and won 28 of them — that's 13 wins for every 100 rides, or roughly 1 in 8. When a trainer keeps putting the same jockey up that regularly, it signals trust. When the results justify it, it signals something more like a genuine partnership.
Right now, O'Farrell is in the kind of form that makes racing interesting to follow. Over the last two weeks he has ridden 4 winners from just 17 races — a win rate of nearly 1 in 4, more than double his seasonal average. Whether that's confidence, timing, or just good horses coming together at once, it's the sort of run that gets punters paying attention.
One other detail worth noting: on very wet, muddy ground he wins at 17% — 4 from 23 races, nearly 1 in 6 — which nudges above his overall average and suggests he handles the grind of difficult conditions well. The one relationship that hasn't clicked is with Getaway Jewel, a horse he has partnered nine times without a win. Nine rides together with nothing to show for it is the kind of stubborn footnote every jockey carries — and one he'll presumably be keen to leave behind.
| Course | Races | Wins | Win rate |
|---|---|---|---|
| Fontwell Park | 33 | 4 | 12.1% |
| Uttoxeter | 29 | 2 | 6.9% |
| Chepstow | 25 | 3 | 12% |
| Worcester | 22 | 2 | 9.1% |
| Taunton | 21 | 3 | 14.3% |
| Ffos Las | 17 | 1 | 5.9% |
| Plumpton | 16 | 5 | 31.2% |
| Wincanton | 15 | 1 | 6.7% |
| Hexham | 15 | 0 | 0% |
| hereford | 12 | 3 | 25% |
| Sedgefield | 12 | 1 | 8.3% |
| Carlisle | 12 | 0 | 0% |
| Stratford-on-Avon | 12 | 0 | 0% |
| Newton Abbot | 11 | 0 | 0% |
| Musselburgh | 10 | 3 | 30% |
| Southwell | 10 | 2 | 20% |
| Market Rasen | 9 | 0 | 0% |
| Ludlow | 8 | 2 | 25% |
| Wetherby | 7 | 0 | 0% |
| Cheltenham | 7 | 0 | 0% |
| Perth | 7 | 0 | 0% |
| Doncaster | 6 | 2 | 33.3% |
| Cartmel | 6 | 2 | 33.3% |
| Bangor-on-Dee | 6 | 0 | 0% |
| Windsor | 6 | 0 | 0% |
| Newcastle | 5 | 1 | 20% |
| Lingfield Park | 5 | 1 | 20% |
| Ayr | 5 | 0 | 0% |
| Kempton Park | 5 | 0 | 0% |
| Warwick | 4 | 2 | 50% |
| Kelso | 4 | 1 | 25% |
| Newbury | 4 | 0 | 0% |
| Fakenham | 4 | 0 | 0% |
| Huntingdon | 4 | 0 | 0% |
| Leicester | 3 | 0 | 0% |
| Sandown Park | 3 | 0 | 0% |
| Exeter | 3 | 0 | 0% |
| Catterick Bridge | 2 | 0 | 0% |
| Aintree | 1 | 0 | 0% |
| Epsom Downs | 1 | 0 | 0% |
| Haydock Park | 1 | 0 | 0% |