Professionista dal 2012, ha vinto la classifica riservata ai giovani al Tour de Romandie 2013 e ha indossato la maglia bianca anche al Giro d'Italia dello stesso anno.
Nel 2017 passa al Team Sunweb. Dopo essere arrivato settimo al Tour de Romandie partecipa al Giro d'Italia con la funzione di aiutante del compagno Tom Dumoulin, impegnato nella lotta per la vittoria finale. È però costretto al ritiro per infortunio nel finale della nona frazione, con arrivo in salita al Blockhaus, quando impatta con una moto della polizia ferma a bordo strada.[1] Dopo essersi piazzato quarto al Tour de Pologne prende il via della Vuelta a España con i gradi di capitano della sua squadra; conclude la corsa spagnola al quarto posto, a pochi secondo dal podio, che perde al termine della penultima frazione quando non riesce a reggere il ritmo di Ilnur Zakarin sull'Angliru. Insieme ai compagni della Sunweb vince la cronometro a squadre ai Campionati del Mondo di Bergen.[2]
A inizio 2018 si piazza secondo all'Abu Dhabi Tour, gara di World Tour. Dopo essere arrivato quinto al Tour de Suisse si infortuna nel corso del campionato nazionale ed è costretto a saltare il Tour de France che avrebbe dovuto correre in appoggio del capitano e connazionale Tom Dumoulin.[3] Disputa quindi la Vuelta a España piazzandosi decimo in classifica generale. Nel settembre 2020 lascia dopo tre anni il Team Sunweb, per firmare un contratto biennale con la Bora-Hansgrohe.[4] Nell'ottobre dello stesso anno arriva il primo podio in carriera in un grande giro, piazzandosi 3º nella classifica finale generale del Giro d'Italia 2020, dopo aver indossato anche la maglia rosa per due giorni.[5][6]