w redakcji Przeglądu Katolickiego, w latach 1989–1990 w Tygodniku Solidarność, gdzie kierował działem historycznym, a w latach 1990–1992 w tygodniku Spotkania, jako zastępca redaktora naczelnego.
Od 1994 roku pracował w „Rzeczpospolitej”, był tam m.in. kierownikiem działu zagranicznego, w latach 2000–2005 I zastępcą redaktora naczelnego tej gazety, kierował też jej dodatkiem „Plus Minus”. Z „Rzeczpospolitej” został zwolniony przez Pawła Lisickiego w 2007.
Był redaktorem naczelnym słownika Opozycja w PRL. Słownik biograficzny 1956–89 (tom 1 (2000), t. 2 (2002), t. 3 (2006)), przygotowanego przez Ośrodek Karta. W latach 2007–2008 pracował w Biurze Edukacji Publicznej IPN, gdzie zajmował się dziejami opozycji demokratycznej, był członkiem rady nadzorczej wydawnictwa Presspublica, wydawcy „Rzeczpospolitej”. Od 2012 roku zatrudniony w Europejskim Centrum Solidarności. Jest redaktorem naczelnym pisma ECS-u "Wolność i Solidarność. Studia z dziejów opozycji wobec komunizmu i dyktatury". Od 2013 jest profesorem w Collegium Civitas. Pełni ponadto funkcję wiceprzewodniczącego Stowarzyszenia „Archiwum Solidarności”. Autor kilkudziesięciu artykułów naukowych i książek o najnowszej historii Polski. W 2009 obronił pracę doktorską w Instytucie Studiów Politycznych PAN.