Indian Beach is located in the middle of Bogue Banks, the next to last island in a chain of barrier islands known as the Southern OuterBanks, aka Crystal Coast. The town is divided in the middle by the unincorporated community of Salter Path.