上海位于北纬31度14分,东经121度29分。正当中国海岸线中心点,守长江口。处长江三角洲冲积平原前缘,东濒东海,北界长江,南临杭州湾,西与江苏省和浙江省接壤。全市南北最长处约120公里,东西最宽处约100公里。
上海市全境为冲积平原,仅西南部有部分火山岩丘。海拔平均高度在4米左右,地势平坦,山脉少而低小。西部有佘山、天马山等,但高度都在100米以下。上海市最高点是位于杭州湾内,距离杭州湾北岸陆地最近点金山嘴6.2公里的海拔105.03米的大金山。
上海全市市域面积为7823.44平方公里(包括陆域、长江水面和沿海滩涂)。陆域面积6340.50平方公里(其中大陆面积5132平方公里,岛屿面积1208平方公里);长江水面1107平方公里;沿海滩涂面积376平方公里。
上海的气候属于亚热带季风气候,四季分明,日照充分,雨量充沛。气候温和湿润,春(4月-5月)、秋(10月-11月)较短,冬(12月-次年3月)、夏(6月-9月)较长。有春雨、梅雨、秋雨三个雨期,因而5月至9月间为上海的汛期,降水量达全年的60%左右。每年的7月至8月进入伏旱天气,较之日常月份显得潮湿酷热,每年平均有8.7天最高气温超过摄氏35度。由于地处东南沿海,每年夏天和初秋时节常会有来自太平洋上的热带气旋(台风)过境或影响。每年1月中旬至2月初为全年最寒冷的季节,受北方蒙古高原和西伯利亚的冷空气影响,会出现霜冻现象。如遇强冷空气来袭并恰逢暖湿气流,上海也会出现雨夹雪或降雪天气。
江南地区水网密布,天气湿润多雨,上海地区河网纵横,水量丰富。到2018年,本市的河道及湖泊总面积尚有628.8543平方公里,河湖水面率为9.92%。本市河网基本属于黄浦江水系。境内主要河流有黄浦江、吴淞江及川杨河、淀浦河等。黄浦江起自淀山湖,全长约113公里,流经市区,江道宽度300~770米不等,平均360米,为不冻河,是上海的水上交通要道和主要城市景观组成部分。吴淞江(俗称苏州河)上海境内长54公里,河道平均宽度45米,原有入海口即今吴淞口,后“黄浦夺淞”,现于外白渡桥以东入黄浦江。上海境内的最大湖泊为淀山湖,面积为62平方公里。此外,由于城市发展,上海市区境内诸多河道已被填埋并修筑道路,最为知名的为公共租界与法租界的界河洋泾浜,即今延安东路。
上海的自然岛屿分为海洋岛屿与内河岛屿两大系统。海洋岛屿主要分布在北部长江口和南部杭州湾一带。共有崇明岛、长兴岛、横沙岛3个有居民岛屿,大金山岛、佘山岛、九段沙等23个无居民岛屿(沙洲)。岛屿以自然岛屿为主。北部长江口处的岛屿以崇明岛、长兴岛和横沙岛三个岛为主,并伴有一些小型沙洲,这是上海市最大的三个岛屿。而杭州湾处的岛屿则有金山区境内的的大金山等岛,崇明岛以东35公里有佘山岛。黄浦江游的杨浦区有一座上海市区唯一的内河岛屿—复兴岛。此外黄浦江中游还有泖岛、浏河还有浏河岛等内河岛屿。
崇明岛是由长江携带下来的大量泥沙冲积而成,唐武德元年(618年)仅是长江中的两个小沙洲,面积只有十余平方公里。后几经变迁,现在东西约80多公里,南北宽约10-15公里,面积为1041平方千米。被誉为“长江门户、东海瀛洲”是世界最大的河口冲积岛和中国第三大岛。
长兴岛和横沙岛位于崇明岛以南的江口,将江水分为南北二水道。长兴岛俗称鸭窝沙,露出水面不过百年左右,分为石头沙、瑞丰沙、潘家沙、鸭窝沙、金带沙五个部分。近40年来才逐渐成一岛。与吴淞相对。横沙岛在长兴岛东面,由横沙岛和元沙岛组成,面积约为40平方公里。
九段沙是在长江口深水航道南侧新淤积形成的沙岛,总面积为420平方公里(-6米),其中吴淞0米线以上面积145平方公里。目前无常住人口,2000年建立上海市九段沙湿地自然保护区。