동경 125°22′, 북위 34°40′에 위치한다. 목포에서 서남쪽으로 91.2㎞, 진도에서 서북쪽으로 69.7㎞ 지점에 있다. 섬 동쪽으로 3.2㎞ 지점에 대흑산도가 있다. 면적은 1.57㎢이고, 해안선 길이는 11.0㎞이다. 대장도와 소장도로 구성되어 있는데, 두 섬 사이에 작은 바위들이 연속해 있어 하나의 섬처럼 보인다. 다도해해상국립공원으로 지정되어 있다.
섬의 모양이 동서 방향으로 길다고 하여 장도라 부르게 되었다고 한다.
섬은 동북에서 서남 방향으로 길게 뻗어 있다. 대장도는 비교적 기복이 큰 산지(최고 높이 267m)로 이루어져 있으며, 동남 해안을 제외한 대부분의 해안이 높은 해식애로 되어 있다. 소장도는 경사가 급하고 기복이 큰 산지(최고 높이 156m)로 되어 있으며, 해안은 가파른 해식애를 이루는 암석해안이 대부분이다. 산의 정상부에 있는 장도습지(면적 9만 414㎡)는 2005년에 국내에서 세 번째로 람사르협약 등록습지로 지정되었다. 1월 평균기온은 2℃, 8월 평균기온은 26℃, 연강수량은 1,112㎜이다.
2009년 기준으로 인구는 129명(남 70명, 여 59명)이고, 세대수는 62세대이다. 취락은 남쪽에 위치한 대장도의 동북쪽 해안에 집중적으로 분포한다. 토지이용 현황은 논이 없고 밭 0.04㎢, 임야 1.49㎢이다. 주민들은 어업에 주로 종사한다. 농산물로는 소량의 감자·보리·마늘 등이 생산된다. 근해에서는 장어·전복·톳 등이 어획되고, 전복 양식이 활발하다. 교육기관으로는 흑산초등학교 장도분교장이 있다.