Johannesburg sits at 1,750 metres on the Highveld plateau, which gives it a climate that surprises many visitors. It is warm and dry for most of the year, rarely uncomfortably hot (the altitude keeps summer temperatures below 30°C most days), and the winters are sunny and cold rather than grey and wet. This is not the coast — there are no beaches within 500 kilometres.
April to September is the dry season. Winter days (June–August) are clear and bright with sharp shadows, but nights drop to near freezing. October to March is the rainy season: hot mornings that build to dramatic afternoon thunderstorms, usually clearing by evening. The storms are spectacular and brief.
September is the ideal month. The rains have not yet arrived, temperatures are warm but not hot, and the jacaranda trees — lining streets across the northern suburbs — are in full purple bloom. The effect is genuinely beautiful and distinctly Johannesburg.
Avoid the extended December–January school holiday period if you can. The city empties, many restaurants and businesses reduce hours or close, prices for flights and accommodation rise sharply, and the energy is different. Johannesburg is a working city; it is at its best when it is working.