Halmø har et areal på 0,5 km².
Den ligger i det sydfynske øhav, ca. 4 km nordøst for Marstal.
Imellem Ærø og Halmø er det 1 km brede Halmø Sund.
Halmø er ca. 2 km. lang og omkring 350 m. bred.
Halmø er en lang moræneø, hvis nordside består af en 2 km lang kystlinje, hvor der er op til 9 m. høje bakker.
På den fhv. korte øst side er der høje skrænter og mod syd og vest er der strandsøer, en mose og en ubevokset odde, som fører ud til den lille holm, Halmø Hale.