Holden Beach is located in southern Brunswick County 33°54′55″N 78°17′11″W. The town occupies an 8-mile-long (13 km) barrier island on the Atlantic Ocean, bounded by Shallotte Inlet to the west, Lockwoods Folly Inlet to the east, and the Intracoastal Waterway to the north. One road, North Carolina Highway 130, crosses the Intracoastal Waterway to connect Holden Beach with the mainland. By NC 130 it is 10 miles (16 km) northwest to the town of Shallotte.
According to the United States Census Bureau, the town of Holden Beach has a total area of 3.4 square miles (8.9 km2). 2.7 square miles (7.0 km2) of it is land and 0.69 square miles (1.8 km2) of it (20.72%) is water.