동경 126°21′, 북위 34°52′에 위치한다. 목포에서 북서쪽으로 10㎞ 지점에 있고, 압해도(押海島)에서는 0.3㎞ 떨어져 있다. 면적은 1.6㎢이고, 해안선의 길이는 6.5㎞이다. 자연산 난초가 많이 자생하여 가란도라 불리게 되었다.
지질은 주로 산성화산암류와 편마암류로 되어있다. 가장 높은 곳이 74.5m로 비교적 완만한 경사의 구릉지와 평지로 이루어져 있다. 해안은 동북쪽이 길게 돌출되어 있고, 개펄이 넓게 발달하여 제방으로 막아 농경지로 이용된다. 남쪽에는 까치섬·솔섬 등의 부속 섬이 있다. 해안선은 대체로 단조롭다.
섬의 동쪽과 남쪽은 산지로 이루어져 있으며, 서쪽은 저평하여 농경지 형성에 유리한 조건을 갖추고 있다. 최저기온은 -1.9℃이고 최고기온은 29.1℃이다. 연평균강수량은 1,126㎜(2009년)이다.
가란도는 백제시대에는 아차산현에 속하였다가 757년(경덕왕 16)에 무안군에 편입되었다. 고려시대에는 물량군으로 개칭되었다가 1172년(명종 2)에 무안현에 속하였다. 무안현은 1895년(고종 32)에 무안군이 되었고, 1969년에 무안군에서 신안군이 분리됨에 따라 신안군 압해면 소속이 되었다.