Formé au VS Plabennec, aux côtés notamment d'Olivier Le Gac, il rejoint le Brest Iroise Cyclisme 2000 en 2012. Pour sa première année chez les espoirs, il se met en valeur au début de la saison en terminant cinquième de la Route bretonne[1],[2], dixième du Circuit du Mené et douzième du Grand Prix de Buxerolles en Coupe de France DN1. Au mois d'avril, il connait sa première sélection en équipe de France espoirs pour disputer le ZLM Tour, manche de la Coupe des Nations Espoirs. Il en prend la vingtième place, après avoir joué un rôle d'équipier pour Maxime Daniel, vainqueur à l'arrivée. Début mai, il est victime d'une lourde chute sur l'Essor breton, dont il ressort avec un traumatisme crânien[3]. Rapidement rétabli, il reprend la compétition seulement trois jours plus tard, lors d'une cyclosportive, organisée non loin de chez lui[4]. Durant le mois de juin, il retrouve de bonnes sensations lors du Tour d'Eure-et-Loir, où il se classe quatrième d'une étape[5] et sixième du classement général. En été, il est de nouveau sélectionné en équipe de France pour disputer le championnat d'Europe espoirs, à Goes[6]. Malade, il n'y joue aucun rôle, et abandonne. Toutefois, il réalise une bonne fin de saison, en remportant le Grand Prix de Châteaulin et une épreuve du Trophée Aven-Moros (TAM), disputée entre Saint-Philibert et Trégunc[7].
En début de saison 2013, il effectue un stage avec la formation FDJ[8]. Sur le territoire breton, il termine cinquième de la Flèche de Locminé et septième de la Route bretonne. Dans le même temps, il prend la deuxième place du championnat de France universitaire, derrière Thomas Boudat[9]. Au second semestre, il reporte la finale du Trophée Aven-Moros, organisée à Névez[10]. En 2014, il se classe notamment troisième du Grand Prix de Châteaulin et d'une épreuve de la Ronde Finistérienne, cinquième des Boucles de la Loire et huitième de la Route bretonne. Il obtient son unique succès de la saison en outre-mer, en s'imposant sur la cinquième étape du Tour de Nouvelle-Calédonie[11].
Après deux saisons gâchées par des tendinites[12], il décide de rejoindre l'équipe Côtes d'Armor-Marie Morin en 2015[13]. Au printemps, il se classe quatrième du Circuit du Mené. Durant l'été, il finit troisième du Grand Prix de Fabrègues. En Polynésie française, il s'impose sur la première étape du Tour de Tahiti Nui, au sommet de la montée de Vaitavere[14],[15], et termine troisième du classement général. À son retour en métropole, il obtient deux podiums sur des épreuves du Trophée Aven-Moros.
En 2016, il intègre l'équipe Fybolia-Locminé Auto, en division nationale 3[16]. Il est de nouveau auteur de diverses tops 10, comme une cinquième place au championnat de Bretagne. Trois ans après, il renoue avec la victoire en métropole en s'imposant en solitaire sur le Grand Prix de la Roche-aux-Fées[17]. En catégorie « élite nationale », il se classe onzième de Redon-Redon et des Boucles de l'Austreberthe. En été, il termine huitième d'une étape de l'Estivale bretonne, au Ponthou. Il remporte également en solitaire le Grand Prix Christian Fenioux, manche de la Coupe de France DN3[18].
Le , il annonce mettre un terme à sa carrière, après avoir disputé sa dernière course : la Ronde du Porhoët. En collaboration avec une entreprise de Saint-Malo, il souhaite se consacrer à sa thèse à l'université de Reims, dans l'ergonomie cycliste[19]. Il conserve toutefois une licence à l'OC Locminé-Fybolia[20].