🇿🇦SA CPI & PPI
StatsSA P0141 (CPI) + P0142.1 (PPI) · CPI base Dec 2024=100 ·

This month in brief

Headline vs core inflation

Year-on-year % · shaded band = SARB target 3–6%

What's driving inflation

Contribution to headline YoY, percentage points

COICOP category breakdown

Weights: StatsSA CPI weights (headline, all urban areas). Contributions use w·Δindex / headline index₍t−12₎ and sum to headline YoY (small residual from rounding of published indices).

Analytical series

StatsSA pre-computed composites · all urban areas

Contributions to headline YoY over time

Stacked monthly contributions by division (percentage points) · line = headline YoY

Momentum: what changed vs last month

Change in YoY contribution (pp), current vs previous month

Contribution detail

Provincial inflation map

Provincial CPIs measure price change within each province — they are not cost-of-living level comparisons. Education and some sub-indices are urban/national only.

Province race

Headline YoY % by province over time

Regional convergence

Spread between the highest- and lowest-inflation province each month
A narrowing band means provinces are converging on a common inflation rate; a widening band signals regional shocks (e.g. a local fuel or food disruption) hitting unevenly.

Provincial detail

Click a province on the map

Top risers

Largest YoY increases among 391 products

Top fallers

Largest YoY decreases among 391 products

Product explorer

8-digit product indices, all urban areas. Contribution = w·Δindex / Σw·index₍t−12₎ (Laspeyres); contributions sum to the basket YoY.

What things actually cost

StatsSA's own price-collection panel · actual average retail price in Rand, not an index number

Price over time

Click a product above

Price by province

Source: StatsSA P0141 Average Prices survey (national urban + by province), Jan 2017 onward — a separate representative price-collection panel from the CPI index basket, so item coverage and start date differ slightly from the main product explorer. Not every item is priced in every province every month.

This month in brief — producer prices

PPI vs CPI

Year-on-year % · producer prices (final manufactured goods) often lead consumer prices by a month or two

PPI by sector

Year-on-year % · the 5 sector headline indices StatsSA publishes independently

Category breakdown

No official category-level weights are published in this file (unlike CPI's COICOP breakdown), so this table shows index levels and rates of change only — not weighted contributions.

Analytical series

Core-style cuts that strip out the most volatile components — StatsSA's own "Analytical series" table within P0142.1
Precious metals and stones move on world commodity prices, not domestic producer costs — comparing it against "Mining excl. precious metals" shows how much of headline Mining inflation is really a gold/platinum/rhodium story.

Biggest producer-price risers

Largest YoY increases among 277 elementary products

Biggest producer-price fallers

Largest YoY decreases among 277 elementary products

Elementary product explorer

277 elementary product indices with within-sector Laspeyres weights (WEIGHTS_2026); contribution = w·Δidx / Σw·idx₍t−12₎ within each sector — these sum to that sector's own YoY, not to a single combined PPI headline (StatsSA doesn't publish one).

My inflation vs headline

Custom-basket YoY (Laspeyres over included items, re-normalised) vs official headline

Purchasing power of your money

What R100 in the base period is worth today, given your basket's own inflation

Basket configuration

Presets, or tick items and override weights (% points). Excluded weight is re-normalised automatically.

Inflation by expenditure decile

YoY % by decile (1 = poorest 10%, 10 = richest 10%) · line = headline

Inflation inequality over time

YoY % · decile 1 vs decile 10 · gap shaded

Decile detail

Decile weights (share of total expenditure) from StatsSA CPI weights publication. Lower deciles spend proportionally more on food; upper deciles more on transport, insurance and housing — so the decile gap widens when food or fuel inflation diverges from the rest.

Data status

Automatic update

Easiest: run Update-CPI-Data.ps1 (or double-click Open CPI Dashboard.bat, which runs it for you) — it downloads and parses new StatsSA releases into data/live-data.js. No server involved: this page picks it up automatically the next time it's opened, even as a plain double-clicked file. Run Update-CPI-Data.ps1 -Install once to also add a weekly Wednesday check as a Windows scheduled task. The button below only checks that local file — a browser can't reach StatsSA directly (its server blocks that regardless of whether a new release exists), so this button won't do that by default; see the link it offers if you want to try anyway.

Drop a StatsSA file

Click a direct link below (StatsSA's filenames are predictable — this isn't a proxy or a script, just the plain URL) — your browser downloads it straight from statssa.gov.za, same as pasting the link yourself. Then drag the download onto the box, or the time-series page works too if a link below 404s. These are guessed filenames, not confirmed releases — StatsSA hasn't necessarily published that month yet, so a link may show StatsSA's own 404 page until the actual release date (see the status line above). That's expected, not a bug; try again closer to the date, or a month further back.
CPI (P0141)
PPI (P0142.1 — published on its own schedule, not always the same day as CPI)
Drop zip / xlsx here
or click to browse

Paste from Excel

Open the StatsSA export in Excel, Ctrl+A → Ctrl+C, then paste here (works for both file types — format is auto-detected).

Export

Download the current computed tables as CSV.

Method notes

YoY % = index₍t₎ / index₍t−12₎ − 1 · MoM % = index₍t₎ / index₍t−1₎ − 1 · 12m avg = mean of the last 12 YoY readings.

Division contributions = weight × (index₍t₎ − index₍t−12₎) / (100 × headline₍t−12₎/100)… i.e. w·Δidx / headline idx₍t−12₎, matching the StatsSA additive decomposition; the residual line shows the rounding gap to published headline YoY.

Product-level (Laspeyres): headline = Σwᵢ·idxᵢ₍t₎ / Σwᵢ·idxᵢ₍t−12₎ − 1 over items with data in both months; item contribution = wᵢ·Δidxᵢ / Σwⱼ·idxⱼ₍t−12₎. This reproduces StatsSA aggregation and is what powers My Basket.

Updates are stored in your browser (localStorage) and survive reloads; the file itself keeps its embedded baseline. Sources: StatsSA time-series page · P0141 statistical release.