본관은 광산(光山). 경기도 여주 출신. 은산현감(殷山縣監) 김영수(金永秀)의 아들이다.
1885년 정시문과에 병과로 급제하여 출사(出仕)한 뒤, 1887년에는 다시 한림소시(翰林召試)에 선발되었다.
그 뒤 설서(說書)·응교(應敎)·필선(弼善)·이조정랑·성균관대사성·이조참의·이조참판 등을 두루 거친 뒤, 1897년 궁내부특진관이 되었다.
그러나 1901년 군인들에게 단발(斷髮)의 조칙이 내려지자 궁내부특진관으로 있으면서 그 조칙의 철회를 주장하다가 탄핵을 받아 파면, 유배되었다가 이듬해 풀려났다. 그 뒤 경상남도관찰사와 황해도관찰사를 역임하였다.