Elgin is a city in Fayette County, Iowa, United States. The population was 685 at the time of the 2020 census.