충청남도 예산 출신. 명성황후시해사건과 단발령을 계기로 1896년 1월 정산에서 수백명의 의병을 규합하여, 채광묵(蔡光默)·안병찬(安炳瓚)·이세영(李世永) 등이 이끄는 각지의 의병과 홍주성에서 합류한 뒤 김복한(金福漢)을 의병대장에 추대하면서 의병항쟁을 개시하였다.
그리고 정제기(鄭濟驥)와 함께 홍주의병진의 항전근거지를 구축하기 위하여 대흥의 임존산성(任存山城)을 수축하는 임무를 맡았다. 그러나 관찰사 이승우(李勝宇)의 변심으로 전기(前期) 홍주의병진은 곧 와해되었다.
그 뒤 을사조약의 강제 체결로 국권이 상실되자 재기항쟁을 결심하고 안병찬·채광묵 등과 1906년 3월 중순 대흥에서 거의하여 홍주성으로 진격하는 도중에 일본군과의 전투에서 패해, 동료 수십명과 함께 잡혀 공주감옥에 수감되고 말았다.
얼마 뒤 동지들의 도움으로 석방되어 5월 19일 민종식(閔宗植) 의병진이 홍주성을 공략하고 의병진을 재편성할 때 참모사(參謀士)로 임명되어 5월 31일 성이 함락될 때까지 일본군과 치열한 수성전(守城戰)을 벌였다.
홍주성전투에서 패한 뒤에도 예산읍을 근거지로 삼고 김덕진(金德鎭)·황영수(黃英秀) 등과 같이 민종식을 의병대장에 다시 추대, 의병항쟁을 시도하였지만 일제에게 기밀이 누설되어 무산되고 말았다.
1986년 건국포장, 1990년 애국장이 추서되었다.