본관은 경주(慶州). 자는 사적(士迪). 김세진(金世珍)의 증손으로, 할아버지는 김두정(金斗井)이고, 아버지는 이조참판 김용경(金龍慶)이며, 어머니는 정언을 지낸 강이상(姜履相)의 딸이다.
1731년(영조 7) 정시 문과에 병과로 급제하여 검열을 거쳐 사간원·홍문관의 청요직(淸要職)을 두루 거쳤다. 특히 1734년 사간원정언으로 재임할 때 붕당(朋黨) 타파와 보민(保民)의 요체를 상소하였다.
그해에 겸춘추(兼春秋)로 있으면서 한림(翰林) 천거를 두고 서로 자신이 지지하는 사람을 쓰려고 조영국(趙榮國)과 다투어 물의를 일으켰다. 그 뒤 다시 홍문관에 들어갔으며 1741년에 서원훼철의 금지를 주장하였고, 그해에 원경하(元景夏)와 사이가 벌어져 조정에 새로운 당을 만든다고 탄핵하다가 도리어 삭직을 당하였다.
뒤에 다시 서용되어 동래부사를 거쳐 1747년 대사간에 발탁되었다. 문신관료들을 대상으로 한 정시(庭試)에 급제하여 왕의 신임을 받았으며, 도승지·이조참판·경기관찰사·함경도관찰사 등 내외요직을 두루 역임하였다.
1757년 대사헌으로 재임할 때 백성의 고통을 덜어주기 위한 양전(量田)의 실시를 주장하였고, 나중에 우참찬에 이르렀다. 시호는 효간(孝簡)이다.