Localizado al sureste del estado de Puebla, este municipio colinda al norte con los municipios de San Antonio Cañada y Vicente Guerrero, al sur con Zicatepec, Coxcatlán y Zoquitlán, al este con Eloxochitlán y finalmente en la parte oeste colinda con los municipios de Altepexi y Tehuacán. Cuenta con una superficie territorial de 325.3 kilómetros cuadrados y una altura promedio de 1,200 metros sobre el nivel del mar.