Johannesburg weather by month: averages, rainfall & climate trends
Perched high on the Highveld plateau at about 1,750 metres, Johannesburg sees dry-season sunshine and cold nights give way each spring to explosive afternoon thunderstorms that are one of the great spectacles of the sub-Saharan sky. Johannesburg weather by month: average temperatures, rainfall, records and how the climate has changed since 1940.
Today vs average
+6.0°Chigh well above average
How it's changed
+1.3°Caverage temperature, 2016–2025 vs 1940–1949average temperature vs 1940–4912frost days a year now (2016–2025) · 10 in the 1940sfrost days a year · 10 in the 1940s11days above 30°C a year now (2016–2025) · 5 in the 1940sdays above 30°C · 5 in the 1940s+1.3°C vs the 1940s · see how it's changed →Weather by montha typical year, averaged over the full recordJanuary, rain 148 mmhigh 24°low 14°February, rain 123 mmhigh 24°low 14°March, rain 95 mmhigh 23°low 12°April, rain 59 mmhigh 21°low 9°May, rain 21 mmhigh 19°low 6°June, rain 9 mmhigh 16°low 2°July, rain 4 mmhigh 16°low 2°August, rain 10 mmhigh 19°low 5°September, rain 26 mmhigh 23°low 9°October, rain 77 mmhigh 24°low 11°November, rain 116 mmhigh 24°low 12°December, rain 146 mmhigh 24°low 14°wettest month January, 148 mm · 832 mm a yearsee month by month →Right now
What it's doing today vs the historical average for this date.Right now
17.1°
On this date: October 18
High well above average · +6.0°C
- Record high: 31.7° · 1959
- Record low: 3.3° · 1965
- One year ago: 18° / 10°
Every October 18 in history, coldest to hottest
Dots show daily highs (top) and lows (bottom) for each October 18 on record (n = 87). Outlined dots are today's forecast.
Area we sample
Each city's history comes from one ERA5 grid cell, about 28 km across, shown by the dashed box. Near mountains or coasts, conditions can vary across the cell.
Location & data
Historical weather for Johannesburg is sampled from the ECMWF ERA5 reanalysis at 26.20°S, 28.04°E, with daily records since 1940.
- Coordinates
- 26.20°S, 28.04°E
- Time zone
- Africa/Johannesburg
- Period
- 1940–2026
- Data source
- ERA5 (ECMWF)
Last 30 days
19 of the last 31 days were warmer than the historical average for that date. Average difference: +0.3°C.
Each bar is one day, from morning low to afternoon high. Warm-colored bars are days whose mean ran above average; cool bars ran below. The dot inside the bar is the daily mean. The shaded band is the typical 10–90% range expected for that date. Average = the day's mean temperature averaged across every year of record (1940–2026) for that calendar date.
This date over the years
One dot per year, showing the mean temperature on this calendar date. Dots are warmer or cooler than the long-term average (dashed line); the shaded band is the typical 10–90% range, and the highlighted dot is today's forecast. Based on ERA5 reanalysis: modelled estimates, not station readings.
Weather by month
Average temperatures and rainfall for each month: a typical year, from the full record.Climate overview
Johannesburg stands at 1,753 metres on the Highveld plateau of South Africa, with a subtropical highland climate (Köppen Cwb). The elevation keeps temperatures moderate year-round by African standards, but the strong seasonal contrast comes from rainfall rather than temperature: summers from October through April bring hot afternoons that build almost daily into intense thunderstorms, while winters from May through September are dry, sunny and cold at night.
The afternoon thunderstorm, fast-moving and accompanied by hail and lightning, is the signature weather event of the Highveld summer. Snow is extraordinarily rare at this latitude but not unheard of: notable falls were recorded in 1956, 1962, 1964 and 1981, and the 21st century has brought small but memorable events including June 2007 (up to 10 centimetres in southern suburbs), August 2012, and July 2023.
The warmest month is January, with typical afternoon highs of 24.4°C and nights around 14.2°C. The coolest month is June, when afternoons reach about 16.2°C and overnight lows sit around 2.2°C. Around 12 days a year dip below freezing.
The yearly total for Johannesburg comes to about 832 mm; monthly amounts range from 4 mm in July up to 148 mm in January.
Comparing the record's first decade with its most recent one, Johannesburg now averages 1.3°C warmer than it did in the 1940s. The year-by-year charts below trace that shift in detail.
Climate graph (climograph)
January is the warmest month, June the coolest: a yearly swing of 11°C. Wettest month: January (~148 mm). Whole year averages ~832 mm of rain.
Bars = average monthly rainfall (right axis). Lines = average daily high and low (left axis). Average = each month's value averaged across every year of record (1940–2026).
Rainy days by month
About 91 rainy days a year: most in December (~16), fewest in July (almost none).
Bars = average number of days with ≥ 2 mm per month. Hover for the monthly rainfall total.
Monthly wind
Average daily peak wind at 10 m, by month.
Monthly solar energy
Average daily incoming solar energy in megajoules per square metre: the record's own proxy for how sunny the month is.
Johannesburg month by month: what to expect
Typical conditions for each month, averaged across the full record (since 1940). Daylight is the time from sunrise to sunset. Record high/low are the most extreme values in the ERA5 dataset (modelled since 1940), so they can differ from official weather-station readings.
| Month | Avg high | Avg low | Rain | Rainy days | Daylight | Record high | Record low |
|---|---|---|---|---|---|---|---|
| January | 24.4° | 14.2° | 148 mm | 16 | 13.5 h | 36.0° (2016) | 6.9° (1961) |
| February | 23.9° | 13.9° | 123 mm | 13 | 12.9 h | 32.0° (1984) | 4.2° (1940) |
| March | 22.9° | 12.5° | 95 mm | 11 | 12.2 h | 31.9° (2024) | 3.5° (1974) |
| April | 20.8° | 9.4° | 59 mm | 7 | 11.4 h | 28.5° (2017) | −0.2° (1972) |
| May | 18.6° | 5.6° | 21 mm | 3 | 10.7 h | 26.9° (2012) | −3.8° (2007) |
| June | 16.2° | 2.2° | 9 mm | 1 | 10.4 h | 24.5° (2014) | −5.5° (1955) |
| July | 16.5° | 2.0° | 4 mm | 0 | 10.5 h | 25.0° (2002) | −6.3° (1990) |
| August | 19.4° | 4.7° | 10 mm | 1 | 11.1 h | 29.0° (1941) | −5.2° (1972) |
| September | 23.0° | 8.7° | 26 mm | 3 | 11.9 h | 31.5° (2018) | −1.5° (2018) |
| October | 24.1° | 11.1° | 77 mm | 8 | 12.6 h | 33.6° (2011) | 0.1° (1965) |
| November | 23.9° | 12.4° | 116 mm | 12 | 13.3 h | 33.4° (2015) | 2.5° (1976) |
| December | 24.2° | 13.6° | 146 mm | 16 | 13.6 h | 33.8° (2015) | 4.3° (1970) |
How it's changed
Year-by-year signals from 1940 to today.Climate stripes
Annual mean shifted from 1940–1949 to 2016–2025 by +1.3°C.
Each vertical stripe is one year. Color encodes how much that year's annual mean differed from the long-term average. Average = each year's annual mean compared to the average of all years (1940–2026). cooler ← → warmer
Annual mean temperature
Long-term trend: +0.15°C per decade.
One point per year, showing the temperature averaged across the whole year. The dashed line is the least-squares long-term trend. Based on ERA5 reanalysis: modelled estimates, not station readings.
Seasonal warming
Dec–Feb is warming fastest: +0.19°C per decade.
Each faint line is one three-month period's average per year; the bold dashed line is its long-term trend. Different parts of the year often warm at different rates. Based on ERA5 reanalysis: modelled estimates, not station readings.
Hot days vs frost days
Days ≥ 30°C per year: 4.6 early in the record → 11.2 recently. Frost days: 10 → 12.
Thin lines are raw yearly counts; thick lines are the smoothed trend that removes year-to-year noise. The hot-day threshold is auto-picked per city so the line actually moves. Average = a centered 5-year rolling average to smooth weather noise.
Yearly hot & cold extremes
All-time high in 2016, all-time low in 1990: 36.0°C / −6.3°C.
One point per year: the single hottest and coldest day recorded that year.
Annual rainfall
~832 mm/year on average. Last decade: −1% vs that average. Long-term trend: −7 mm per decade.
One bar per year of total rainfall. Dashed line is the long-term average. Average = the average annual rainfall across every year of record (1940–2026).
Day-by-day grid
Each tiny square is one calendar day across the full record, about 30,000 days per city. Use the mode switch above the chart: Anomaly colors each day by how far it ran from the historical average for that date (red = warmer, blue = cooler), Daily mean temp shows the absolute mean temperature for the day (useful to see seasons and heatwaves), and Precipitation shows daily rainfall (useful to spot wet/dry seasons and droughts). Average = the long-term average for that calendar date (1940–2026).
Frequently asked questions about Johannesburg
Which is the warmest month in Johannesburg?
How does today's temperature in Johannesburg compare to the historical average?
How much has Johannesburg warmed since 1940?
How much does it rain in Johannesburg?
What is the average temperature in Johannesburg?
What are the average temperatures in Johannesburg by month?
What is the weather like in Johannesburg in summer?
What is the weather like in Johannesburg in winter?
What is the weather like in Johannesburg in spring?
What is the weather like in Johannesburg in autumn?
How many days a year does it rain in Johannesburg?
Weather in nearby cities
- Ivory Park31°/18°today+6.0°vs average
- Benoni30°/17°today+6.1°vs average
- Thembisa31°/17°today+6.0°vs average
- Krugersdorp30°/17°today+6.0°vs average
- Diepsloot32°/14°today+5.7°vs average
- Brakpan30°/17°today+6.1°vs average
- Randfontein30°/17°today+5.8°vs average
- Springs30°/17°today+6.1°vs average
- Centurion32°/18°today+5.7°vs average
- Westonaria32°/18°today+6.9°vs average