熊本県の北部を流れる菊池川の上流、熊本市から北東約25kmの場所に位置し、市中央部から南西部は熊本平野の北東端にあたる。大宰府府官の流れをくむ菊池氏の本拠地・隈府(わいふ)を中心に市街地が形成されている。
東部は阿蘇外輪山の天然生広葉樹で覆われ、野鳥の宝庫。その間を縫う清冽な菊池川の源流が大小の瀬と渕と滝をつくり菊池渓谷をなしている。菊池渓谷は日本名水百選にも選ばれており、夏でも平均水温が13度で避暑地として知られ、毎年4月の山開き以後30 - 40万人の人が訪れる。この一帯の国有林は1965年には九州で初めて自然休養林に指定されている。
北部は大分県と接している。