According to the United States Census Bureau, the township has a total area of, of which is land and, or 4.62%, is water. It is drained by Perkiomen Creek into the Schuylkill River and contains most of the Green Lane Reservoir. It consists mainly of rolling hills, and the only mountainous area is east of Palm on Mill Hill, which contains Montgomery County's highest point. Route 29 is the primary north-to-south route and comes up the Perkiomen Valley from Collegeville into Lehigh County. Route 663 crosses Upper Hanover and meets 29 in Pennsburg. Other local roads of note include Church Road, Geryville Pike, Kutztown Road/Knight Road, School House Road, and Water Street. The township's villages include Chapel, Fruitville, Geryville, Palm, and Perkiomen Heights.
The following three boroughs form a cluster along Route 29 surrounded by Upper Hanover and are listed in north-to-south order:
East Greenville
Pennsburg
Red Hill
Climate
The township has a hot-summer humid continental climate and is in hardiness zones 6b and 7a. The average annual absolute minimum temperature in Palm is -0.4 °F while at the Knight Road bridge over the Green Lane Reservoir it is 0.9 °F.
Demographics
As of the 2010 census, the township was 94.7% White, 1.5% Black or African American, 0.1% Native American, 1.5% Asian, 0.1% Native Hawaiian and Other Pacific Islander, 0.5% were Some Other Race, and 0.7% were two or more races. 1.8% of the population were of Hispanic or Latino ancestry. As of the census of 2000, there were 4,885 people, 1,737 households, and 1,433 families residing in the township. The population density was 241.6 people per square mile. There were 1,764 housing units at an average density of 87.2/sq mi. The racial makeup of the township was 98.06% White, 0.70% African American, 0.14% Native American, 0.31% Asian, 0.33% from other races, and 0.47% from two or more races. Hispanic or Latino of any race were 0.80% of the population. There were 1,737 households, out of which 33.9% had children under the age of 18 living with them, 74.4% were married couplesliving together, 4.3% had a female householder with no husband present, and 17.5% were non-families. 14.4% of all households were made up of individuals, and 6.7% had someone living alone who was 65 years of age or older. The average household size was 2.81 and the average family size was 3.10. In the township the population was spread out, with 24.8% under the age of 18, 6.3% from 18 to 24, 26.4% from 25 to 44, 29.8% from 45 to 64, and 12.6% who were 65 years of age or older. The median age was 40 years. For every 100 females, there were 102.4 males. For every 100 females age 18 and over, there were 100.5 males. The median income for a household in the township was $65,018, and the median income for a family was $69,410. Males had a median income of $40,584 versus $30,701 for females. The per capita income for the township was $24,978. About 3.2% of families and 3.4% of the population were below the poverty line, including 2.0% of those under age 18 and 6.1% of those age 65 or over.