동경 126°35′, 북위 34°18′에 위치한다. 해남군 북평면에서 남쪽으로 약 700m, 완도읍에서 서쪽으로 14.7㎞ 지점에 있다. 면적은 0.85㎢이고, 해안선 길이는 8.9㎞이다.
섬의 남서쪽에 있는 흑일도는 해가 지는 서쪽에 위치하였고, 백일도는 동쪽에 위치하여 지명이 유래되었다. 또 모래가 부싯돌처럼 하얗고 육지에서 보면 황홀한 모습으로 보인다 하여 백일도라 하였다는 설도 있다.
지질은 대부분 편마상화강암으로 이루어져 있다. 산세(최고 높이 109.3m)가 북동에서 서남서 방향으로 뻗어 있다. 섬 중앙에서 동남쪽으로 이어지는 완만한 경사의 능선 좌우에는 사빈해안(沙濱海岸)이 발달되어 있다.
동북쪽 해안 일부에는 암석해안이 형성되어 있다. 연평균기온은 14.3℃, 1월 평균기온은 1.9℃, 8월 평균기온은 25.1℃, 연강수량은 1,282㎜이다.
약 250년 전 해남군 문내면에서 신안주씨(新安朱氏)가 들어와 살기 시작했다고 전한다. 2009년 기준으로 인구는 96명(남 50명, 여 46명)이 거주하고 있으며, 세대수는 45세대이다. 취락은 동쪽 해안의 산록부 두 곳에 분포한다.
토지이용 현황은 논은 없고, 밭 0.13㎢, 임야 0.69㎢이다. 주민들은 농업과 어업을 겸하고 있으며, 농산물로는 감자·보리·쌀·콩 등이 생산된다. 주 소득원인 김 양식 이외에 연안에서 톳·우뭇가사리·모자반 등의 해조류가 채취된다.
근해에는 황금어장이 형성되어 있어서, 연승어업(連繩漁業) 방식을 이용하여 도미·장어·광어·농어 등을 어획한다. 교통은 해남과 노화도에서 정기여객선이 운항되고 있다. 교육기관으로는 군외초등학교 백일분교장이 있다.