上海位于北纬31度14分,东经121度29分。正当中国海岸线中心点,守长江口。处长江三角洲冲积平原前缘,东濒东海,北界长江,南临杭州湾,西与江苏省和浙江省接壤。全市面积6,340.5平方千米,南北最长处约120公里,东西最宽处约100公里。其中市区面积为2,648.6平方千米。
上海市全境为冲积平原,仅西南部有部分火山岩丘。海拔平均高度在4米左右,地势平坦,山脉少而低小。西部有佘山、天马山等,但高度都在100米以下。上海市最高点是位于杭州湾内,距离杭州湾北岸陆地最近点金山嘴6.2公里的海拔105.03米的大金山。