동경 126°20′, 북위 35°35′에 위치한다. 전북특별자치도 부안군 산내면 해안에서 서쪽으로 15.7㎞, 위도(蝟島)에서 북쪽으로 1㎞ 지점에 있다. 면적은 0.92㎢이고, 해안선 길이는 7.5㎞이다.
고슴도치의 모양을 한 위도에 대하여 식도는 고슴도치의 입 앞에 위치하고 있다고 해서 원래는 ‘밥섬’이라 불리다가 일제강점기 때 한자화되면서 식도(食島)로 바뀌었다.
지질은 대부분 신라층군하부로 이루어져 있다. 섬 중앙이 좁은 지협부(地峽部)를 이루어 동서 2개의 섬이 하나로 연결된 형상이다. 섬의 크기에 비해 기복이 큰 산지(최고 높이 115.8m)로 이루어져 있으나 경사는 급하지 않다.
북쪽 해안은 암석해안으로 해식애가 발달되어 있고, 남쪽의 만(灣) 연안은 사빈해안(沙濱海岸)을 이루고 있다. 1월 평균기온은 -0.2℃, 8월 평균기온은 25.5℃, 연강수량은 1,136㎜이다.
2009년 기준으로 인구는 222명(남 128명, 여 94명)이 거주하고 있으며, 세대수는 131세대이다. 취락은 섬의 남쪽 해안에 집중해 있다. 토지이용 현황은 논은 없고 밭 0.15㎢, 임야 0.70㎢이다. 주민의 대부분이 농업과 어업을 겸하고 있다. 주요 농산물은 마늘이며, 보리 · 콩 · 깨 등이 소량 생산된다. 주요 어획물은 멸치 · 갈치 · 새우 등이며 김과 우렁쉥이 양식도 행해지고 있다.
교통은 부안군 격포항에서 정기여객선이 운항된다. 교육기관으로는 위도초등학교 식도분교장이 있다.