Conti was born and raised in Lecco, Lombardy. In 2002, he had a successful trial at AC Milan yet refused to join the team due to his dislike of the club's youth training center in Linate area of the city, as well as its far-from-home location. He also had an offer from the club's cross-city rivals, Inter Milan, yet eventually joined Atalanta's youth academy where he would play together with Mattia Caldara and Roberto Gagliardini for over a decade.[3]
In July 2013, Conti was loaned to Lega Pro side Perugia.[4] He made his professional debut on 4 August 2013, starting in a 1–0 Coppa Italia home loss against Savona. His first league appearance occurred later that month, a 2–2 away draw against Nocerina. Conti made 16 league appearances, helping his team achieve promotion to Serie B.
On 10 July 2014, Conti moved to a fellow second-tier team Virtus Lanciano, in a season-long loan deal.[5] Conti made 24 league appearances while his team finished 14th out of 22. In the summer of 2015, he returned to Atalanta and was included in the first team squad for the upcoming Serie A season.
On 30 September 2015, Conti signed a new contract with Atalanta until July 2019.[6] He made his debut for the club on 2 December, in a 3–1 loss against Udinese in Coppa Italia. Conti made his debut in Serie A on 6 January 2016, in a 2–1 loss against the same opponent.[7] His first goal in the competition occurred on 3 February, in a 2–1 win against Verona.[8]
Conti managed to score eight goals in 33 appearances during the 2016–17 Serie A season, setting a personal record for scoring. His main playing position was a right wing-back in a 3–4–3 formation.[9]
On 15 September 2017, during Milan's training session, Conti suffered an injury to his left anterior cruciate ligament. Having undergone knee surgery, he was in recovery until March 2018. However, shortly after resuming training and playing a few matches with the reserves, Conti suffered a recurring ACL injury that sidelined him for the rest of the year.[13][14]
On 22 December 2018, Conti made his highly anticipated return to the pitch, coming on as a substitute for Ignazio Abate eleven minutes before the final whistle in a 1–0 home Serie A defeat against Fiorentina.[15] Before the end of the season, he appeared in 14 more games (mostly as a substitute) and made three assists.
Despite the two unsuccessful seasons in Milan, Conti declined transfer offers from Parma and Werder Bremen during the summer of 2019, opting to stay at the club and work with its new head coach Marco Giampaolo, under whom he made just two appearances before Stefano Pioli took over the managerial duties in October 2019.[16] Since Pioli's appointment, Conti began to play consistently as a starting right back until yet another knee injury sustained on 21 July 2020 in the away Serie A game against Sassuolo.[17][18] On 29 October 2020, Conti returned to the pitch as a substitute in the home Europa League game against Sparta Prague and in the reverse fixture on 10 December 2020 returned to the starting line up for the first time since his summer injury; as several senior players were given a rest, Conti served as the team's captain for the first time in his Milan career.[19]
Parma
On 21 January 2021, Conti joined Parma on a six-month loan deal containing an obligatory purchase clause.[20] However, as Parma finished the season on the bottom of the table and were relegated to Serie B, the clause was not triggered.
Conti can play as a right-back or a right wing-back, although he is more comfortable in the latter position. Gifted with a great pace, he thrives going forward and making overlapping runs. He excels at staying wide and crossing but also has a knack for getting into the box and scoring himself. His great stamina allows him to make attacking runs and rapidly get back into defense when needed.[27]