North Dakota Highway 18
|Maintained by NDDOT|
|Length:||237 mi (381 km)|
|Existed:||1939 – present|
|North end:||PTH 30|
| US 2 near Larimore
I‑94 / US 52 near Casselton
|South end:||SD 25|
North Dakota Highway 18 is a major north–south highway in eastern North Dakota. It runs from Highway 30 at the Canadian border south of Gretna, Manitoba to South Dakota Highway 25 north of Claire City. 
North Dakota Highway 18 starts traveling south at the Canada/United States border south of Gretna, Manitoba. One mile south of the border, the highway crosses the Pembina River and enters Neche. Thirteen miles south of Neche the route begins a concurrency with ND 5. The two routes head west for three miles, then south for one more before entering the city of Cavalier. The ND 5 concurrency ends in Cavalier and ND 18 continues to head south. Thirteen more miles south of Cavalier, ND 18 intersects with ND 66. The highway leaves Pembina County and enters Walsh County four miles south of this intersection.
Just south of the county line is the small city of Hoople, which ND 18 passes just east of. About eight miles south of here, ND 18 forms a short, one-mile concurrency with ND 17, throughout which both highways travel south. The route travels about halfway between the larger cities of Grafton and Park River. Fourteen miles south of the southern end of the ND 17 concurrency, ND 18 enters Grand Forks County.
About three miles into Grand Forks County, the route passes east of Inkster. Fourteen miles south of Inkster, ND 18 intersects with US 2, a major east–west route of the northern United States. Two miles south of this intersection, ND 18 reaches the city of Larimore. Twelve miles south of Larimore, the highway begins another concurrency, this one with ND 15. The routes travel east during this concurrency, passing just north of Northwood. After traveling east for eight miles, the concurrency ends and ND 18 travels south for five miles before entering Traill County.
ND 18 enters Hatton two miles south of the county line. The highway travels south for eight miles before beginning a concurrency with ND 200. The highway travels south for a mile, east for a mile and a half, southeast for a mile, and east for another mile before entering Portland. The highway travels east for a mile before entering Mayville. In Mayville, the concurrency with ND 200 ends and ND 18 begins traveling south once more. The route heads south for ten miles and then east for five before entering Blanchard. Eight miles south of Blanchard, ND 18 enters Cass County.
In Cass County, ND 18 travels south for three miles before entering Hunter. Six miles farther south, the highway heads through Arthur. Fourteen miles south of Arthur, the route turns east and enters Casselton. Turning south again, ND 18 travels for two miles before sharing an interchange with Interstate 94 and US 52. Nine miles south of this interchange, the road heads west for a mile and then south for six miles to enter Leonard. Two miles south of Leonard, ND 18 begins a concurrency with ND 46 along the Cass-Richland county line for five miles. After this concurrency, the highway heads south into Richland County.
Thirteen miles south of the county line, ND 18 serves as the eastern terminus of ND 27. Twelve miles south of this intersection, the highway enters Wyndmere. Directly south of Wyndmere, the road has a junction with ND 13. Seven miles south of the ND 13 intersection, ND 18 turns west for a mile, then south for five more before entering Lidgerwood and beginning a concurrency with ND 11. The routes head east and south through Lidgerwood, then east for two miles. The concurrency ends two miles east of Lidgerwood and ND 18 continues to head south. Nine miles south of the end of the ND 11 concurrency, ND 18 reaches the South Dakota border and is continued farther south as South Dakota Highway 25.
North Dakota Highway 18, like many other North Dakota state highways, was put into alignment in 1939. It has remained in its original alignment since then.
||This section contains a table that is missing mileposts for one or more junctions. Please help by .|
|Pembina||0||0||PTH 30 north – Gretna||Continuation into Manitoba, Canada|
|ND 5 east||Northern end of ND 5 concurrency|
|Cavalier||ND 5 west – Langdon||Southern end of ND 5 concurrency|
|ND 66 – Milton, Drayton|
|Walsh||ND 17 east – Grafton||Northern end of ND 17 concurrency|
|ND 17 west – Park River||Southern end of ND 17 concurrency|
|Grand Forks||US 2 – Devils Lake, Grand Forks|
|ND 15 west – McVille||Western end of ND 15 concurrency|
|ND 15 east – Thompson||Eastern end of ND 15 concurrency|
|Traill||ND 200 west – Finley||Western end of ND 200 concurrency|
|Mayville||ND 200 east – Hillsboro||Eastern end of ND 200 concurrency|
|Cass||Casselton||I‑94 / US 52 – Jamestown, Fargo|
|ND 46 west – Enderlin||Western end of ND 46 concurrency
Entire concurrency is along the county line
|ND 46 east – Kindred||Eastern end of ND 46 concurrency|
|Richland||ND 27 west – Lisbon||Eastern terminus of ND 27|
|Wyndmere||ND 13 – Milnor, Wahpeton|
|Lidgerwood||ND 11 west – Forman||Western end of ND 11 concurrency|
|ND 11 east – Hankinson||Eastern end of ND 11 concurrency|
|Roberts||SD 25 south – Claire City||Continuation into South Dakota|
|1.000 mi = 1.609 km; 1.000 km = 0.621 mi