무과에 급제하여 부장(部將)·영장(營將) 등을 역임하고, 1809년(순조 9) 순천군수가 되었다. 1811년 12월 곽산에서 홍경래(洪景來)가 난을 일으키자, 부하 장졸을 거느리고 적을 요격하기 위하여 출전하였다.
순영중군(巡營中軍) 이정회(李鼎會)와 군을 합하여 곽산으로 진격하다가, 송림에서 홍경래의 군과 만나 혈전 끝에 적군을 대파하는 공을 세웠다. 이듬해 군을 정주성으로 돌려 서울에서 내려온 관군과 합세하고, 우영장이 되어 서소문을 공격, 정주성을 함락시키는 데 공을 세웠다.
많은 적병을 포로로 잡고, 철산을 회복하는 데 참가하는 등 홍경래 정벌에 큰 공을 세웠다. 그러나 함종군수 허항(許沆)이 의주전투에서 전사할 때, 가까운 거리에 있으면서 적극적으로 출병하여 구하지 못하였다는 것이 일시 문제가 되어, 절제사의 조사를 받아 유배형을 받았다.
그러나 1813년 홍경래의 난 때의 전투참가자에 대한 재평가과정에서 공로가 긍정적으로 평가되어 복권되고 한 계급이 높아지게 되었으며, 1823년에는 경상좌도수군절도사가 되었다.