Tíz idény töltött Svájcban
A miskolci születésű, a védelem minden posztján bevethető futballista a Pattantyús Általános Iskola tanulójaként, a Góliát FC-ben kezdett játszani. Később a Diósgyőri VTK játékosa lett, 2000. május 20-án, az MTK elleni mérkőzésen bemutatkozott az NB I-ben. (Juhász Roland is akkor debütált, a másik csapatban.) A következő szezont a Vasasban töltötte, majd 2001 nyarán, 18 évesen az Újpest soraiba lépett. 2002-ben Magyar Kupa- és Szuperkupa-győztes lett, 2006 augusztusáig 91 bajnoki mérkőzésen szerepelt az Újpestben. (2002-ben fél idényt a klub fiókcsapatában, a Fóti SE-ben töltött.) Huszonhárom évesen Belgiumba, a Sint-Truiden (franciául: St.-Trond) együtteséhez szerződött, de csak egyetlen idényre. 2007. július 16-án a svájci élvonalban szereplő FC Sionhoz igazolt, amelynek 2016-ig volt tagja. A piros-fehérekkel háromszor (2007, 2011, 2015) is megnyerte a Svájci Kupát, a második alkalommal döntő gólt fejelt. (Sőt, gólt fejelt előtte a Biel elleni elődöntőben is!) A svájci élvonalban, a Super League-ben 31 gólt szerzett. Legeredményesebb idénye a 2011–2012-es volt, amelyben kilenc góllal nemcsak klubja házi gólkirálya, de – két bázeli, Alexander Frei és Marco Streller mögött, négyes holtversenyben – az élvonal harmadik leggólerősebb játékosa lett. A svájci sajtóban fontos fejes góljai miatt „sioni Puyolként” emlegették.
Emlékezetes affér” Messivel
Hazaszerződése után 2018-ig játszott az élvonalban, a Puskás Akadémia FC színeiben. Utána is Felcsúton maradt, az edzői stábban dolgozik, sőt azóta is minden idényben volt mérkőzése játékosként a PAFC második vagy harmadik csapatában, a bajnokságban. A válogatottban 2004. november 30., Szlovákia ellen mutatkozott be, 2015. szeptember 7-én, az északírek elleni belfasti találkozón játszott utoljára. A nemzeti tizenegy örökranglistáján visszavonulásakor a tizedik helyen állt. 2005-ben „áldozatként” járta be a neve a világsajtót: az alig egy perccel korábban pályára lépett argentin újonc, Lionel Messi az ő megütéséért kapott piros lapot a Puskás Ferenc-stadionban.