Nel 2013 fa il suo esordio nel circuito ITF, vince il primo titolo in doppio nel 2015 e l'anno seguente il primo in singolare.
Nel maggio 2017 debutta in un torneo del circuito principale qualificandosi per il Geneva Open e viene eliminato al primo turno da Sam Querrey in due set. Un mese più tardi si qualifica anche al main draw dell'ATP 250 sull'erba di Adalia e ottiene i primi successi nel circuito maggiore eliminando Víctor Estrella Burgos e Marsel İlhan; viene sconfitto nei quarti di finale da Yūichi Sugita.
2018-2019, stop per infortunio, rientro e top 300
Nel febbraio 2018 perde la sua prima finale Challenger al Burnie International contro Stéphane Robert. Un mese dopo subisce un doppio infortunio all'addome e alla spalla ed è costretto a stare lontano dal circuito per il resto della stagione. Al rientro nel gennaio 2019 subisce tre sconfitte di fila e per una settimana esce dal ranking. Riparte dai tornei ITF e verso fine anno risale nella top 300 con alcuni successi nei Futures e altri discreti risultati nei Challenger.[2]
2020, quattro semifinali Challenger e ingresso in top 200, ottavi al Roland Garros
Nel 2020 raggiunge 4 semifinali nei Challenger e in settembre entra per la prima volta nella top 200. A fine mese supera le qualificazioni al Roland Garros, entrando così per la prima volta in carriera nel tabellone principale di un torneo del Grande Slam; sconfigge quindi nell'ordine Feliciano Lopez, Jan-Lennard Struff e il nº 8 del mondo Matteo Berrettini, nella sua prima vittoria su un top 10; esce di scena agli ottavi di finale per mano di Pablo Carreño Busta e a fine torneo si trova al 122º posto del ranking.
2021, prime semifinali ATP, 3 titoli Challenger e ingresso in top 100
Dopo un inizio stagione senza risultati di grande rilievo, nel luglio 2021 vince il primo titolo Challenger in carriera a Braunschweig, non perde alcun set per tutto il torneo e in finale lascia tre soli giochi a Henri Laaksonen. A fine mese disputa la sua prima semifinale ATP a Umago grazie ai successi su Gianluca Mager e Dušan Lajović, e viene eliminato in tre set da Richard Gasquet. Si ripete una settimana dopo a Kitzbühel, dove sconfigge Laslo Đere, Marco Cecchinato e di nuovo Mager nei quarti, per essere sconfitto al terzo set in semifinale da Pedro Martínez. Conferma il buon momento di forma vincendo in agosto il Challenger di Lüdenscheid superando in finale Nicolás Jarry, risultato che gli consente di portare il miglior ranking alla 106ª posizione. Fa il suo ingresso nella top 100 a novembre dopo la finale persa al Knoxville Challenger. A fine mese sconfigge Alejandro Tabilo nella finale del Challenger di Puerto Vallarta e sale all'84º posto mondiale.
2022, 53º nel ranking, tre titoli Challenger
Continua a salire nel ranking nei primi mesi del 2022 con i quarti di finale raggiunti all'ATP di Pune, dove viene sconfitto da João Sousa, e la finale disputata in marzo nel Challenger 125 di Phoenix, persa contro Denis Kudla. Vince un nuovo torneo in maggio al Challenger 100 di Heilbronn con il successo in finale su Andrej Martin, e la settimana dopo sale al 53º posto del ranking. Nei mesi successivi raccoglie una serie quasi ininterrotta di sconfitte e a ottobre esce dalla top 100. Vi fa rientro a fine mese battendo Tomás Martín Etcheverry nella finale del Lima Challenger II e il mese dopo sconfigge Federico Coria in finale al Challenger di Guayaquil.
2023, quarto di finale in un Masters 1000, un titolo Challenger e top 50
Sconfitto nei primi tornei ATP stagionali, cede contro Stan Wawrinka anche al suo esordio in Coppa Davis nella sfida persa 2-3 dalla Germania contro la Svizzera. Vince il primo incontro stagionale in febbraio al primo turno del 250 di Dallas. Nel periodo successivo raccoglie qualche discreto risultato solo nei Challenger. Vince il primo trofeo stagionale ad aprile al Challenger 125 di Sarasota battendo in finale Daniel Elahi Galán e rientra nella top 100. Si spinge per la prima volta nei quarti di finale in un Masters 1000 a Madrid, entra nel main draw come lucky loser ed elimina nell'ordine Oscar Otte, Yannick Hanfmann e Jaume Munar, viene sconfitto in due set da Borna Ćorić e a fine torneo risale alla 65ª posizione ATP. Sconfitto al secondo turno a Roma, si spinge fino al terzo al Roland Garros, dove cede a Grigor Dimitrov dopo aver eliminato al quinto set il nº 8 del mondo Jannik Sinner. Il buon momento si interrompe con i negativi risultati nei tornei sull'erba.
Torna al successo nei tornei su terra battuta e raggiunge i quarti ad Amburgo con la vittoria sul nº 7 del mondo Andrej Rublëv, al quale concede solo 4 giochi, per poi essere eliminato da Zhang Zhizhen. Vince il suo primo incontro in carriera agli Us Open superando Constant Lestienne per poi cedere al secondo turno dopo quattro set ad Alexander Zverev. Trova il suo primo successo in carriera anche in Coppa Davis nella sfida vinta 4-0 contro la Bosnia Erzegovina. Il 2 ottobre porta il best ranking alla 47ª posizione e nel finale di stagione non ottiene risultati significativi
2024: terzo turno a Madrid, due finali Challenger
Ad inizio 2024 si ritira durante il match dei quarti di finale al torneo ATP di Auckland dopo aver eliminato Félix Auger-Aliassime. Eliminato al primo turno nei tre tornei successivi, tra cui gli Australian Open, a febbraio sconfigge il nº 6 del mondo Alexander Zverev all'Abierto Mexicano de Tenis ed esce al turno successivo. Torna a mettersi in evidenza raggiungendo il terzo turno al Masters 1000 di Madrid. Eliminato al secondo turno al Roland Garros, perde la finale al Challenger 125 dell'Emilia-Romagna Tennis Cup contro Jesper de Jong. Dopo l'eliminazione al secondo turno a Wimbledon subisce altre cinque sconfitte consecutive. A settembre raggiunge la finale al Challenger di Siviglia e perde in due set contro Roberto Carballés Baena.