Corydon is located near the center of Harrison County. Indiana State Road 62 passes through the town from east to west; Interstate 64 passes in the same direction less than a mile north of the town. The state capitol of Indianapolis is about to the north, and the city of Louisville, Kentucky is about to the east. Indian Creek passes through the town; the creek continues to the southwest where it empties into the Ohio River. According to the 2010 census, Corydon has a total area of , all land. As of the census of 2010, there were 3,122 people, 1,341 households, and 716 families residing in the town. The population density was . There were 1,491 housing units at an average density of . The racial makeup of the town was 96.7% White, 0.7% African American, 0.2% Native American, 0.2% Asian, 0.1% Pacific Islander, 0.9% from other races, and 1.2% from two or more races. Hispanic or Latino of any race were 2.6% of the population. There were 1,341 households of which 26.2% had children under the age of 18 living with them, 35.6% were married couples living together, 11.9% had a female householder with no husband present, 5.9% had a male householder with no wife present, and 46.6% were non-families. 41.6% of all households were made up of individuals and 20.5% had someone living alone who was 65 years of age or older. The average household size was 2.14 and the average family size was 2.88. The median age in the town was 40.8 years. 20.5% of residents were under the age of 18; 8.7% were between the ages of 18 and 24; 24.9% were from 25 to 44; 22.4% were from 45 to 64; and 23.4% were 65 years of age or older. The gender makeup of the town was 45.6% male and 54.4% female. As of the census of 2000, there were 2,715 people, 1,171 households, and 674 families residing in the town. The population density was 1,708.1 people per square mile (659.3/km²). There were 1,271 housing units at an average density of 799.6 per square mile (308.6/km²).