본관은 경주(慶州). 자는 정사(正斯). 김창재(金昌載)의 아들이다.
1888년에 경과별시문과에 병과로 급제하였다. 1889년에 병조정랑이 되고, 그해 8월 주진독리(駐津督理) 김명규(金明圭)의 종사관이 되었다.
1890년에 규장각직각(奎章閣直閣)이 되었고, 이듬해 5월에 예조좌랑이 되었다. 1892년 시강원필선, 그해 6월에 성균관대사성이 되었다.
이듬해에는 인천부사 겸 감리인천항통상사무(仁川府使兼監理仁川港通商事務)에 임명되었으며, 1896년 2월에 홍주부관찰사(洪州府觀察使)로 임명되었으나 그 직을 사양한 까닭으로 그해 6월에 지도군(智島郡) 고군산(古羣山)으로 2년간의 유배형에 처해졌다가 그해 8월에 풀려났다.
1906년 4월 전 참판 민종식(閔宗植)이 을사조약에 반대하여 의병을 일으키자 군사(軍師)의 책임을 맡아 적극 가담하였다. 민종식과 함께 그해 5월 19일 홍주성을 점령하였으며, 5월 30일 일본군에 진압되기 전까지 그 기세를 떨쳤으나 붙잡혀 그해 11월 10년 유형을 받았다가 이듬해 4월에 풀려났다.
1991년 애국장이 추서되었다.