auto-stats.eu

Methodology

Sources

The figures on these pages come from the SNCA (Société Nationale de Circulation Automobile, the Luxembourg vehicle registration authority) dataset "Opérations Delta des véhicules au Luxembourg" on the national open-data portal, published under Creative Commons Zero (CC0): one XML file per month since August 2017 with one element per register operation — a new registration (N), a used vehicle imported (I), a transfer between Luxembourg owners (T), a registration suspension (H) or an export (E) — carrying the EU and national category, make, commercial name, the dates of first registration anywhere, first registration in Luxembourg and this registration, the country of the previous registration, the fuel code, WLTP CO₂ and the holder type. The pipeline reads the dataset's own resource listing to find the newest month and parses the XML directly (the XLSX twin of each file is ignored).

Every month is checked against STATEC, the national statistics office, whose LUSTAT tables count the same register: new cars by brand (D6124) and by fuel (D6122), new registrations (D6120) and used registrations (D6140) by vehicle type. The file reproduces each of those counts to the unit before it is loaded.

Files read: 2026-09-13. Latest complete month: 2026-08. The site shows the latest 36 months. A month's file is posted once, in the first week of the following month, and is final: there is no register snapshot behind any figure and no survivorship correction.

What is counted

Fuel groups

From SNCA's fuel code, which changed in November 2023. Since then the tokens are petrol (STD 10), diesel (STD 20), hybrid (NOVC-HEV: full and mild hybrids without a plug, petrol or diesel), plug-in hybrid (OVC-HEV), battery electric (PEV), gas (LPG and CNG, mono- or bi-fuel, and hybrids on LPG or CNG, which STATEC also files outside the hybrid group) and other (hydrogen, E85, anything unknown). Before November 2023 the same groups came from numeric codes (1 petrol, 2 diesel, 4 electric, 10/14/15 hybrids, 13/18 plug-ins, 6/8/9 gas). STATEC's own fuel table confirms every group of new cars each month. The BEV and PHEV shares count new cars and used imports together.

CO₂, holders, age and origin of imports

Mean WLTP CO₂ (CO2WLTP) of the month's new cars. Battery-electric cars count as 0 g/km; a car with no recorded value, or a value above 600 g/km (a typing error, about one car in six thousand), is left out (about one in two hundred). Share of the month's new cars (not used imports) registered to a private person (PP) rather than a legal person (PM: leasing, rental, dealers, fleets). Age at import = days between the first registration abroad and the Luxembourg registration, divided by 365.25, in brackets under 3, 3–5, 6–10 and over 10 years. Origin is the country of the car's previous registration as recorded by SNCA.

KPI definitions

Registrations
Passenger cars (M1, M1G) first registered in Luxembourg in the month: new cars plus used cars imported and registered for the first time, one row per vehicle in SNCA's monthly operations file (operations N and I).
New cars / New share
Operation N in SNCA's file: a new car's first registration. New share = new cars ÷ all first registrations. STATEC's monthly count of new cars agrees with the file to the unit.
Used imports / Avg import age (yrs)
Operation I: a used car's first Luxembourg registration (a car registered abroad before). Average import age = Luxembourg registration minus the first registration abroad, from the two dates in the file; an import whose first-registration date is missing, not earlier than the Luxembourg one or before 1900 (a typing error) carries no age.
BEV share
Battery-electric cars (PEV) as a share of all first registrations, new and used together. Plug-in hybrids (OVC-HEV) are shown separately.
New-car BEV share
Battery-electric cars as a share of new registrations only.
Avg CO₂, new (g/km)
Mean WLTP CO₂ (CO2WLTP) of the month's new cars. Battery-electric cars count as 0 g/km; a car with no recorded value, or a value above 600 g/km (a typing error, about one car in six thousand), is left out (about one in two hundred).
Private holders
Share of the month's new cars (not used imports) registered to a private person (PP) rather than a legal person (PM: leasing, rental, dealers, fleets).
MoM / YoY / YTD
Change versus the previous month, versus the same month a year earlier, and the calendar-year-to-date total (with its change versus the same period a year earlier).

Checks

At ingest every file must pass its gates: at least 2,000 first registrations of passenger cars, at most half a percent of them dated outside the file's month, every kept row a new registration or an import of an M1 or M1G car; then STATEC's tables for the month must agree with the file exactly — the new-car total, the used-import total, every brand STATEC lists (Mercedes-Benz and Mercedes-AMG counted as STATEC's "Mercedes") and the residual it files as "other" — and every fuel group of new cars within half a percent (a hybrid whose code carries no fuel token is a hybrid here and "other" for STATEC, a handful a month). A month STATEC has not published yet is not loaded. One file, December 2023, the month after SNCA changed its fuel codes, holds 135 rows dated November and about 50 cars fewer than STATEC's December; it is loaded as December with the difference logged. An acceptance gate reviews the top 40 makes and models for coverage, sibling makes that should be one brand, and single-letter or otherwise suspect model names. A sanity gate rejects an export whose latest month is less than half the previous month, whose month series has a gap, or where any mart is empty. An identity gate compares the exported new, used and total counts of every published month against the raw table, and the fuel groups against the total. A fuel gate fails when more than 2 % of a month's registrations carry an unmapped fuel code and lists any unmapped code in the log. Finally, a consistency audit re-derives shares, sums, MoM, YoY and rankings from the exported JSON and fails on any mismatch.

Caveats

Data files

Every page is generated from JSON under /data/lu/: meta.json, months.json, YYYY-MM.json (with kpis, models[], makes[], import_origin[], import_make[], import_model[], import_age[], bev_models[], bev_makes[]), makes.json, makes/<slug>.json. Source data: SNCA via data.public.lu, CC0. Site content and derived data: CC BY 4.0.

Map outline: Al MacDonald and Fritz Lekschas, CC BY-SA 3.0.