Calvin Miller signed for Celtic in 2010, aged 12.
In addition to domestic tournaments (he was in the squad which won the Scottish Youth Cup in 2015, and started and scored in the competition's 2017 final, Miller featured in several international youth tournaments during his Celtic youth career such as the NextGen Series and the UEFA Youth League. In May 2016 he was named in a match day squad for the first time and also signed a new contract running until 2019. Earlier that year he had been marked by the Scottish press as one of the 'three to watch' from the youth team.
Miller made his league and competitive debut against Partick Thistle on 20 December 2016. He received praise for his performance in the match, which Celtic won. It was at this point that his manager Brendan Rodgers revealed that Miller, who had previously been considered a winger or forward in his youth career with the club, was retraining in a more defensive position. Rodgers also expressed his hope that Miller could flourish in his new role in a similar manner to his previous trainee Ryan Bertrand.
He did not feature for the senior team again until 8 August 2017, when he played the full 90 minutes in a 5–0 win over Kilmarnock in the Scottish League Cup, with regular left-back Kieran Tierney filling in as a central defender.
Miller started at left-back on 19 August 2017 in the Scottish Premiership, again against Kilmarnock, and was given man of the match by Sky Sports. His side won 2–0 with goals from James Forrest and Callum McGregor. He was selected in further home fixtures against St Johnstone in February 2018 and Kilmarnock again in May, being replaced in the second half by Tierney in both matches, which ended in 0–0 draws after Celtic made several other changes which appeared to affect their rhythm as a unit.
Miller signed a new contract with Celtic in August 2018, tying him to the club until summer 2020 with the possibility of extension. Speaking on his future, he stated that his short-term aim was to secure a loan move to gain further experience.
On 31 August 2018, Miller moved to fellow Premiership club Dundee on loan. He made his debut from the bench on 1 September in a 3–1 home defeat to Motherwell. On 23 October, he missed an opportunity to score his first senior goal when he sent a penalty kick wide of the post in an eventual 3–0 defeat to Heart of Midlothian. On 18 December he did score, netting Dundee's consolation goal in a 5–1 loss away to Aberdeen. His loan, intended originally to be for the full season, was curtailed at the end of December 2018.
On 31 January 2019, Miller joined Scottish Championship club Ayr United on loan until the end of the 2018–19 season.
In October 2020 Calvin signed a deal to join Harrogate Town.