Elkin is a town in Surry and Wilkes counties in the U.S. state of North Carolina, along the Yadkin River. Elkin shares its name with the surrounding township of Elkin Township. The population was 4,001 at the 2010 census.