동경 126°17′, 북위 34°57′에 위치한다. 무안군 운남면에서 서남쪽으로 1㎞, 목포에서 서북쪽으로 26㎞ 지점에 있다. 면적은 6.25㎢, 해안선 길이는 14.5㎞이다.
백제시대에는 아차산현에 속하였다가 757년(경덕왕 16)에 무안군에 편입되었다. 고려시대에는 물량군으로 개칭되었다가 1172년(명종 2)에 무안현에 속하였다. 무안현은 1895년(고종 32)에 무안군이 되었고, 1969년에 무안군에서 신안군이 분리됨에 따라 신안군 압해면 소속이 되었다.
고려 태조의 숙부인 왕망이 왕의 자리를 탐하여 이곳에 성을 쌓고 살았다 하여 ‘고(古)’ 자를 따고와 섬의 모양이 귀와 같다 하여 ‘이(耳)’ 자를 따서 고이도라 부르게 되었다고 전한다. 또 섬의 형태가 고양이(고이)처럼 생겼기 때문에 고이도가 되었다고도 한다. 광복 전까지는 왕도(王島)라고도 불리었다.
지질은 능주층군과 산성화산암류, 그리고 편마암류로 구성되어 있다. 섬 전체가 완만한 구릉지(최고봉 65.3m)로, 해안 주위의 갯벌은 간척 사업을 통해 염전이나 농경지로 변하였다. 최저기온은 –1.9℃, 최고기온은 29.1℃, 연강수량은 1,126㎜(2009년)이다.
2009년 기준으로 인구는 295명(남 162명, 여133명)이고, 세대수는 145세대이다. 취락은 사동·고장·대촌·칠동 마을에 집중 분포하며, 선착장이 있는 진번 마을이 섬의 중심지이다. 주산업은 농업으로 전체 가구의 80% 정도(115가구)가 전업농가이다.
토지이용 현황은 논 0.61㎢, 밭 1.39㎢, 임야 3.31㎢이다. 주요 농산물은 쌀·감자이고, 그 밖에 보리·콩·마늘 등이 산출된다. 수산물로는 바지락·숭어·낙지 등이 주로 잡히고, 김양식도 한다.
왕망이 고려왕실의 전복을 꾀하며 왕이라 자칭하고 살았던 섬으로, 지금도 1㎞가 넘는 성벽과 집터가 남아 있다. 왕이 살았다 하여 높은 구릉지를 왕산이라 부르고, 정월 보름날이면 이곳에서 제를 지낸다. 교육시설로는 압해초등학교 고이분교장이 있다.