Выхаванец школы футбольнага клуба «Мінск», з 2010 года гуляў за дубль клуба. Другую палову сезона 2012 правёў у Другой лізе ў фарм-клубе «Мінск-2». У сезоне 2013 вярнуўся ў асноўную каманду, звычайна гуляючы за дубль. 24 чэрвеня 2013 года дэбютаваў у Вышэйшай лізе, адгуляўшы увесь матч з мазырскай «Славіяй» (3:2). Усяго ў сезоне 2013 правёў 4 матчы ў аснове.
У сезоне 2014 стаў часцей прыцягвацца да асноўнага складу. Звычайна выхадзіў на замену, але часам з’яўляўся на полі і ў стартавым складзе. У снежні 2014 года падоўжыў кантракт з «Мінскам»[2]. У сезоне 2015 ужо трывала замацаваўся ў аснове, выступаючы на пазіцыі цэнтральнага або левага абаронцы.
У пачатку 2017 года стаў капітанам каманды, аднак у чэрвені 2017 года разарваў пагадненне з «Мінскам»[3]. У ліпені 2017 года папоўніў склад мінскага «Тарпеда»[4], дзе стаў трывалым іграком асновы. Сезон 2018 пачынаў у стартавым складзе, у чэрвені не гуляў з-за траўмы, а з верасня з’яўляўся на полі нерэгулярна. У сезоне 2019 быў асноўным абаронцам, толькі ў маі не гуляў з-за траўмы.
У ліпені 2019 года перайшоў у брэсцкі «Рух»[5]. У якасці іграка стартавага складу дапамог камандзе выйсці ў Вышэйшую лігу. У пачатку 2020 года не прыцягваўся да міжсезонных збораў і афіцыйных матчаў каманды, а ў маі 2020 года кантракт з «Рухам» па пагадненні бакоў быў разарваны[6].
З 2021 года працуе ў якасці футбольнага суддзі. У красавіку 2022 года быў упершыню прызначаны на абслугоўванне матча Вышэйшай лігі[7].