길이 666.9㎞. 함흥·북청·성진·나남·경성·청진·부령·회령을 거쳐 길림 방면, 그리고 두만강변 철도와 연결되는 노선이다.
중국과 소련에 대한 군사적 목적과 북부의 풍부한 수산자원·수력자원·지하자원을 개발할 목적, 그리고 길림·간도 지방과의 빠른 연결을 목적으로 일제가 부설한 노선이다.
1914년 10월 남부의 원산∼문천 간, 북부의 청진∼회령 간을 동시 착공하여 군선∼반송 구간을 끝으로 1928년 9월 1일 원산∼회령 간 629.4㎞의 구간이 개통되었다. 그 해 10월 1일 나남에서 함경선 전통식이 거행되었다.
그 뒤 철도 12개년 계획에 의하여 본래 도문철도회사(圖們鐵道會社) 노선이었던 회령∼동관간 59.6㎞를 1929년 4월 1일 매수하여 도문서부선으로 개칭하고 1931년 5월 11일 관제 개축 공사에 착수하였다.
그 중 회령∼상삼봉 간은 1932년 11월 1일에 준공되고 나머지 상삼봉∼동관 간은 1933년 8월 1일 준공되어 별도 건설 중이던 도문동부선과 연결되었다. 이로써, 웅기 방면에서 서울까지 직통열차 운행이 가능하게 됨으로써 만주·소련과 접한 우리 나라 변방 국경까지 철도가 연결되어 서울∼웅기 간의 대간선이 완성되었다.
함경선 본선 건설에 따라서 각 지선도 건설되었는데, 회령탄광을 개발하기 위한 회령탄광선(회령∼계림) 10.6㎞를 1928년 8월에, 풍산·갑산 방면과 연결되는 북청선(신북청∼북청) 9.3㎞를 1929년 9월에, 이원철산의 광석을 반출하기 위한 철산선(나흥∼이원철산) 3.0㎞를 1929년 9월에, 차호선(증산∼차호) 4.9㎞를 1929년 9월에, 천내리 시멘트 개발을 위한 천내리선(용담∼천내리) 4.4㎞를 1927년 11월에 각각 개통하였다.
이 노선은 영흥·함흥·길주 평야 등의 동해안 해안평야 지대와 정어리·명태의 중요한 생산지인 군선을 통과한다. 그리고 이 노선 부근에는 해안의 즐비한 기암·학사대·주을온천 등의 관광 명승지가 있다. 건설 당시 노선 부근에는 인구가 아주 적었고, 출어기에는 노동력이 부족하여 남한 지방에서 인부를 모집하기도 하였다.