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
Series explorer
Compare any CPI or PPI series · type to search, click × on a legend chip to remove · click a chip's name to hide/show it, the L/R chip to move it to the right-hand axis
Monthly momentum heatmap
Month-on-month % change · years × months
Goods vs services
Year-on-year % · goods (CPS00006) vs services (CPS00007)
Inflation breadth
Share of the 391 products with rising prices month-on-month
A classic central-bank gauge: when breadth stays high while the headline rate falls, price pressure is still widespread — just smaller per item. Above 50% = more products rising than falling.
Inflation volatility
Rolling 12-month standard deviation of month-on-month headline change
Higher = inflation has been swinging around more from month to month, independent of its level — useful for judging how forecastable recent inflation has been.
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.
Built by Preneshen Naicker
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
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.