Madison is a town in Carroll County, New Hampshire, United States. The population was 2,502 at the 2010 census. Madison includes the village of Silver Lake and the village district of Eidelweiss.