According to the United States Census Bureau, the township has a total area of , of which, is land and (0.05%) is water. It is drained by the Little Swatara Creek into the Swatara Creek and the Susquehanna River. Its natural northern boundary is Blue Mountain. Its villages include Bethel, Crosskill Mills (also in Tulpehocken Township,) Frystown, Grimes, Meckville, and Schubert.