동경 126°03′, 북위 34°22′에 위치하며, 진도(珍島)와 상조도(上鳥島) 사이에 있다. 하조도(下鳥島)에서 북쪽으로 11㎞, 진도군 임회면 서망항에서 북서쪽으로 9㎞ 지점에 있다. 면적은 1.33㎢이고, 해안선 길이는 4.5㎞이다.
조선 후기까지 석남도(石南島)로 불리다가 1912년에 지금의 성남도로 표기가 바뀌었다. 과거에 해적들이 조세운반선의 곡물 등을 노략질하며 살아왔는데 당시 해적 두목은 자신의 성이 성(城)씨이고, 이 섬이 남쪽에 있다는 점을 연결하여 ‘성남도’라 부르게 되었다고 하는 설이 있다.
지질은 대부분 능주층군으로 이루어져 있다. 해안지역을 제외하면 비교적 완만한 경사의 산지(최고 높이 104m)가 대부분이다. 해안은 암석해안이 대부분이고 북쪽과 서쪽 해안 일대에는 높은 해식애(海蝕崖)가 발달해 있다. 남쪽 해안에 위치한 만입부(灣入部)에는 사빈해안이 형성되어 있다. 1월 평균기온은 -0.6℃, 8월 평균기온은 22.4℃, 연강수량은 1,019㎜이다.
2010년 기준으로 인구는 48명(남 21명, 여 27명)이 거주하고 있으며, 세대수는 29세대이다. 선착장이 위치한 남쪽의 만 주변에 취락이 분포하며 정기여객선이 운항되고 있다. 토지이용 현황은 논 0.004㎢, 밭 0.19㎢, 임야 1.12㎢이다. 주민의 대부분이 어업과 농업을 겸하고 있다. 주요 농산물로는 고구마·유채·마늘 등이 생산된다. 근해에서 멸치와 잡어 등을 어획하며 서쪽 수역에서 김과 톳 양식이 이루어진다.