본관은 광산(光山). 자는 자중(子中) 또는 충백(忠伯). 김상현(金尙鉉)의 증손으로, 할아버지는 김익환(金益煥)이고, 아버지는 김종범(金宗範)이며, 어머니는 남응로(南膺老)의 딸이다.
1783년(정조 7) 별시 문과에 병과로 급제하여, 주서·태천현감(泰川縣監)을 거쳐 좌부승지·대사간 등을 지냈다. 1801년(순조 1)부터 안주목사·여주목사를 지냈고, 1812년에는 양주목사로서 원릉(元陵)의 보수공사에 공을 세워 가의대부로 승진하였다. 1813년 한성부판윤에 임명되었다.