The town of Weggis lies on a south-facing plain on the shore of Lake Lucerne. Formerly, the town consisted of only two communities, Unterdorf in the west and Oberdorf in the east. Because of development in the last decades, new communities have developed: Hinterdorf (east of Oberdorf), Rain and Laugneri (near Hinterdorf), Baumen and Dörfli near Unterdorf, as well as Tischital and Rigiblick on the slope above Oberdorf. The community of Hertenstein ( south-west of the town, on the lake shore) lies in the extreme south-west corner of the municipality, on a peninsula. On the municipal border with Vitznau, south-east of the town, another quasi-community has developed. From the lake shore at elevation to an elevation of , several hamlets have grown together. They are: Riedsort (on the lake shore), Bannholz (elev. ), Bodenberg (elev. ), and Sentiberg (elev. ). High up the slope, accessible by cog railway and aerial tramway, lies the community of Rigi Kaltbad ( north-east of the town, elev. c. ). Many other neighborhoods and single farmsteads belong to the municipality.