Este municipio colinda al norte con el municipio de Huichapan y Alfajayucan, al este nuevamente con Alfajayucan, Chilcuautla, Tezontepec de Aldama y Tepetitlán, al sur una vez más con Tepetitlán, Tula de Allende, el estado de México y Nopala de Villagrán y finalmente al oeste colinda con los municipios de Nopala y Huichapan. Cuenta con una superficie territorial de 298.10 kilómetros cuadrados y se encuentra situado a una altura promedio de 2,145 metros sobre el nivel del mar.