25 sierpnia 2012 roku sędziował swoje pierwsze spotkanie na poziomie zaplecza Ekstraklasy: był to mecz 4. kolejki I ligi między Olimpią Grudziądz a ŁKS-em Łódź, zakończony wynikiem 3:1. W swym debiutanckim sezonie na tym poziomie był rozjemcą łącznie 8 spotkań pierwszoligowych, a także czterech drugoligowych i jednego na poziomie rundy przedwstępnej Pucharu Polski. Dwa sezony później był arbitrem pierwszoligowym. 24 września 2014 roku był rozjemcą spotkania 1/16 finału Pucharu Polski między, wówczas trzecioligową, Ostrovią 1909 a Ruchem Chorzów, które zakończyło się wynikiem 2:1. Arbiter, w trakcie trwania tego meczu, pokazał pięć żółtych kartek i jedną czerwoną (wszystkie zawodnikom Ruchu), a także jeden rzut karny na rzecz Ostrovii, który zakończył się golem. Mecz zakończył się wynikiem 2:1 na rzecz gospodarzy.

Na poziomie ekstraklasowym był rozjemcą swego pierwszego spotkania 16 kwietnia 2018 roku; był to mecz 31. kolejki Ekstraklasy rozegrany między Wisłą Płock a Wisłą Kraków, który zakończył się dwubramkowym remisem. W 2019 roku znajdował się na liście arbitrów grupy Top-Amator A, do której awansował osiem lat wcześniej – w 2011 roku.