동경 126°37′, 북위 37°13′에 위치한다. 안산에서 서남쪽으로 25㎞, 대부도에서 동쪽으로 0.32㎞ 지점에 있다. 면적은 3.72㎢이고, 해안선 길이는 8㎞이다. 북서쪽은 간척사업을 통해 대부도와 연결되었고, 남쪽은 탄도와 연도되면서 화성시 서신면과 탄도방조제를 통해 연결된다.
지명은 속세를 떠나 선경에 살며 구름과 학을 벗삼아 지내던 사람이 내려와서 맑은 정한수로 목욕을 했다 하여 선감도라 부르게 되었다고 한다.
섬은 대체로 구릉성 산지(최고 높이 125m)로 되어 있으며, 동쪽은 탄도호를 사이에 두고 화성시와 마주보고 있다. 주변 연해에는 넓은 간석지가 전개되었지만 시화방조제가 건설된 이후 북쪽은 농경지로 바뀌었고, 남서쪽 해안이 서해와 접하게 되었다. 1월 평균기온은 -2.6℃, 8월 평균기온은 25.7℃, 연강수량은 1,541㎜이다.
시화호 개발사업을 실시함으로써 주변의 섬들을 연결하는 방조제가 건설되었고 도로를 개설하여 동쪽의 화성시 서신면에서부터 탄도·불도·선감도를 거쳐 대부도까지 모두 연륙되었다. 대부도와 선감도는 하나의 섬으로 통합되었다.
2011년 기준으로 법정동 선감동에는 402세대 796명이 거주하고 있다. 취락은 평탄한 서쪽 해안에 많이 자리하고 있다. 주민은 어업과 농업을 겸하고 있으나 어업인구가 많다. 토지이용 현황은 논 0.33㎢, 밭 0.19㎢, 임야 2.70㎢이다. 주요 농산물로는 쌀·감자·보리·땅콩·마늘 등이 재배되며, 굴과 바지락 양식이 이루어진다.