Tracking the electric vehicle transition — country by country, month by month.
Open GalleryFor each market, monthly new-car registration data is fitted to a generalized S-curve model. The result describes how far along a country is in its BEV transition — not a forecast, but a real-time snapshot of the transition as it stands today.
Filter charts by country, date, and type. Click any chart to zoom. "Latest only" shows the current state of each market without historical clutter.
See BEV share geographically. Color-coded by transition stage — useful for spotting regional patterns at a glance.
When does a market cross 20%, 50%, or 80% BEV share? Computed from the fitted curve, sortable and exportable.
How long does it take to move from one share level to another — e.g. 20% → 80%? Comparable across all markets.
Aggregate curves for custom country groups — by region, weight class, or any selection. The global bottom-up trajectory lives here.
Put multiple countries side by side on the same chart. Useful for spotting which markets lead, lag, or have stalled.
Where each country's numbers come from — the upstream registry or portal, what they count, and the caveats to watch. One page per country.
BEV adoption follows a structured transition: slow start, acceleration once a tipping point is passed, then gradual stabilisation toward 100%. An S-shape fits this pattern consistently — and breaks visibly when the data doesn't support a transition.
The model uses a generalized Weibull-style logistic curve with two free parameters — enough flexibility to capture asymmetric transitions (early-heavy vs. late-heavy) without overfitting. Market size is used as a weight so large-volume months aren't dominated by small-market outliers.
The curve represents the best fit to today's data. When new registrations arrive, the curve updates. This is a description of what has happened so far — "if things simply continued from here" — not a statement about the future.
The promised sequel. Split Spain's DGT registrations by channel and the mid-table headline number falls apart: non-rental buyers run a ~11.5-year transition — outpacing all of South Korea — while the rental third of the market sits frozen on a fifty-year curve, buying hybrids for the tourist season. Plus: the diesel-to-hybrid migration, the two charging networks, and the solar card nobody plays.
Split the data and you see it's not the people of Italy. Strip out the rental fleets and the transition time drops from ~25 years to ~17 — Spain/Korea territory. The rental market is effectively frozen, and the reason is infrastructure tourists can't work around.
Add a new monthly data point or correct an existing one. The form opens a pull request against the country's CSV in this repo, the maintainer reviews and merges, then triggers the render Action — your numbers appear on the page within a few minutes after merge. Multiple rows (multiple months / corrections) can ship in one submission.
Found a bug? Question about the data? Idea for how something could be shown better? Just let me know — no account required. Replies appear right here, visible to everyone.
Choose a custom threshold, then sort the table. Use the variant filter to include multiple categories. Default selects “New Cars”.
Exports reflect your current filter and custom setting.
Color coding:
green = threshold already reached;
red = 80% threshold after Jan 2035.
params.csv…Which month each country's data currently runs to, when it last arrived, and when the next point is due. Due and late are measured against the source's own publication window — the days our fetcher polls — so a country is never flagged before its publisher has actually released. Hand-maintained sources have no such window and are marked by hand rather than judged.
sources/schedule.json…The day of the month each source's publication window opens — the earliest a new figure can appear. Fetchers keep polling after that until the data shows up, so this marks the start of each window, not every polling day.
This view shows the projected time to progress from one market share threshold to another.
Columns include 20→80%, 10→90%, a user‑defined X→Y%, and the model’s numerical speed at the inflection point (slope of the tangent). Values are computed client‑side from
params.csv. Rows with a trailing-12-month BEV share below 1%, or whose curve has no inflection (v2 ≤ 1) or whose peak adoption rate
stays under 1 percentage-point per year, are flagged as ”shows no transition”.
Indonesia’s fitted parameters round to almost zero in CSV precision, so the table
reconstructs them on the fly by anchoring the model to the most recent observation —
its entries can therefore be off by a few months in either direction.
params.csv…Each bar shows the modelled time span from the From% to the To% BEV share; the dot marks the Mid dot% threshold. Bars truncated at the right edge (➜) indicate the transition continues beyond the visible window. Defaults: 20 / 50 / 80%. Hover a bar for exact years.
params.csv…
The country CSVs, drawn. One bar per period, each summing the trailing
N months ending there — rolling, the way the TTM charts roll.
Nothing here is modelled: every number is a number that is in
data/<Country>.csv, or a sum of such numbers.
What the bands mean. BEV is battery-electric; PHEV plug-in hybrid; HEV a full hybrid that does not plug in; Hybrid a combined bucket where the source does not separate those two; ICE combustion that the source does not split into petrol and diesel; Other a category the source reports but does not name (LPG, CNG, fuel-cell). Where a source only started splitting a category out partway through, the later band is folded back into the one it used to be counted in — otherwise the chart shows a cliff that is a change of definition, not of market. Selecting a second country collapses both to whatever they can both fill; the footnote says which collapse was applied. A period is drawn only where the window is a whole multiple of the coarsest observation inside it, so a quarterly stretch appears at T3M, T6M and T12M but not at T1M. Everything held back and why: the data-quality checklist.
What this shows. The same fleet and the same projection as the Vehicles view,
converted into the energy it needs. Reading left to right: what comes out of the ground,
what reaches the tank or battery, which cars burn it, what actually arrives at the wheels,
and what that work is spent on. Losses branch off where they happen, so you can see that a
combustion car wastes roughly three quarters of its fuel before the wheels turn, while an
electric one wastes about a fifth — the single reason electrification changes the total.
Nothing here is inferred behaviour. Energy is conserved and every conversion step has a
measured efficiency, so the chart balances by construction. Accounting follows the
IEA physical energy content method. The grid mix is held constant, which credits the
power sector with no future improvement — electrified transport is therefore shown at
its worst. Factors and their sources live in energy_factors.csv; the method is
written up in architecture/energy-view-methodology.md.
The emissions strip reads the same fleet as CO2 equivalent,
well-to-wheel: the greenhouse gas of getting the fuel or electricity to the car and using it,
stacked by source across the years so you can watch it develop as the fleet electrifies. Fuels use JEC
well-to-wheel CO2e. For the power grid you pick the scenario:
decarbonises — the grid falls linearly from today's world average (Ember, ~480 gCO2e/kWh)
to a net-zero target (IEA Net Zero by 2050, ~2040) — or today's grid held, the honest worst
case for the electrified side. Both endpoints are single sourced values in energy_factors.csv,
so the trajectory is easy to check or swap. It counts the use phase only — building the car or
its battery is a separate, embodied question.
Observed fleet stock (on the road) by drivetrain. Projections use modeled inflow & attrition (see controls above).
When multiple countries are selected they are stacked by category. If a country lacks a PHEV/HEV split, both appear under HYBRID; if PETROL/DIESEL detail is missing they appear under OTHERS.
Same country data as the Thresholds and Durations tabs, painted on a world map. Only the default (whole-market, passenger-car) variant is shown.
Color scale is clipped at the 5th and 95th percentile so regular countries get a useful gradient. Cyan = pioneers that have already reached the threshold. Purple = countries whose fitted model does not project a transition within a reasonable horizon. Exact values always live in the hover tooltip.
Leaders / Laggards are the top and bottom five normal countries for the selected metric. Pioneers have already reached the threshold at the time of the last data point. No transition countries have a fitted Weibull that does not reach the threshold within a reasonable horizon — usually because v2 is very small (flat curve) or the model is still in its early phase.