У дорослому футболі дебютував 2000 року виступами за команду клубу «Сеул», в якій провів шість сезонів, взявши участь у 119 матчах чемпіонату.
Своєю грою за цю команду привернув увагу представників тренерського штабу клубу «Зеніт», до складу якого приєднався 2006 року. Відіграв за санкт-петербурзьку команду наступні три сезони своєї ігрової кар'єри. Більшість часу, проведеного у складі «Зеніта», був основним гравцем захисту команди.
Протягом 2010—2011 років грав на батьківщині, де по сезону захищав кольори клубів «Ульсан Хьонде» і «Сеул».