W latach 70. był członkiem Związku Młodzieży Wiejskiej, Socjalistycznego Związku Studentów Polskich (zasiadał w radzie wydziałowej), Zjednoczonego Stronnictwa Ludowego i Towarzystwa Przyjaźni Polsko-Radzieckiej. Od 1979 do 1981 był członkiem Polskiej Zjednoczonej Partii Robotniczej (w 1980 był szefem POP w sądzie). W kwietniu 1981 został członkiem krajowego sądu koleżeńskiego Związku Socjalistycznej Młodzieży Polskiej. W latach 80. należał do „Solidarności”. Od 1990 związany z samorządem, pełnił m.in. funkcję przewodniczącego rady miejskiej w Kwidzynie. W 1991 wstąpił do Kongresu Liberalno-Demokratycznego, a w 1994 do Unii Wolności, z której odszedł w 2001. W tym samym roku związał się z Platformą Obywatelską.

W wyborach samorządowych w 1998 bezskutecznie ubiegał się o mandat radnego sejmiku pomorskiego z ramienia UW. W latach 2002–2005 był radnym województwa z listy koalicji POPiS. W 2005 został wybrany do Sejmu V kadencji w okręgu gdańskim. W wyborach w 2007 po raz drugi uzyskał mandat poselski, otrzymując 10 671 głosów. W wyborach w 2011 z powodzeniem ubiegał się o reelekcję, dostał 9913 głosów.