Inizia a giocare a calcio nelle giovanili del San Marino.[6] All'età di 16 anni viene tesserato dal Cesena, che lo aggrega al proprio settore giovanile.[6][7] Nella stagione 2017-2018 partecipa con la formazione Primavera dei bianconeri al Campionato Primavera 2, nel quale totalizza 5 reti in 18 presenze. A fine stagione rimane svincolato dopo l'esclusione del Cesena dai campionati professionistici, dovuta a gravi inadempienze economiche.[4][8][9][10]
Crotone
Il 3 agosto 2018 viene ingaggiato dal Crotone, in Serie B, firmando un contratto quinquennale.[11][12] Esordisce con i pitagorici il 5 agosto contro la Giana Erminio nel secondo turno di Coppa Italia (gara vinta 4-0), subentrando al 78' al posto di Simy.[13] Nel corso della stagione viene convocato con regolarità in prima squadra, senza tuttavia trovare altre presenze, e partecipa altresì con la formazione Primavera al Campionato Primavera 2, in cui realizza una rete in 10 presenze. A fine stagione riceve il Golden Boy, premio assegnato ogni anno al miglior calciatore sammarinese Under-23 dalla Federazione Sammarinese Giuoco Calcio.[14][15] All'inizio della stagione successiva, il 18 agosto 2019, colleziona la sua seconda presenza con il Crotone, giocando da titolare la partita casalinga contro la Sampdoria (1-3), per il terzo turno di Coppa Italia.[16]
Monopoli
Non trovando spazio in squadra, il 28 agosto 2019 passa in prestito al Monopoli, in Serie C.[17] Esordisce con i biancoverdi il 31 agosto, subentrando al 58' nella partita Paganese-Monopoli (2-0), valida per la terza giornata di campionato.[18] Il 6 ottobre gioca la sua prima partita da titolare con i pugliesi, all'ottava giornata di campionato (Sicula Leonzio-Monopoli 1-2).[19] Termina la stagione regolare – conclusa a marzo a causa dell'emergenza epidemiologica da COVID-19,[20] con il Monopoli terzo in classifica – con 7 presenze.
Ritorno al Cesena
Il 23 settembre 2020 viene annunciato il suo ritorno in prestito al Cesena, in Serie C.[21][22] Esordisce con i bianconeri il 27 settembre, subentrando al 57' nella partita Virtus Verona-Cesena (1-1), valida per la prima giornata di campionato.[23] Gioca per la prima volta da titolare con la maglia del Cesena il 18 ottobre, nella vittoria esterna contro il Gubbio (1-2) nella quinta giornata.[24] Conclude il campionato, chiuso dai romagnoli al 7º posto e con la successiva eliminazione al secondo turno dei play-off, con 23 presenze.
Lucchese
Il 14 agosto 2021 si trasferisce in prestito per una stagione alla Lucchese, in Serie C.[25] Fa il suo esordio con i toscani il 21 agosto, giocando da titolare la partita Legnago-Lucchese (3-0 a tavolino dopo lo 0-3 sul campo), valida per il primo turno di Coppa Italia Serie C; nell'occasione realizza, al 70º minuto, la sua prima rete tra i professionisti, quella del momentaneo 0-2.[26][27] Il 29 agosto seguente esordisce in campionato con i rossoneri, giocando da titolare nella vittoriosa trasferta contro l'Imolese (0-1) nella prima giornata.[28] Segna la sua prima rete in campionato il 19 settembre, realizzando il gol del definitivo 2-1 nella vittoria casalinga contro l'Olbia nella 4ª giornata.[29] Con 2 reti in 31 presenze, contribuisce all'8º posto dei suoi in campionato e alla qualificazione ai play-off, che vedono i rossoneri eliminati al primo turno.[30] Conclude la stagione con 33 presenze e 3 reti in tutte le competizioni.
Olbia
Il 15 luglio 2022 firma un biennale con l'Olbia, in Serie C.[31] Esordisce con i sardi il 9 ottobre, subentrando al 65' nella partita Olbia-Fiorenzuola (1-2), valida per la 7ª giornata di campionato; nella stessa partita realizza, all'87º minuto, la sua prima rete con la nuova maglia.[32] Gioca per la prima volta da titolare con la maglia dell'Olbia il 16 ottobre, nella sconfitta esterna contro la Virtus Entella per 2-1 nell'8ª giornata.[33] Conclude il suo primo campionato con i bianchi con 21 presenze e 4 reti, contribuendo al 14º posto finale.
Nella stagione successiva esordisce, da titolare, il 3 settembre 2023, nella partita casalinga vinta per 2-1 contro il Cesena, valida per la prima giornata di campionato, nella quale realizza al 28º minuto la rete che apre le marcature.[34] Conclude il suo secondo campionato con l'Olbia con 33 presenze e 4 reti, che non impediscono la retrocessione dei sardi in Serie D. Nelle due stagioni trascorse all'Olbia totalizza 55 presenze e 8 reti.
Torres
Il 6 settembre 2024 si trasferisce a parametro zero alla Torres, in Serie C.[35][36] Fa il suo esordio con i rossoblù il 18 settembre, subentrando al 75° minuto nella partita casalinga contro il Milan Futuro (0-0), recupero della terza giornata di campionato.[37] Il 21 settembre gioca per la prima volta da titolare nella partita pareggiata 1-1 contro il Pineto, valida per la quinta giornata.[38] Segna la sua prima rete con i sardi il 24 settembre, alla sesta giornata, sbloccando il risultato al 30° minuto di Sestri Levante-Torres (1-2).[39][40]
Nazionale
Nazionali giovanili
Ha rappresentato le nazionali sammarinesi under 17 e under 19 nelle qualificazioni ai campionati europei di categoria.
Mette a segno la sua prima rete in nazionale il 5 settembre 2021, siglando il gol del momentaneo 1-4 al 48º minuto di San Marino-Polonia (1-7), gara valida per le qualificazioni ai Mondiali 2022, giocata al San Marino Stadium.[45][46]
Il 26 marzo 2023 indossa per la prima volta la fascia di capitano, in occasione della gara persa 2-0 contro la Slovenia, valida per le qualificazioni agli Europei 2024.[47][48]
Il 15 novembre 2024 realizza la sua seconda rete in nazionale, trasformando al 92' un calcio di rigore da lui stesso procurato che fissa il risultato (1-1) nella partita San Marino-Gibilterra di Nations League; con questo gol diviene il quarto giocatore, dopo Andy Selva, Manuel Marani e Filippo Berardi, a segnare più di una rete con la nazionale sammarinese.[49][50][51]
Il 18 novembre successivo mette a segno la sua terza rete in nazionale, siglando il gol del momentaneo 1-2 al 66º minuto di Liechtenstein-San Marino (1-3) di Nations League, di nuovo su calcio di rigore da lui procurato; con questo gol si laurea capocannoniere della Lega D di Nations League con 2 reti, e contestualmente diventa il secondo miglior marcatore della nazionale, insieme a Filippo Berardi e alle spalle di Andy Selva. Grazie a questa vittoria San Marino vince il proprio gruppo nella Lega D di Nations League e ottiene per la prima volta la promozione in Lega C.[52][53]
^Nanni è un nuovo attaccante dell'Olbia, su olbiacalcio.com, 15 luglio 2022. URL consultato il 15 luglio 2022 (archiviato dall'url originale il 3 giugno 2023).