Ukończył z wyróżnieniem Akademię Muzyczną im. Grażyny i Kiejstuta Bacewiczów w Łodzi w klasie śpiewu solowego Piotra Micińskiego. Zadebiutował w 2003 r., jeszcze podczas studiów, partią Guglielma w Così fan tutte Mozarta na scenie Teatru Wielkiego w Łodzi.
W 2007 r. został solistą Warszawskiej Opery Kameralnej, gdzie po raz pierwszy wystąpił w roli Figara w „Cyruliku Sewilskim” Rossiniego (reż. Jitka Stokalska). Od tamtej pory stale wspłópracuje z WOK śpiewając partie Papagena w „Czarodziejskim Flecie” i Guglielma w „Così fan tutte”, podczas Festiwali Mozartowskich. W 2010 r. pojawił się w roli Nicka Shadowa w „Żywocie Rozpustnika” Strawińskiego (reż. Marek Weiss). Brał udział w tournée Warszawskiej Opery Kameralnej w Japonii („Cyrulik Sewilski”, „Wolny Strzelec”, „Czarodziejski Flet”), Hiszpanii („Cyrulik Sewilski”) i we Francji („Czarodziejski Flet”, „Così fan tutte”).
Artysta zaśpiewał partię Jontka w wileńskiej wersji „Halki” Moniuszki w Operze Lwowskiej w 2012 r. Współpracuje również z Teatrem Wielkim w Łodzi, gdzie wykonał partie: Maksymiliana w „Kandydzie” Bernsteina (czerwiec 2005; reż . Tomasz Konina), tytułową w „Cyruliku Sewilskim” Rossiniego (styczeń 2014; reż. Natalia Babińska) oraz Eisensteina w „Zemście Nietoperza” J. Straussa (styczeń 2018; reż. Giorgio Madia).
W 2011 r. zadebiutował w Operze Bałtyckiej w Gdańsku w tytułowej roli w „Eugeniuszu Onieginie” Czajkowskiego (reż. Marek Weiss). W tym samym roku wystąpił w jednej z głównych ról w prapremierze „Madame Curie” Sikory (reż. Marek Weiss), wystawionej w siedzibie UNESCO w Paryżu oraz w Tianjin Grand Theatre w Chinach. W Operze Bałtyckiej śpiewa partie: Escamilla w „Carmen” Bizeta (reż. Marek Weiss), Aleksandra Głowa w „Graczach” Szostakowicza/Meyera (reż. Andrzej Chyra), Jagona w „Otellu” Verdiego (kwiecień 2015), ponadto w „Ubu Rex” Pendereckiego (reż. Janusz Wiśniewski), uznanym za spektakl roku 2013.
Udany debiut w Operze Wrocławskiej w tytułowej roli „Eugeniusza Oniegina” przyniósł kolejne partie m. in. Zurga w „Poławiaczach pereł” Bizeta, Figaro w „Cyruliku Sewilskim”, Dandini w „Kopciuszku” Rossiniego, a także Escamillo, w widowisku operowym „Carmen”, przygotowywanym na Stadionie Śląskim we Wrocławiu dla 25 tysięcznej widowni.
Od 2018 roku na stałe związany jest z Operą i Filharmonią Podlaską w Białymstoku, gdzie występuje w głównych partiach, w spektaklach „Cyganeria” (Marcello), „Zemsta Nietoperza” (Eisenstein), „Rycerskość Wieśniacza” (Alfio), „Baron Cygański” (Homonay), „Wesoła Wdówka” (Daniło).
W 2017 roku rozpoczął współpracę z Teatrem Wielkim Operą Narodową w Warszawie, gdzie występował w „Umarłym Mieście” Korngolda, „Madame Butterfly” Pucciniego oraz w „Królu Rogerze” Szymanowskiego. W sezonie 2019/2020 zadebiutował rolą Janusza w „Halce” Moniuszki także w reżyserii Mariusza Trelińskiego.