According to the United States Census Bureau, the town has a total area of 22.2 square miles (57 km2), of which, 20.6 square miles (53 km2) of it is land and 1.6 square miles (4.1 km2) of it (7.38%) is water.
Dennis spans the width of Cape Cod, with Cape Cod Bay to the north, Brewster to the northeast, Harwich to the southeast, Nantucket Sound to the south, and Yarmouth to the west. The town is about ten miles east of Barnstable, twenty-four miles east of the Sagamore Bridge, and seventy-eight miles southeast of Boston. The Town of Dennis comprises the villages of Dennis Port, Dennis Village (North Dennis), East Dennis, South Dennis and West Dennis.
Dennis is crossed from east to west by Cape Cod's three main routes, U.S. Route 6, Route 6A and Route 28, as well as Route 134, which crosses the town from Route 28 to Route 6A. East of the Route 134 exit, Route 6 (also known as the Mid-Cape Highway) downgrades from a four lane divided highway to a two lane highway, divided only by markers.
The nearest regional air service can be reached at the Barnstable Municipal Airport, and the nearest national and international air service can be reached at Logan International Airport in Boston.
The town lies on the eastern banks of the Bass River, which nearly divides the cape in half. There are several small ponds and lakes in town, as well as Sesuit Harbor to the north and West Dennis Harbor to the south.