South Africa is a large country with significant regional variation in climate. The short answer is that the best time to visit depends entirely on what you want to do.
For Safari (Kruger and the Lowveld)
May to September is the prime game-viewing season. The vegetation thins out, animals concentrate around water sources, and the days are mild and dry. Mornings can be cold — bring a jacket for early game drives. Summer (November–March) brings rain, lush greenery, and excellent birdwatching, but game viewing is harder as animals spread out. It is also hot and humid.
For Cape Town and the Western Cape
The Cape has a Mediterranean climate: hot, dry summers (November–March) and cooler, wet winters (June–August). If you are coming for beaches, wine estates, and hiking on Table Mountain, aim for November through April. September and October are beautiful — the fynbos is in bloom and the crowds have not yet arrived.
Note that the Western Cape and the Kruger are essentially opposite in their best seasons. If you want to do both in one trip, September/October or March/April are reasonable compromises.
For the Garden Route
The Garden Route is pleasant year-round, but October to April is generally best for warm weather and stable conditions. Hiking the Otter Trail is possible in winter but expect rain.
For KwaZulu-Natal and Beaches
Durban and the KwaZulu-Natal coast are warm and swimnable year-round, but December to March is hot, humid, and crowded with South African holiday-makers. May to October is cooler, less crowded, and good for diving.
Whale Watching
Southern right whales come to calve along the Western Cape coast from June to November, peaking in September and October. Hermanus is the most accessible spot.
Public Holidays and Crowds
The South African school holidays — especially December and January — are the busiest period domestically. Garden Route, coastal resorts, and the Cape all get very busy. Book well ahead. Easter weekend is also extremely busy nationwide.