동쪽은 동해의 영흥만에 접해 있다. 일부가 반도를 형성하고 있다. 남쪽으로 원산시, 북쪽으로 천내군, 남서쪽으로 법동군과 접한다. 북동쪽의 해안은 평야이고 남서쪽은 마식령산맥이 통과하는 산지이다. 속고산맥과 천불산맥 또한 이곳에 위치하고 최고봉은 굴뚝봉(772m)이다. 주요 하천으로는 남천강이 있고 산림이 전체 면적의 66%를 차지한다.
옛부터 '물골'이라고 불렀으며, 고구려광개토왕 무렵에 매구루로 불렸다. 고려 때는 수성, 이균 등으로 불렸고 문주방어사가 놓여졌다. 1413년에 주(州)가 들어간 지명을 산(山) 또는 천(川)으로 바꾼다는 규례에 따라 함경도 문천군으로 개칭되었다. 1936년에 군내면과 도초면 남부가 합쳐져 문천면이 설치되었고, 도초면 북부는 천내읍으로 승격하였다. 1942년 4월 덕원군 부내면, 북성면, 풍하면, 풍상면을 편입하고, 부내면을 덕원면으로 개칭하였다.
1945년8월 15일 광복 당시에는 함경남도문천군이었는데, 1946년 9월 북한에 의해 강원도에 편입되었다. 그 후 법동군, 원산시와의 행정 구역 조정을 거쳤다. 1972년에 원산시와 천내군으로 나뉘어 폐지되어 문천읍을 문천동과 성문동으로 변경했다. 1976년에 문천군이 다시 복원되었으며, 원산시 문천동과 성문동을 문천읍으로 개편했다. 1983년에 가은로동자구를 가은리로 개편하고, 1991년에 시로 승격하였다.
경제
문천시에는 아연, 금, 은, 석회석, 돌로마이트, 흑연, 점토가 매장되어 있다. 무연탄 또한 생산되고 공업이 특히 발전해있다. 어업, 축산업, 과수업도 활발하다.