1935년 7월 5일 충청남도 논산군 양촌면에서 김영봉의 장남으로 태어났다. 논산양촌초등학교, 논산연산중학교, 공주농업고등학교, 중앙대학교 법학과를 졸업하였다. 이후 대한일보에서 정치부 기자, 논설위원을 역임하였다.
1971년 제8대 국회의원 선거에서 신민당 후보로 충청남도 논산군 선거구에 출마하여 54.29%의 득표율로 당선되었다. 1972년 10월, 유신에 반대했다는 이유로 군부대에 끌려가서 고문당하였으며 3년 동안 옥고를 치렀다. 1975년 출소한 후에도 신민당 당원으로 활동했으며 1979년 5월 신민당 전당대회 때는 부의장직을 수행하였다.
1985년 제12대 국회의원 선거에서 신한민주당 후보로 충청남도 공주군-논산군 선거구에 출마하여 당선되었다. 당선 후 신한민주당 사무차장에 임명되었다. 1987년 신한민주당을 탈당하여 통일민주당에 입당하였다.
1988년 초 통일민주당 정무위원에 임명되었다. 같은 해 치러진 제13대 국회의원 선거에서 통일민주당 후보로 충청남도 논산군 선거구에 출마하였으나 낙선하였다. 1990년 3당 합당으로 민주자유당이 출범할 때 합류하였다. 김영삼 정권 때 한국종합화학공업 감사를 역임하였다.