Shelby is a city in and the county seat of Cleveland County, North Carolina, United States. It lies near the western edge of the Charlotte combined statistical area. The population was 20,323 at the 2010 census.