Szczawnica leży w południowej Małopolsce, w powiecie nowotarskim, na pograniczu Pienin i Beskidu Sądeckiego. Miasto wypełnia dolinę Grajcarka - potoku, który zaczyna się w Jaworkach z połączenia Białej i Czarnej Wody, a po około 15 kilometrach wpada do Dunajca tuż obok charakterystycznej skały Kotuńki. Za mostem nad jego ujściem zaczyna się Droga Pienińska.
Od południa nad miastem wznoszą się wapienne Małe Pieniny z Palenicą i Szafranówką, od północy zalesione Pasmo Radziejowej, najwyższa część Beskidu Sądeckiego. Główna zabudowa leży na wysokości 430-520 m n.p.m., ale rozproszone przysiółki wspinają się wysoko na stoki - Przysłop leży na 830 metrach.
Przez wieki Szczawnica była dwiema wsiami i ten podział widać do dziś: niżej leży Szczawnica Niżna, wyżej Szczawnica Wyżna, a między nimi centrum. W boczną dolinkę Szczawnego Potoku wspina się dzielnica zdrojowa z Placem Dietla i Parkiem Górnym.
Pod miastem styka się flisz karpacki - piaskowce i łupki Beskidu - z wapieniami Pienińskiego Pasa Skałkowego. W te skały wdzierały się kiedyś drobne intruzje magmy andezytowej, których wychodnie widać na Jarmucie i Bryjarce. Właśnie w ich pobliżu wypływają szczawnickie wody mineralne.