W 1968 r. brał udział w strajku studenckim; za działalność opozycyjną usunięty z Uniwersytetu Warszawskiego. Pracę magisterską obronił w 1971 r. W latach 1976 - 1981 współpracował z Komitetem Obrony Robotników. W 1980 r. wstąpił do NSZZ "Solidarność". Internowany w czasie stanu wojennego. Współzałożył Solidarność Pracy, a potem Unię Pracy. Poseł na Sejm trzech poprzednich kadencji. W latach 1992-1997 przewodniczący UP. W 1998 r. wystąpił z partii protestując przeciw zbliżaniu się Unii do SLD. Zastanawia się, czy nie wystartować w wyborach parlamentarnych z listy PSL.