Grafton is a city and the county seat of Walsh County, North Dakota, United States. The population was 4,170 at the 2020 census.