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 roku, jeszcze podczas studiów,
partią Guglielma w Così fan tutte Mozarta na scenie Teatru Wielkiego w Łodzi.
W 2007 roku został solistą Warszawskiej Opery Kameralnej, gdzie po raz pierwszy wystąpił w roli Figara w Cyruliku sewilskim Rossiniego (reż. Jitka Stokalska), a następnie wykonywał partie: Papagena w Czarodziejskim flecie i Guglielma w Così fan tutte, podczas Festiwali Mozartowskich, Nicka Shadowa w Żywocie rozpustnika Strawińskiego (reż. Marek Weiss). Brał również udział w tournée WOK po Japonii (Cyrulik sewilski, Wolny strzelec, Czarodziejski flet), Hiszpanii (Cyrulik sewilski) i Francji (Czarodziejski flet, Così fan tutte). Zaśpiewał partię Jontka w Halce (wileńskiej) Moniuszki w Operze Lwowskiej (2012).
Współpracuje z Teatrem Wielkim w Łodzi, gdzie wykonał partie: Maksymiliana w Kandydzie Bernsteina (2005; reż. Tomasz Konina), tytułową w Cyruliku sewilskim (2014; reż. Natalia Babińska) oraz Eisensteina w Zemście nietoperza J. Straussa (2018; reż. Giorgio Madia). W 2011 roku zadebiutował w Operze Bałtyckiej w Gdańsku tytułową rolą 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 (2015) i Szlachcianki w Ubu Rex Pendereckiego (reż. Janusz Wiśniewski) uznanym za spektakl roku 2013. Udany debiut w Operze Wrocławskiej w tytułowej roli w Eugeniuszu Onieginie przyniósł mu kolejne partie m.in. Zurgi w Poławiaczach pereł Bizeta, Figara w Cyruliku sewilskim, Dandiniego w Kopciuszku Rossiniego, a także Escamilla 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 takich, jak: 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ą, gdzie występował w spektaklach Mariusza Trelińskiego: Umarłym mieście Korngolda, Madame Butterfly Pucciniego, Królu Rogerze Szymanowskiego i Halce Moniuszki jako Janusz.
''