동경 125°50′, 북위 34°36′에 위치하며, 목포에서 서남쪽으로 약 63㎞ 지점에 있다. 면적은 10.7㎢이고, 해안선 길이는 21㎞이다. 북동쪽에 도초도(都草島), 서쪽에 흑산도(黑山島), 동쪽에 하의도(荷衣島)가 우이도를 둘러싸고 있다.
27개의 섬으로 이루어진 우이군도의 주도이다. 부속 도서로는 동소우이도, 서소우이도, 화도 등이 있다. 다도해해상국립공원으로 지정되어 있다. 섬 서쪽 양단에 두 개의 반도가 돌출한 것이 마치 소의 귀 모양과 비슷하다 하여 우이도라는 이름이 붙여졌다고 한다. 소구섬 또는 우개도라고도 불렸다.
북쪽 해안에는 사빈이 발달해 있고, 해안 곳곳의 돌출부에는 해식애가 형성되어 있다. 특히 서쪽 해안은 절벽과 기암이 병풍처럼 늘어서 있어 장관을 이루는데, 돈목리에 있는 약 80m의 사구는 독특한 경관을 보여 준다. 섬의 중앙에 위치한 상산봉(上山峰, 361m)이 최고봉을 이룬다. 1월 평균기온은 2℃, 8월 평균기온은 26℃, 연강수량은 1,239㎜이다.
450여 년 전 파평윤씨가 들어와 살기 시작하였다고 한다. 원래는 진도군 흑산면에 딸린 섬이었으나 1896년에 지도군 흑산면에 편입되었다. 1914년에 행정구역 개편으로 무안군 흑산면에 편입되었다. 1962년에 도초면에 편입되었다가, 1969년에 신안군이 무안군에서 분군되면서 신안군 도초면 우이도리가 되었다.
2009년 기준으로 인구는 162명(남 86명, 여 76명)이고, 세대수는 89세대이다. 취락은 해안에 위치한 평지에 고립되어 발달하고 있다. 파평윤씨의 후손은 대초리 마을에 남아 명맥을 이어오고 있다. 토지이용 현황은 논은 없으며 밭 0.81㎢, 임야 7.05㎢이다. 농지가 매우 부족하여 농업은 미미한데, 보리·콩·마늘·고추 등이 약간 생산된다. 부근 수역은 조기의 월동수역이며, 고등어·전갱이·갈치·장어 등이 회유하는 좋은 어장을 이룬다. 교통은 목포에서 정기여객선이 운항된다.