Ubicado en la región sur del estado, colinda al norte con el municipio de Huanusco, al sur con Nochistlán de Mejía y Apozol, al este una vez más con Huanusco y el estado de Jalisco, y al oeste con los municipios de Tepechitlán y Tlaltenango. Posee una extensión territorial de 733 kilómetros cuadrados y una altura promedio de 2,460 metros sobre el nivel del mar.