동경 126°11, 북위 37°11′에 위치한다. 덕적도에서 동남쪽으로 0.6㎞, 인천에서 서남쪽으로 46㎞ 지점에 있다. 면적은 3.04㎢이고, 해안선 길이는 14.4㎞이다.
섬이 새가 날아가는 모양처럼 생겨 ‘새곶섬’이라고 부르던 것을 한자화한 지명이라고 한다. 또 신라 태종무열왕 때 당나라 소정방(蘇定方)의 대군(大軍)이 이 섬에 들어와 나당연합군을 편성할 때 소야도라 이름 지어졌다고 한다. 지금도 소야도 북악산 기슭에는 당나라 군사의 진지였다고 전하는 ‘담안’이라는 사적이 남아 있다.
섬의 모양은 대체로 북서∼동남 방향으로 긴 섬이다. 북부의 산지(높이 106m)와 남부의 산지(높이 143m)가 연결되어 이루어져 있다. 섬 주변에는 간석지가 넓게 발달해 있으며, 동북 해안의 간석지 끝에는 암초열(巖礁列)이 형성되어 천연의 방파제 구실을 하고 있다.
암석해안과 사빈해안이 반복되어 나타나는데, 남쪽에 발달한 사빈은 떼뿌리해수욕장으로 이용되고 있다. 동쪽 끝은 소야반도라 부른다. 1월 평균기온은 -2.1℃, 8월 평균기온은 25.2℃, 연강수량은 1,234㎜이다.
2010년 기준으로 인구는 247명(남 118명, 여 129명)이 거주하고 있으며, 세대수는 114세대이다. 취락은 완경사지가 형성되어 있는 동북쪽 해안에 집중하며, 서북 해안의 오야리 선착장 주변에도 일부가 분포한다.
토지이용 현황은 논 0.07㎢, 밭 0.28㎢, 임야 2.58㎢이다. 주민의 60% 이상이 농업에 종사하며, 주요 농산물은 쌀 · 보리 · 콩 · 감자 · 고구마 · 고추 · 마늘 · 깨 등이다. 임산물로는 송이가 채취된다. 섬 주변의 해역은 좋은 어장을 형성하여 조기 · 민어 · 갈치 · 꽃게 · 새우 등이 많이 잡히며 최근에는 굴 · 김 · 바지락 등의 양식이 이루어진다. 육지에서 연결되는 여객선은 없으며, 서쪽에 마주한 덕적도에서 도선이 운항된다.