Elgin is a city in Fayette County, Iowa, United States. The population was 683 at the 2010 census.