Hornby played for the youth teams at Hednesford Town and Redditch United, before turning professional after signing a one-year contract with Jimmy Floyd Hasselbaink's Burton Albion in June 2015. He joined National League North side Brackley Town on an initial one-month loan in October 2015, and went on to remain an ever-present for the rest of the 2015–16 season as the "Saints" successfully avoided relegation. Brackley manager Kevin Wilkin named him as his player of the season, and Hornby also picked up the club's player's player of the season award. Speaking in May 2016, Nigel Clough said that "he's impressed us very much since we've come in", and "the plan with him is to get him out on loan, if we can do, to League Two or the National League". He returned on loan to the National League North in June 2016 with newly relegated club Kidderminster Harriers. Harriers ended the 2016–17 season in second place, and lost out to Chorley in the play-off semi-finals; manager John Eustace praised Hornby's performance in the play-offs.
Port Vale
Hornby signed a two-year contract with EFL League Two club Port Vale in June 2017. He faced competition for the first team spot from Rob Lainton, Ryan Boot, and Joe Slinn. He made his debut for the "Valiants" in the first round of the EFL Cup on 9 August, coming on for Lainton – who had suffered a serious thigh injury – at half-time during a 4–1 defeat to Leeds United at Elland Road. He made his debut in the English Football Leaguethree days later, in a 3–2 loss to Wycombe Wanderers at Vale Park, and with Hornby conceding six goals within the space of 135 minutes, manager Michael Brown said that he was considering signing a new goalkeeper as Hornby was thrown "in the deep end" despite being "a young boy" with "a good future." Hornby picked up an injury in October and was ruled out of action for six weeks. On 7 December, he joined National League club Chester on an initial one-month loan. "Blues" manager Marcus Bignot signed Hornby to provide competition for Alex Lynch, following the departure of back-up goalkeeper Nathan Vaughan. Having established himself in the "Seals" first-team, the loan deal was initially extended by a further month, and then until the end of the 2017–18 season. However he was recalled by Port Vale manager Neil Aspin on 26 February after Lainton picked up an injury. He got his chance to stake a first-team place under Aspin after Boot picked up an injury at the start of April. He played well in the end of season run-in to help the club to avoid relegation, leading Aspin to say that "now he has proved a point and now he puts himself in a really good position to compete for the number one jersey next season." Despite playing well in pre-season friendlies he began the 2018–19 season as back-up to experienced new signing Scott Brown, and was limited to appearances in the group stages of the EFL Trophy. Brown went on to be named as the club's Player of the Year whilst Hornby was restricted to reserve team matches despite impressing in those games.
Bradford City
In May 2019, after rejecting a new contract offer from Port Vale, Hornby signed a two-year contract with fellow League Two club Bradford City. He made his debut for the "Bantams" in the EFL Cup on 13 August, in a 4–0 defeat to Preston North End at Valley Parade. He made his second appearance in the EFL Trophy on 3 September, helping Bradford to beat Bolton Wanderers 4–3 on penalties following a 1–1 draw. He moved on loan to A.F.C. Fylde on 7 October after manager Gary Bowyer wanted Hornby to play regular football rather than sit on the bench as cover for Richard O'Donnell. Dave Challinor stated that he brought Hornby to the "Coasters" after goalkeepers James Montgomery and Dan Lavercombe suffered a loss of confidence following Fylde's record of 29 goals conceded in the opening 15 games of the National League season.