본관은 의성(義城). 자는 자야(子野), 호는 귀와(龜窩). 김언겸(金彦謙)의 증손으로, 할아버지는 김수천(金壽天)이고, 아버지는 생원 김광헌(金光憲)이며, 어머니는 남이로(南以老)의 딸이다. 이상정(李象靖)의 문인이다.
1773년(영조 49) 사마시를 거쳐 1777년(정조 1) 증광문과에 병과로 급제하였다. 1781년에 스승 이상정이 죽자 스승의 유문(遺文)을 정리하였다. 1787년 전적(典籍)을 거쳐 지평(持平)·정언(正言)을 역임하였고 단양군수에 제수되었으며, 세자시강원문학을 거쳐 예조참판에 이르렀다.
재직시에는 서리(胥吏)를 엄단하고 청렴하여 군민들 사이에 명성이 높았으며, 문학에 남달리 뛰어났고 필법이 높아 능히 한 체제를 이룰 만하였다.