Johannesburg sits at 1,753 meters above sea level, which keeps temperatures remarkably mild year-round despite its subtropical latitude.
Summer brings afternoon thunderstorms that arrive with theatrical predictability, making a waterproof layer essential from October through March.
Winter days are sunny and pleasant, but nights plunge to near-freezing, creating a daily temperature swing of up to 15°C.
The high altitude means intense sun and low humidity, so UV protection matters more than sweat management most of the year.
Layer obsessively: you'll strip down by midday and bundle up again by sunset, often on the same winter afternoon.