동경 125°59′, 북위 34°35′에 위치하며, 장산도에서 서북쪽으로 5㎞ 지점에 있다. 면적은 4.76㎢, 해안선 길이는 16㎞이다. 인근에 있는 기좌도(箕佐島)·도초도(都草島)·장산도(長山島)·하의도(荷衣島) 등의 큰 섬에 둘러싸여 있다.
해변가에 옥돌이 많이 있어 ‘옥도’라고 부르게 되었다고 한다. 또는 섬의 형상이 ‘옥(玉)’자를 이룬다고 해서 붙여진 지명이라고도 한다.
지질은 반암류와 편마암류로 이루어져 있다. 최고 높이는 106m이며 대부분이 낮은 산지로 이루어져 있다. 해안선은 비교적 단조롭지만 중앙부에 깊은 만이 형성되어 있다. 남쪽과 동쪽 해안에는 방조제를 쌓아 만든 논과 염전이 펼쳐져 있다. 1월 평균기온은 2℃, 8월 평균기온은 26℃, 연강수량은 1,024㎜이다.
임진왜란 당시 해남윤씨가 처음으로 들어와 살았다고 전한다. 2009년 기준으로 인구는 126명(남 71명, 여 55명)이고, 세대수는 59세대이다. 취락은 섬 중앙부의 옥도리·벌금리·장치리에 집중되어 있다.
토지이용 현황은 논 0.24㎢, 밭 0.82㎢, 임야 3.49㎢이다.주민들은 대부분 농업과 어업을 겸한다. 농산물은 쌀·보리·감자·콩 등이 생산된다. 연해에서는 멸치·문어·낙지·갈치 등이 잡히며, 톳·파래·우뭇가사리 등도 채취된다. 특히 김양식이 대규모로 이루어진다.
인근 다도해의 전략적인 요충지로서 러일전쟁 후 팔구포(八口浦)라 부르고 군항으로 이용했던 때도 있었다. 교통은 목포에서 정기여객선이 운항된다. 하의초등학교 옥도분교장은 1998년 3월에 폐교되었다.