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

This month in brief

Tip: click any row in a table to see its full history.

Headline vs core inflation

Year-on-year %

What's driving inflation

Contribution to headline YoY, percentage points

COICOP category breakdown

Weights: StatsSA CPI weights, matched to the regime each month actually belongs to (see Data & Update). Contributions use w·Δindex / headline index₍t−12₎ and sum to headline YoY (small residual from rounding of published indices). Note: StatsSA rebased the CPI to Dec 2024 = 100 in January 2025 and introduced Insurance and financial services as a new division with no data before Dec 2024 — its YoY contribution can't be computed until Dec 2025, so the residual runs larger than usual Dec 2024–Nov 2025. Pre-2025 months: weights are best-effort, not exact.

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
"Residual" runs larger from Dec 2024–Nov 2025 (Insurance is too new a division to have a year-ago figure yet) and before 2025 generally (weights are a best-effort reconstruction). Details: Data & Update.

Momentum: what changed vs last month

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

This month's contribution (MoM)

Contribution to headline MoM, percentage points

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.

Provincial ranking

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
Click a province to add/remove it from the chart

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. Contributions sum to this reconstruction's own sector total, which can diverge from the officially published sector YoY above (this file's weights vs StatsSA's own published chain-linking) — best-effort, not exact.

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

Weight & methodology changes

StatsSA rebased the CPI to Dec 2024 = 100 effective January 2025, updating category weights across the board. Alongside the reweight, StatsSA introduced Insurance and financial services (weight 9.95) as a brand-new COICOP division — it previously formed part of "Miscellaneous goods and services," so it has no published data before December 2024.
New-index effect: the contribution/attribution charts and the COICOP table can only compute a year-on-year figure for a division once it has 12 months of its own history. For Insurance and financial services, that means every month from Dec 2024 to Nov 2025 is missing that one division's contribution entirely — not just rounding noise — which is why the "Residual" bar runs noticeably larger across exactly that window (roughly +0.6 to +0.7 pp). From Dec 2025 onward the division has its own year-ago comparison and behaves like every other category.
StatsSA has rebased the CPI more than once — Dec 2016=100 (Jan 2017), Dec 2021=100 (Jan 2022, "2019 reference" weights), and the current Dec 2024=100 (Jan 2025, "2023 reference" weights) — each with different division weights. This app's index series are StatsSA's own continuous, reclassified back-series, so the numbers themselves are consistent throughout, but the weights used to decompose a month's contribution need to match the regime that month actually belongs to — using today's weights for a 2018 or 2023 price move mismatches the weight vintage, on top of ordinary rounding.
Pre-2025 weights are best-effort, not exact. Months before Jan 2025 use reconstructed weights; StatsSA's own documentation confirms that recalculating published aggregate indices from components is impossible once indices have been re-referenced. Typical residual: 0.15–0.3 pp.

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.