강원도 북부 원산만 연안에 있는 시. 남부는 원산시, 남서부는 법동군, 북부와 서부는 천내군과 접해 있으며 동부는 동해에 면해 있다. 동서(문천동~가은리) 간의 길이는 21km, 남북(문천동~삼동리) 간의 길이는 19km이고, 해안선의 길이는 74.95km이며, 시 면적은 277.524㎢로서 도 전체면적의 2.5%를 차지한다. 현재 행정구역은 16동 14리로 구성되어 있다.
1413년(조선시대)에 함경도 문주(文州)를 군으로 개편하면서 고려 때 ‘주’자가 있는 고을이름을 ‘산’이나 ‘천’으로 고치는 규례에 따라 고쳐 문천군이라고 하였다. 문주는 예로부터 ‘물골’이라고 부르던 지명을 한자로 표기하면서 음이 비슷한 ‘문(文)’자에 당시 규례에 따라 ‘주(州)’자를 붙여서 유래된 지명이다.
문천시 지역의 남창리 등 지역에서 발굴된 유적유물들은 일찍 고대사회에서부터 문천시 지역에 이미 사람이 정착해 살았던 것을 말해주고 있다. 삼국시대에 고구려의 영토로 되어 매성(妹城), 이균(伊均)으로 불렸다. 고구려가 멸망한 후에 신라의 영토로 되었다가, 후에 발해의 판도로 되어 있었다. 발해국이 패망한 뒤 외족들이 오랫동안 차지하고 있다가, 고려시대에 고려의 영토로 되어 문주(文州)라 하였다. 그 후 한동안 원나라의 지배 하에 있다가, 고려 공민왕시기에 이르러 다시 고려의 땅으로 되었다.
조선왕조가 들어선 이후 문천군으로 개칭되어 영길도(永吉道)에 소속되었다가, 1416년에 함길도(咸吉道)에, 1470년에는 영안도(永安道)에, 1509년에는 함경도(咸鏡道)에 소속되었다. 1896년에 13도제를 실시하면서 함경남도 문천군으로 개편되어 군내면(郡內面), 초한면(草閑面), 도사면(都社面), 명효면(明孝面), 구산면(龜山面), 운림면(雲林面) 등 6개 면을 관할하였다. 1914년 행정구역 폐합 시에 도사면·초한면이 병합되어 도초면(都草面)으로 되었다. 1939년에 군내면과 도초면 일부를 병합하여 문천면(文川面)으로, 명효면과 구산면을 병합하여 명구면(明龜面)으로 각각 개편하였다. 1943년에 도초면이 천내읍(川內邑)으로 승격되었고 덕원군의 풍상면(豊上面), 풍하면(豊下面), 부내면이 편입되었는데, 이때 부내면을 덕원면으로 개칭하였다.
광복 후 1946년 9월에 강원도 문천군으로 개편되면서 북성면을 문천면에 편입하는 동시에 문천면의 일부를 분리하여 문성면(文城面)을 신설하였으며, 천내읍이 천내면(川內面)으로 강등되어 문천면, 명구면, 운림면, 풍상면, 천내면, 문성면, 덕원면, 풍하면 등 8면을 관할하였다. 1952년 군면리 대폐합에 따라 풍상면·풍하면의 전체 리와 운림면의 1개 리는 강원도 법동군에, 천내면 일부와 명구면 일부는 함경남도 고원군에, 천내면의 대부분 지역과 명구면 일부·운림면 일부는 강원도 천내군에 각각 편입하고 나머지 문천면·문성면·덕원면의 전체 리와 명구면의 일부·운림면의 일부를 병합하여 강원도 문천군을 새로 구성하였다.
1953년 12월에 교성리 일부가 옥평리에, 송죽리 일부가 천내군 장풍리에 편입되었고, 1958년 6월에 야태노동자구가 문평노동자구(文坪勞動者區)로 개칭되었다. 1961년 12월에 덕원리, 부운리, 석현리, 장림리가 원산시에 이관되었고, 1967년 10월에 옥평리가 옥평노동자구(玉坪勞動者區)로 승격되었다. 1972년 7월에 문천군이 폐지되면서 문천읍, 문평노동자구, 옥평노동자구, 가은노동자구, 가평리, 남창리, 교성리, 용정리, 부방리, 용탄리, 고암리, 신안리, 삼동리, 삼일리, 답촌리, 죽산리, 신성리, 영삼리가 원산시에, 덕흥리, 석전리, 삼화리, 송죽리, 신송리가 천내군에 각각 편입되었다.
1976년 6월에 강원도 문천군을 다시 설치하면서 원산시의 문천동(文川洞), 성문동(城門洞), 문평동(文坪洞), 가은동(佳銀洞), 가평동(柯坪洞), 남창리, 옥평동(玉坪洞), 교성리, 부방리, 용정리, 용탄리, 고암동(庫巖洞), 신안리, 삼동리, 삼일리, 답촌리, 덕흥리, 석전리와 천내군의 삼화리, 송죽리, 신송리들이 다시 문천군에 소속되었다. 이때 문천동과 성문동을 병합하여 문천읍으로 개편하였고 문평동, 가은동, 가평동, 옥평동, 고암동 등이 각각 노동자구로 승격되었다. 1984년 6월에 가은노동자구가 가은리로 강등되었다.
1991년 5월에 문천군이 시로 승격되면서 문천읍 일부를 분리하여 관풍동(關豊洞)·성문동(城門洞)·문천동(文川洞)·삼오동(三五洞)·해안동(海岸洞)·장백동(長白洞)·은정동(恩情洞)을, 문평노동자구 일부를 분리하여 문평동(文坪洞)·강철동(鋼鐵洞)을, 문천읍 나머지 일부와 문평노동자구 나머지 일부를 병합하여 해방산동(解放山洞)을 각각 신설하였고 고암노동자구가 고암동·황석동(黃石洞)으로, 신안리가 신안동(新安洞)·북항동(北港洞)으로, 옥평노동자구가 옥평동으로, 가평노동자구가 가평동으로 각각 개편되었다.
2003년 현재 행정구역은 16동(가평동, 강철동, 고암동, 관풍동, 문천동, 문평동, 북항동, 삼오동, 성문동, 신안동, 옥평동, 은정동, 장백동, 해방산동, 해안동, 황석동), 14리(가은리, 교성리, 남창리, 답촌리, 덕흥리, 용정리, 용탄리, 부방리, 삼동리, 삼일리, 삼화리, 석전리, 송죽리, 신송리)로 구성되어 있다.