본관은 안동(安東). 자는 정보(正甫). 대흥(大興) 출신. 김수민(金壽民)의 증손으로, 할아버지는 김성도(金成道)이고, 아버지는 부제학 김시찬(金時粲)이며, 어머니는 이채조(李采朝)의 딸이다.
1773년(영조 49) 증광 문과에 병과로 급제하였다. 성품이 강직하고 의리감이 깊어 교리로 있을 때 친구인 홍상간(洪相簡)이 역적으로 죽음을 당하자 그 시체를 거두어 매장하였다. 이로 인해 유배를 당하였으며, 1778년(정조 2)에 특별 방면되었다.
그 뒤 1791년 평안도사(平安都事)에 임명되어 평안도의 폐해를 상소하기도 하였다. 같은 해 대사성에 임명되었으나 이듬해에 파직당하였다가, 1793년 황해도관찰사로 기용되어 재직 중 임지에서 죽었다.