← VIN Decoder

What's new

Every improvement we ship to the decoder, in plain words. Current version: 2.41.0.

How version numbers work. Each release gets a number MAJOR.MINOR.PATCH, and each one below says why it got its number.
MAJOR (3.0.0): a field is removed, renamed or changes meaning, so code that reads the API may need to change.
MINOR (2.x.0): something new: a field, a page element, a new data source, or a new check across manufacturers.
PATCH (2.x.y): corrections only: fixed rules, repaired data, values restored or withdrawn. Nothing new is added.
Releases before August 2026 are Beta 1.0.
v2.41.0MINOR2026-10-26build 43da3b6812ca

Why this version: New response field model_year_upper_bound and a check across several manufacturer groups: a first-registration year (es_dgt, fr_siv, gb_dvla, ie_nvdf) caps the model year at registration + 1; a served year above the cap is withheld (both shapes), unless the register entry names a different make.

2026-10-26 · accuracy

A model year that the car's first registration rules out is no longer shown

Some cars in our data are listed in a national vehicle register (Spain, France, the United Kingdom or Ireland) with the year they were first registered. A car is not registered before it is built, so its model year is at most one year after its first registration. When the model year we had found for such a car was later than that, we still showed it, sometimes marked as supported by the registration. That year is now left out, with a short note saying why.

v2.40.0MINOR2026-10-25build bec8be429b82

Why this version: Withdrawal checks across manufacturer groups on cells where a year rule rewrote the year: a model introduced much later than the corrected year is withdrawn with the values looked up from it (unless the VIN's own NHTSA record names it or an older car of that name covers the year), and values whose own provenance names the replaced year or an out-of-era engine lookup are withdrawn. Full decode only.

2026-10-25 · accuracy

Older imported cars: details from the wrong decade removed

Since the last release, the full decode reads the right model year for many older cars built outside North America whose year code can mean two years 30 years apart. Some details that had been looked up for the later year were still shown next to the corrected year. They are now removed when the car's own model year shows they cannot belong to it, each with a short note saying why.

v2.39.0MINOR2026-10-25build d655dfedca50

Why this version: A serve-time year rule across manufacturer groups: for US-certified light vehicles built outside North America that have their own NHTSA record (error code 0, light vehicle, the record's model year equal to the pick), the VIN's 7th character (49 CFR 565.15, digit = 1980-2009) decides between the two 30-year readings of position 10 in the full decode; details that only fit the replaced year are withdrawn with it. Aston Martin (SCF) is excluded.

2026-10-25 · accuracy

Older imported cars no longer show a model year 30 years too late

The 10th character of a VIN gives the model year, but each code comes back every 30 years: V means 1997 or 2027, C means 1982 or 2012. Some older cars built outside North America were shown with the later year. For cars, SUVs, vans and pickups up to 10,000 lb (4,536 kg) made for the US market, US rules settle it with the 7th character: a digit there means 1980-2009, a letter 2010-2039. When such a car has its own NHTSA record showing it was made for the US market, and that record gives the same year, the full decode now uses that rule.

v2.38.0MINOR2026-10-24build 44716b7cdac5

Why this version: A serve-time year check across manufacturer groups: a production window of a same-name model generation never built under the VIN's maker code no longer confirms a position-10 reading; when it is refuted, the year is withheld and both possible readings are shown.

2026-10-24 · quality

The quick decode no longer borrows the years of a model generation never built under the car's maker code

The 10th VIN character gives two possible model years, 30 years apart. In the quick decode we sometimes confirmed the newer one with the production years of a model generation that has the same name but was never built under this car's maker code: for example, a Japan-built Nissan Pathfinder was confirmed as a 2017 by the US-built 2017-2021 Pathfinder. When the records show that generation was never built under this maker code, we now leave the year empty and show both possible years.

v2.37.1PATCH2026-10-24build dc2ff4db76a9

Why this version: Website self-hosting (PATCH): the Swagger UI and ReDoc assets and the QR code library are served from the site itself, so /docs and /redoc work under the unchanged security policy and the QR code is drawn locally.

2026-10-24 · quality

The interactive API docs work again, and the QR code is made on our own site

The interactive API documentation at /docs and the API reference at /redoc loaded their code from an outside site. The site's security policy only trusts the site itself, so it blocked that code and both pages stayed blank. That code now comes from our own site, so both pages show the full API again. The QR code button on the decode page used to ask an outside QR service to draw the code, which sent that service the link to your decode. The QR code is now drawn in your browser, and the link is not sent anywhere.

v2.37.0MINOR2026-10-24build 8b9cafb226a1

Why this version: A new serve-time check across several manufacturer groups (Toyota/Lexus, Honda, BMW/MINI, Fiat/Ferrari/Maserati, Mazda, Suzuki and others, JP and EU): when VIN position 10 is not a year character, a borrowed point year is withdrawn and the production range shown; vin_history records the served year.

2026-10-24 · quality

A year range instead of a borrowed year when the VIN does not state its year

On many cars built in Japan and Europe, the 10th character of the VIN is not a model-year code (it is a 0 or another character never used for years), so the VIN itself does not say the model year. We used to show one year taken from other vehicles with a similar VIN. When we checked against the cars' own records, that borrowed year was wrong about three times in ten (up to four in ten for Japanese cars). We now leave the exact year empty and show the years this VIN pattern was built, for example 2009-2015.

v2.36.0MINOR2026-10-24build 3debf9f89133

Why this version: KPC-12's placeholder-engine rule now also corrects the VIN breakdown (a field it did not write before) across several manufacturer groups; deterministic variant lists; two-way drive types withdrawn from the Toyota Malaysia details.

2026-10-24 · quality

The VIN breakdown no longer repeats an engine code we removed

Since 2.32.0 we no longer show an engine code that was only a placeholder, such as 'NOT KNOWN', or a piece of the VIN itself. The position-by-position VIN breakdown still repeated it. It now says that the records we hold for this VIN give no usable engine code. The rest of the breakdown is unchanged: for example, the serial-number position still shows the end of the VIN.

2026-10-24 · quality

Steady model, maker and fuel lists for VINs we only know by their manufacturer code

When we recognise a VIN only by its first three characters, we list the models, makers and fuel types recorded for that code. When there were more than we show, two requests for the same VIN could list different ones. The lists are now the same every time. When we have to choose, we show model names before body-type codes and placeholders (such as '4DSD' or 'OTHER'), and the most often recorded first.

2026-10-24 · quality

Malaysian-assembled Toyotas: no more two-way drive types in the Toyota Malaysia details

For some Malaysian-assembled Toyotas (the Avanza F601, Fortuner AN160 and Hilux AN120 platform codes), the Toyota Malaysia details gave the drive type as 'FWD/RWD' or 'RWD/4WD'. That names two drive types, so it is not a fact about one vehicle. The details now leave the drive type out for these codes, as the main drive type already did. We never replace it with a guess.

v2.35.1PATCH2026-10-23build 3a83d6491999

Why this version: A check that serves one manufacturer group (GM North America, model years up to 2017): the engine code and size are checked against what the VIN encodes, and conflicting engine details are withheld.

2026-10-23 · quality

GM engine details are now checked against the VIN

For Chevrolet, GMC, Buick, Cadillac and other GM vehicles built in North America, up to model year 2017, the engine code and engine size are now checked against what the VIN encodes for that model year. When they do not match, the decoder no longer shows the conflicting engine code or size, and a warning explains why.

v2.35.0MINOR2026-10-20build 88fe83e81fac

Why this version: The VIN's own NHTSA record (an existing source) is now read for US-market vehicles built outside North America, across several manufacturer groups: it fills empty engine size, cylinder count and drive, and withdraws an unconfirmed drive it contradicts.

2026-10-20 · quality

Imported cars sold in the US: details from the car's own NHTSA record

Many cars built in Japan, Korea or Europe were sold new in the United States, and each one has its own record at NHTSA, the US road-safety agency, under its VIN. Until now the decoder read that record only for cars built in North America. In a full decode it now reads it for these imports too: it fills an empty engine size, cylinder count or drive from the record, and withdraws a drive the record contradicts when we could not confirm it.

v2.34.0MINOR2026-10-20build a0025540ae77

Why this version: ATVs and side-by-sides of manufacturer codes on a new, evidence-built powersports list are decoded (vehicle type powersports) instead of refused, across several manufacturer groups; two new data_quality reasons (powersports_registry, withheld_powersports_scope).

2026-10-20 · quality

ATVs and side-by-sides now decode instead of being refused

VINs of ATVs and side-by-sides were refused with a message saying the decoder handles passenger cars only. When the vehicle's own registration record says it is an all-terrain vehicle and its manufacturer code is on our new powersports list, the decoder now answers, with the vehicle type 'powersports'. It shows only what we checked for this kind of vehicle: the make, the model year and the country of manufacture, each only for the manufacturer codes where records confirmed it. The model, the engine and other car details are left empty, and the VIN breakdown shows no car details for these vehicles.

v2.33.1PATCH2026-10-20build d6d0a54caf26

Why this version: Removes two panels from the decode page (Ask the VIN and OEM parts cross-reference); the API endpoints behind them are unchanged.

2026-10-20 · quality

A simpler decode page: 'Ask the VIN' and 'OEM parts cross-reference' are removed

The decode page no longer shows the 'Ask the VIN' box or its toolbar button, and no longer shows the 'OEM parts cross-reference' panel with its links to parts search sites. The rest of the page works as before. Developers can still use the API behind both panels: POST /ask/{vin} and GET /parts/{vin} give the same answers as before.

v2.33.0MINOR2026-10-20build 14c7fa4e9d6c

Why this version: A new serve-time check across several manufacturer groups: when the recorded vehicles that share the start of a VIN disagree on the gearbox, body style, engine size, fuel type, power or engine code, that value is withheld unless the vehicle's own record or a VIN rule gives it; a new data_quality reason withheld_members_disagree; the gearbox printed on a Malaysian registration card as per-VIN evidence.

2026-10-20 · quality

Honest gaps instead of guessed gearbox and engine details

Many VINs begin the same way for vehicles that left the factory with different gearboxes, engine sizes, fuel types, power outputs, engine codes or body styles. Until now the decoder sometimes showed one of these values as if the VIN proved it. It now checks the vehicles we hold records for that share the start of the VIN. When they were recorded with different values, the field is left empty and the decoder says why. In the API, the data_quality block gives the new reason withheld_members_disagree.

v2.32.0MINOR2026-10-19build 2e2add930d4d

Why this version: A new serve-time check across several manufacturer groups: a drive type is served only when it is one clear drive class, and an engine code that is the VIN, part of the VIN or a placeholder is no longer served.

2026-10-19 · quality

Drive type: one clear answer or none; the VIN or 'NOT KNOWN' is no longer shown as an engine code

Some cars showed a drive description instead of a drive type: a choice of two drives, the name of a hybrid system, or a drive that contradicts the car's own model name. We now show the drive only when it is one clear type (front-wheel, rear-wheel, all-wheel or four-wheel drive); otherwise the field is left empty. An engine code that was really the VIN, part of the VIN, or a placeholder such as 'NOT KNOWN' is no longer shown as the engine code.

v2.31.1PATCH2026-10-19build 47a5c0599e29

Why this version: Two checks that each serve one manufacturer group: Toyota Camry and Avalon VINs starting 4T1 whose 'Camry hybrid' or trim label the VIN's own records refute, and Mercedes-Benz classes 163, 164 and 463, which cannot be rear-wheel drive. The new keys are diagnostic.

2026-10-19 · accuracy

Toyota Camry and Avalon (VINs starting 4T1): wrong 'Camry hybrid' label removed; no rear-wheel drive on Mercedes 4MATIC classes

Some petrol Toyota Camry and Avalon cars built in the USA (VINs starting 4T1) were shown as 'Camry hybrid' or with a trim the VIN does not confirm, and that label brought a hybrid fuel and a wrong engine, torque and generation with it. These cars now show their own model name, Camry or Avalon, with the engine and figures that fit them, and the hybrid label is gone. The model name no longer includes a trim level (such as XL, LE or SE) that the VIN does not confirm. On Mercedes-Benz M-Class, GL-Class and G-Class 4MATIC vehicles (classes 163, 164 and 463), a rear-wheel drive that these cars cannot have is no longer shown.

v2.31.0MINOR2026-10-18build f09b87d5bf29

Why this version: A new check across five manufacturer groups (SAIC-MG, BYD, Chery, Geely and Great Wall) withholds details that belong to a later version of an older China-built car and serves the model year coded in the VIN, checked against the brand, model and engine shown; it also carries a reference-data repair for 2017 Buick Enclave engines.

2026-10-18 · accuracy

Older Chinese-built cars: fewer guesses and the model year from the VIN; 2017 Buick Enclave engine corrected

For MG, BYD, Chery, Geely and Great Wall / Haval cars built in China, mostly from 2010 to 2020, we no longer show a model, engine, engine size, gearbox, body or power figure when our records show it belongs to a later version of the car. Where we had shown an estimated model year, we now show the model year coded in the VIN itself, and for some older Geely models we now show a year where we showed none. That year is checked against the brand, model and engine we show, and the earlier answer is kept when they do not fit together. Separately, 2017 Buick Enclaves no longer show the engine that only arrived in 2018.

v2.30.0MINOR2026-10-11build dbdbf121d9c1

Why this version: A new check across several manufacturer groups withholds engine details that came from an engine code the decoder could not confirm, trims taken from other vehicles' listings are withheld unless the vehicle's own listing confirms them, and the values a vehicle's own record holds are no longer erased by later checks. The response gains an engine_details_withheld block that lists what was withheld.

2026-10-11 · accuracy

Unconfirmed engine details and borrowed trims withheld; a vehicle's own record is no longer overwritten

When the decoder could not confirm a vehicle's engine code, it still showed the bore, stroke, compression ratio, aspiration, fuel injection, valvetrain and power and torque ranges of that engine's catalogue entry. These unconfirmed details are now withheld and listed in the new engine_details_withheld block of the API. Trims (variant) that came from listings of other vehicles with a similar VIN are also withheld unless the vehicle's own listing carries them. And the values held in a vehicle's own record, such as a registration card, a verified correction or a researched record, are no longer erased by later checks.

v2.29.0MINOR2026-10-10build bf5343b0b7d6

Why this version: A new check across several manufacturer groups withholds gearboxes that were taken from similar VINs and measured wrong more often than right, and the decoder stops guessing engines on several Isuzu, Nissan and Chery-group VINs. Kia trucks built in 1999 get their Asia Motors label back, as promised in 2.27.0.

2026-10-10 · accuracy

Unreliable gearboxes hidden, the Jetour plug-in hybrid no longer shown as a Jaecoo J7, and fixes for Isuzu, Nissan and Kia

On many VINs the gearbox shown was not read from the car itself but taken from other vehicles with a similar VIN. Where those gearboxes turned out to be wrong more often than right on independent used-car listings, they are now hidden, so you will see a blank gearbox on more vehicles than before, for example on some Audi, BMW, MINI, Opel, Toyota and Holden families. A Jetour plug-in hybrid with a VIN starting LNNBBDEL is no longer shown as a Jaecoo J7, and several Isuzu, Nissan and Kia values that were guessed or wrong are corrected.

v2.28.0MINOR2026-10-05build 3643f3141713

Why this version: New checks across several manufacturer groups withhold values that were only guessed from the manufacturer code or estimated from an engine family, and VINs starting with H (a range now allocated to China) are placed in the right region. A customer team in Egypt sent us 18 VINs of Chinese brands that led to this release.

2026-10-05 · accuracy

Chinese-brand VINs: guessed truck specs, 'electric' MG5s and a wrong region removed

A customer team in Egypt sent us 18 VINs of JAC, Jetour, Chery and MG cars. Our decoder showed many wrong values on them. JAC passenger cars appeared with the specifications of a JAC truck, every MG5 sedan appeared as an electric car, and VINs starting with H were placed in Africa. These are fixed for every vehicle of the same kind, not only these 18. When the model can only be guessed from the manufacturer code, the body, doors, drive, gearbox and power that came with that guess are now withheld. Power and torque figures that were only estimated from an engine family are also withheld when the engine itself is unknown.

v2.27.0MINOR2026-10-03build 7688bcc40665

Why this version: A new check across several manufacturer groups (Ford, GM and Opel/Holden) withholds drive and body values that contradict the vehicle, and the wrong-make check now also covers Chery and the Hyundai Motor Group. Old Hyundais get their real model year back, with the later-generation details that contradicted it removed, and several values hidden by earlier releases are shown again where the manufacturer's records support them.

2026-10-03 · accuracy

Old Hyundais show their real year, and more contradicting values are withheld

Many 1990s Hyundais have a year letter that can also be read as a 2020s year. The decoder now shows the real 1990s year where Hyundai's records confirm it, and removes the series, generation and model details of the later car that had been shown beside it (for example an i30 or a Kona on a 1994 car). It also withholds drive and body values that contradict the vehicle: rear- or four-wheel drive on the front-wheel-drive Chevrolet City Express and its leftover Nissan 1.2-litre figures, front-wheel drive on the Ford Everest, and an SUV body on the Holden Commodore. A Malaysian registration card whose VIN had been misread no longer produces a Jaecoo SUV. Some values hidden earlier are shown again where the manufacturer's records support them: the manual gearbox on SsangYong Korando Cs, and the passenger-car label on the Ford Telstar and on China-built Ford Focus, Fiesta and Mondeo.

v2.26.0MINOR2026-10-03build e2ea4c784e45

Why this version: A new check for every make: power and torque figures that were only the middle of an engine family's range are withheld. It also stops two wrong sources: BMW drive types borrowed from other BMWs, and SAIC-Volkswagen VINs read with another manufacturer's VIN table. Two customer reports led to this release.

2026-10-03 · accuracy

No more averaged power figures, borrowed BMW drive types or wrong data on SAIC-Volkswagen VINs

When the decoder did not know a car's exact engine output, it sometimes showed the middle of the engine family's range: for example 245 hp and 375 Nm for any BMW with a B48 engine. That number is rarely the car's real figure, so it is now withheld and the engine's power and torque range stays shown. On BMWs, the drive type was sometimes taken from other BMWs sharing the start of the VIN, so a rear-wheel-drive 330i appeared as all-wheel drive; when BMW's own type code says otherwise, that value is now withheld. And Volkswagens built in China by SAIC-Volkswagen were being read with General Motors' VIN table, which put a 6.2-litre engine and a wrong series code on small SUVs; that reading is gone.

v2.25.0MINOR2026-10-02build 569102d516eb

Why this version: Two new checks across several manufacturer groups: model years that are impossible for the VIN's own pattern are withheld (Hyundai, Kia and Mitsubishi), and vehicle types that contradict the vehicle are withheld (Ford and SsangYong). The release also narrows the 2.24.0 checks so that right values they had hidden are shown again, and corrects or withholds makes on four more manufacturer codes.

2026-10-02 · accuracy

Right fuel and body labels are back, and more impossible years, vehicle types and makes are withheld

2.24.0 hid some values that were right along with the wrong ones: the petrol fuel of SsangYong Korando Cs with a petrol engine, and the 'passenger car' label of many Ford cars built in Taiwan and China. Those are shown again, because the decision now uses the engine and model codes inside each VIN. This release also withholds model years that the VIN's own pattern rules out (for example a 1997 Mitsubishi shown as 2027), vehicle types that contradict the vehicle (a Ford Ranger shown as a passenger car, a SsangYong pickup shown as an SUV), and makes on manufacturer codes where the badge depends on the country. The Chevrolet City Express, built by Nissan, now shows Chevrolet, and Suzukis built by GM Korea now show Suzuki.

v2.24.0MINOR2026-09-27build 418505270037

Why this version: A new check across several manufacturer groups: the decoder now also withholds generic vehicle types and outdated maker links in its decode graph when the manufacturers' records contradict them, and it fixes years and badges that the 2.23.0 check left behind. It is a minor release because two of these checks have their own trigger and act on more than one manufacturer group.

2026-09-27 · accuracy

More wrong guesses withheld: old model years, Datsun badges, diesel shown as petrol, and outdated makers in the decode graph

This release finishes the clean-up started in 2.23.0. When the decoder withholds a wrongly guessed model, some figures copied from that model stayed behind, and some years were read from the wrong 30-year cycle of the VIN's year letter. Those are now withheld or corrected. Datsun cars built in Indonesia are no longer shown as Nissan, diesel SsangYong Korando Cs are no longer shown as petrol, and the 'How this VIN was decoded' graph no longer shows a maker that the decoder has withheld or that its own tables no longer list for that manufacturer code.

v2.23.0MINOR2026-09-27build 7cef0771f8de

Why this version: A new check across several manufacturer groups: makes and models that the decoder guessed from the manufacturer code alone, and that the manufacturers' own records prove wrong, are no longer shown. Where the manufacturers' records agree on every VIN we checked, the wrong make is replaced by the right one.

2026-09-27 · accuracy

Wrong makes and models guessed from the manufacturer code are no longer shown, and five makes are corrected

When the decoder had no record of a VIN, it sometimes filled in the make or model from the first three characters (the manufacturer code) or from the most common model seen with that code. We checked those guesses against the manufacturers' own records and they were mostly wrong: a Kia Bongo truck shown as a Chevrolet Captiva, a Mercedes-Benz Sprinter built in Argentina shown as a Chrysler, a Nissan built in India shown as OLA, a 2010-2016 Chevrolet built in Vietnam shown as a VinFast VF8, a Renault Espace shown as a Citroen, and a Honda Mobilio shown as a CR-V. These guesses are now withheld and marked as withheld in the data quality details, together with the figures that were copied from the wrong model. Where the manufacturers' records named the same make on every VIN we checked, the correct make is shown instead: Kia, Mercedes-Benz, Nissan, Chevrolet and Suzuki.

v2.22.21PATCH2026-09-24build 8936f488768c

Why this version: A speed fix to an existing lookup: the similar-vehicles list now finds its records through an existing database index instead of reading every stored record. The list is unchanged, vehicle for vehicle and in the same order.

2026-09-24 · performance

Similar vehicles now load in milliseconds instead of four seconds

Under every decode, the home page shows a list of similar vehicles. To build it, the decoder asked the database for other stored records with the same make and model. That request could not use the database's make-and-model index, because the index compares names without regard to capital letters while the request compares them exactly. So the database read all 1.06 million stored records every time, which took about four and a half seconds per page view. The decoder now uses the index to find candidates, keeps only the exact matches, and then sorts them exactly as before. The list is the same vehicle for vehicle and in the same order. It just arrives much faster.

v2.22.20PATCH2026-09-24build 16ed4614699e

Why this version: A fix that runs an existing check at more places: the response cleaner that turns HTML codes such as & back into plain characters now also cleans the make and model in the known-issues, service, parts, Wikipedia-specs, reverse-lookup, search and test-VIN lookups, and the search links built from them. No field is new and no decode answer changes.

2026-09-24 · quality

Known issues, service, parts and search no longer show HTML codes such as &

Release 2.22.18 stopped the similar-vehicles list and the vehicle-image lookup from showing a Chrysler Town & Country as TOWN & COU. Seven more lookups read the same stored records directly and still showed that raw code: known issues, service intervals, parts, Wikipedia specs, reverse lookup by VIN prefix, search, and the test-VIN generator. The known-issues and parts cards also built their search links (Google, Reddit, YouTube, CarComplaints, RockAuto, AutoZone, PartsGeek, eBay, Amazon) from the raw name, so those links searched for “TOWN & COU”. All seven now pass the make and model through the same cleaner the decoder uses, and the links are built from the cleaned name. Only the HTML codes are turned back into characters; which known issues, service data and parts are found for a vehicle is unchanged.

v2.22.19PATCH2026-09-24build b14035d9cee3

Why this version: A fix to an existing page: the history page’s CSV export produced a file that CSV readers could not parse when a value contained a quote, and it now matches the garage export. Nothing new was added, and decode answers are unchanged.

2026-09-24 · quality

The history page’s CSV export opens cleanly

The “⬇ Export CSV” button on the History page wrote each value with a programming-language escape (a backslash before a quote), which is not how CSV works: a model such as It’s “quoted” broke its row in Excel, Numbers, LibreOffice and Google Sheets. The file also used bare line feeds, carried no byte-order mark (accents came out wrong in Excel), turned a hit count of 0 into an empty cell, returned silently when the list was empty, and was named with the UTC date. It now follows the same recipe as the garage export from release 2.22.17: every cell quoted with quotes doubled, Windows line ends, a UTF-8 byte-order mark, an apostrophe in front of any value a spreadsheet would run as a formula (starting with =, +, -, @), the same nine columns as before, your local date in the file name (vin-history-YYYY-MM-DD.csv), and a message when there is nothing to export; the button is greyed out until the list has loaded. Nothing is sent to the server. If a script of yours parsed the old file, note that the new one starts with a byte-order mark and quotes every cell, including the header — read it as UTF-8 with BOM.

v2.22.18PATCH2026-09-24build c8592fa2bbc5

Why this version: A fix that runs an existing check at two more places: the response cleaner that turns HTML codes such as & back into plain characters now also cleans the similar-vehicles list and the vehicle-image lookup. No field is new and no decode answer changes.

2026-09-24 · quality

Similar vehicles and vehicle images no longer show HTML codes such as &

Since 2.22.16 a decode answer is cleaned of HTML codes at every depth, so a Chrysler Town & Country stored as TOWN & COU is shown as TOWN & COU. Two other lookups read the same stored records but never went through that cleaning: the similar-vehicles list shown under a decode, and the vehicle-image lookup. Both now use the same cleaner. It only turns HTML codes back into characters in the make, model and other card text taken from our records. The picture, the Wikipedia link, title and description come from Wikipedia and are left exactly as Wikipedia sends them.

v2.22.17PATCH2026-09-24build 9d9397e14dac

Why this version: A fix to an existing page: the garage’s Export button did nothing because its function had never been written. Nothing new was added, and decode answers are unchanged.

2026-09-24 · quality

The garage’s Export button works

The “⬇ Export” button on the My garage page called a function that did not exist, so clicking it did nothing (the browser logged an error). It now downloads the saved cars as a CSV file named with your local date (vin-garage-YYYY-MM-DD.csv): one row per car with the VIN, the date it was saved and the main decode fields (make, model, year, year range, engine code, displacement, body, fuel, transmission, drive, plant country, source). The file is built from the browser’s own storage — nothing is sent to the server — and it opens cleanly in spreadsheets: every cell is quoted, quotes inside a value are doubled, accents are preserved, and any value that a spreadsheet would run as a formula (starting with =, +, -, @) is prefixed with an apostrophe so it stays text.

v2.22.16PATCH2026-09-24build fc0b967bb038

Why this version: A fix to an existing check: the response cleaner that turns HTML codes such as & back into plain characters now reaches every piece of text inside the answer, not only its top-level fields. No field is new and no top-level value changes.

2026-09-24 · quality

The per-character breakdown no longer shows HTML codes such as &

Some stored records keep an ampersand as the HTML code &, so a Chrysler Town & Country can arrive as TOWN & COU. The decoder already cleaned that in the main fields of the answer, but the cleaning only looked one level deep and ran after the per-character breakdown had been built. So the model field said TOWN & COUNTRY while position 4 of the breakdown still said model: TOWN & COU. The cleaner now walks the whole answer and unescapes every piece of text in it, at any depth: the breakdown, the variant lists, the twin-model and suspect-WMI blocks. Numbers, flags and key names are never touched, and the top-level fields are treated exactly as before.

v2.22.15PATCH2026-09-24build d5758f62cb04

Why this version: A speed fix to one existing page: the graph page now paints before its visualisation library has downloaded. Nothing new appears and no answer changes.

2026-09-24 · performance

The graph page appears sooner

The Knowledge Graph page loads a 690 KB drawing library. It used to be requested at the very top of the page, so browsers showed a blank page until the whole library had arrived. The library is now requested at the end of the page, after the layout, so the page's heading, search box and tabs paint first and the library follows. Explore works exactly as before, and the library is still the copy served from our own site, checked against the same integrity hash.

v2.22.14PATCH2026-09-24build 7021891c4488

Why this version: A fix to an existing page: the home page now shows every decode value and every side answer as plain text and no longer keeps the VIN or a question inside inline click handlers. Nothing new was added, and decode answers are unchanged.

2026-09-24 · quality

The home page shows every value as plain text

The home page builds its result cards in the browser from the decode answer and from the side answers (vehicle image, Wikipedia specs, parts and service links, similar cars, decoder path, the assistant’s reply and the issue-report acknowledgement). Those values were inserted as raw HTML, so a crafted answer or a crafted address could run script in a visitor’s browser. Every one of them is now shown as plain text; the ten result-page actions (copy link, QR code, add to compare, report an issue and submit it, ask a question and the quick questions, use the corrected VIN, twin-model chips, production sub-period chips) carry the VIN and the question as data attributes handled by one page-level handler instead of inline click code; and the vehicle image, the Wikipedia link and the parts-search, engine-code-search and research links only use http(s) addresses.

v2.22.13PATCH2026-09-24build ad5f9b1a4f84

Why this version: A fix to how existing pages are presented: the site's two typefaces are now served from our own site instead of Google Fonts, so the security policy that blocked them is left untouched. No page, panel or value is new.

2026-09-24 · quality

Every page now shows the site's intended typefaces

The site was designed in Inter with JetBrains Mono for VINs and codes, but every page loaded those fonts from Google, and the site's security policy, which only trusts the site itself, blocked that stylesheet. Browsers fell back to their system fonts on all twelve pages. The two typefaces are now served from our own site, so they display everywhere and the security policy stays exactly as strict as before.

v2.22.12PATCH2026-09-24build 1246828e1042

Why this version: A security tightening of an existing page: the graph page's visualisation library is now served from our own site, so the site's script policy again trusts no outside host. Nothing new is served.

2026-09-24 · trust

The graph page loads its library from our own site again

Earlier today the graph page's Explore view was repaired by allowing one outside script host in the site's security policy. The library it needs (vis-network 9.1.9) is now served from our own site instead, checked against the same integrity hash, and the policy once more allows scripts only from the site itself.

v2.22.11PATCH2026-09-24build bbde747c2286

Why this version: A fix to an existing page and a security-header change: the Knowledge Graph page can load its drawing library again, from one allowed address, and the page checks the library’s fingerprint before running it. Nothing new was added, and decode answers are unchanged.

2026-09-24 · quality

The Knowledge Graph page works again

The Knowledge Graph page draws its network with a library loaded from a public address, and the site’s security policy had been blocking that address; every “Explore” ended with an error and the network view, decoder-path and sister-cars tabs stayed empty. The policy now allows that one address, and the page carries the library’s fingerprint so that the browser refuses any other file served in its place.

v2.22.10PATCH2026-09-24build b89773ed7ba6

Why this version: A security fix to an existing page: the Knowledge Graph page now shows the VIN you entered, the decoder-path step names and the graph counts as plain text, and carries the VIN safely in its requests. Nothing new was added, and decode answers are unchanged.

2026-09-24 · trust

The Knowledge Graph page shows every value as plain text

On the Knowledge Graph page, the VIN you entered (or that a link carried) was placed into the “No graph path found” message as HTML, and the decoder-path step names and the graph statistics counts were placed into the page the same way, while the rest of the page already used text. A crafted link could therefore change the page or, in the worst case, run a script. Every value is now shown exactly as it is, the same fix the batch, My garage, Reports, Decode history, Global feed, Compare and VIN encoder pages received, and the VIN is now encoded in the page’s requests, so one containing unusual characters no longer reaches a different address.

v2.22.9PATCH2026-09-24build e292974ffa71

Why this version: A security fix to an existing page: the VIN encoder’s copy and decode buttons no longer carry the VIN inside their code, and the few counts it still placed into the page raw are now shown as plain text. Nothing new was added, and decode answers are unchanged.

2026-09-24 · trust

The VIN encoder’s buttons no longer carry the VIN in their code

The VIN encoder page already showed its values as text, but its “Copy VIN” and “Decode this VIN” buttons, and the copy and decode buttons on every candidate row, had the VIN written into their code, where the page’s text escaping does not apply and a quote could change what the button does. Each button now finds its VIN through a data attribute, the same fix the batch, My garage, Reports, Decode history, Global feed and Compare pages received. The page’s escaping now also covers the apostrophe, and the source counts shown next to WMI candidates, candidate rows and alternative patterns are shown as plain text too.

v2.22.8PATCH2026-09-24build 74d192db9234

Why this version: A security fix to an existing page: the Compare page now shows every VIN and value as plain text instead of HTML, and its chip buttons no longer carry the VIN inside their code. Nothing new was added, and decode answers are unchanged.

2026-09-24 · trust

The Compare page shows every value as plain text

On the Compare page, the VINs (from the address bar, from your saved list, or typed in) and every decoded value in the table were placed into the page as HTML, so a value containing characters such as < or & could change the page or, in the worst case, run a script. Every value is now shown exactly as it is, the same fix the batch, My garage, Reports, Decode history and Global feed pages received. The VIN was also written into each chip’s remove button, so a VIN containing a quote could not be removed; the button now finds its chip through a data attribute.

v2.22.7PATCH2026-09-24build 385fbb34f1d0

Why this version: A security fix to an existing page: the Global decode feed now shows every value as plain text instead of HTML. Nothing new was added, and decode answers are unchanged.

2026-09-24 · trust

The Global decode feed shows every value as plain text

On the Global decode feed, each row’s VIN, make, model, year, country, date, decode and client counts, and the summary boxes, were placed into the page as HTML. This feed shows everyone’s decodes to everyone: the VIN is stored exactly as the person typed it and the vehicle values come from the decoder, some of them from listings, so a value containing characters such as < or & would have changed the page for every visitor or, in the worst case, run a script. Every value is now shown exactly as it is, the same fix the batch, My garage, Reports and Decode history pages received. The page’s two tabs and its Decode links were already safe.

v2.22.6PATCH2026-09-24build edc4204e85bd

Why this version: A security fix to an existing page: the Decode history page now shows every value as plain text instead of HTML, and its buttons no longer carry the VIN inside their code. Nothing new was added, and decode answers are unchanged.

2026-09-24 · trust

Decode history shows every value as plain text

On the Decode history page, each row’s VIN, make, model, year, fuel, engine, country, hit count and date, and the summary boxes, were placed into the page as HTML. The VIN is stored exactly as you typed it and the vehicle values come from the decoder, some of them from listings, so a value containing characters such as < or & could change the page or, in the worst case, run a script. Every value is now shown exactly as it is, the same fix the batch, My garage and Reports pages received. The VIN was also written into the four row buttons’ code, so a VIN containing a quote broke them; each button now finds its row through a data attribute.

v2.22.5PATCH2026-09-24build d3dfdba07073

Why this version: A security fix to an existing page: the Reports page now shows every report value and count as plain text instead of HTML, and its buttons no longer carry the report id inside their code. Nothing new was added, and decode answers are unchanged.

2026-09-24 · trust

The Reports page shows every value as plain text

On the Reports page, each report’s VIN, status, severity, category, the name of who resolved it, the dates, the summary counts and the counts on the filter buttons were placed into the page as HTML, while the free-text fields were already shown as text. The server only accepts fixed values for status, severity and category, so this could not be triggered from the report form; the change closes the gap for good, the same fix the batch page and My garage received. Each button now finds its report through a data attribute instead of having the id written into its code, and the id is encoded in the request address.

v2.22.4PATCH2026-09-23build 56ac81096a89

Why this version: A fix to an existing check on VW-group vehicles: a false 'structural rule says' warning no longer fires, and the check that holds back a doubtful engine code now states the true reason and holds back the torque figure derived from that code. Nothing new is served.

2026-09-23 · accuracy

VW-group vehicles: a false engine warning removed, and the real reason given when a code is held back

On Volkswagen, Audi, SKODA, SEAT and Porsche VINs, position 8 is a platform code, not an engine. Our decoder was treating it as an engine and printing a warning that a 'structural rule' disagreed with the engine code, sometimes naming an engine the car never had. That warning is gone. Where the decoder still holds back a doubtful engine code, the reason now says what is true, and a torque figure worked out from that code is held back with it.

v2.22.3PATCH2026-09-23build 36b3ca8391d4

Why this version: A security fix to an existing page: the My garage page now shows saved values and VINs as plain text instead of HTML, and its buttons work for any saved VIN. Nothing new was added, and decode answers are unchanged.

2026-09-23 · trust

My garage shows every saved value as plain text, and its buttons work for any VIN

The My garage page placed each saved car’s make, model, year, body, engine and VIN into the page as HTML. Because these values are the decode results saved in your browser, one containing characters such as < or & would have changed the page on every visit, or in the worst case run a script. Every value is now shown exactly as it is, the same fix the batch page received earlier today. The VIN was also written into the buttons’ code, so a saved VIN containing a quote broke “Remove”, and one containing & or # sent only part of itself to “Decode again”. Both buttons now work for any saved VIN, and a car photo whose web address contains a quote or brackets now loads instead of being dropped.

v2.22.2PATCH2026-09-23build c01be4a454fe

Why this version: A security fix to an existing page: the batch page now shows decoded values, the typed VIN and error messages as plain text instead of HTML. Nothing new was added, and decode answers are unchanged.

2026-09-23 · trust

The batch page now shows every value as plain text

On the batch page, the make, model, year, body, country, the VIN you typed and any error message were placed in the results table as HTML. Some of our data is collected from listings, and a value containing characters such as < or & could change how the page looked or, in the worst case, run a script in your browser. Every one of these values is now shown exactly as it is. The engine and quality columns already were.

v2.22.1PATCH2026-09-23build 78b7b93b1438

Why this version: A fix to an existing page: the batch page’s “+ garage” button failed on results containing an apostrophe. Nothing new was added, and decode answers are unchanged.

2026-09-23 · quality

The batch page’s “+ garage” button now saves every car

On the batch page, the “+ garage” button failed whenever a result contained an apostrophe, and in our checks every result did, for example in its explanation text. On some rows the button was replaced by a block of raw text. On the others it looked normal but did nothing when clicked. It now saves every row, and the saved car matches the result on screen.

v2.22.0MINOR2026-09-23build 1eaf8344ea99

Why this version: New output: a Quality column on the batch page and a status column per field in its CSV export, plus a new optional request field, include_quality, that lets API users skip the quality block.

2026-09-23 · trust

Batch results now show each value's quality, and the CSV export carries it

The batch page gains a Quality column, and its CSV export now gives every exported field its status (verified, unverified, estimated, withheld or missing), so a spreadsheet shows at a glance which values are confirmed. API users who do not need the per-field quality block can now leave it out.

v2.21.0MINOR2026-09-23build 7376987efef4

Why this version: New response field and header: every answer carries decoder_version, also sent as X-Decoder-Version and shown on /health.

2026-09-23 · trust

Every answer now carries the decoder's version number, and this page is a patch log

Each decode now says which release of the decoder produced it, so a saved or printed result can always be traced back to its release. This page now lists every release since August under its version number, with the reason it got that number.

v2.20.0MINOR2026-09-23build dea84bb3c41e

Why this version: New response block: data_quality labels every field verified, unverified, estimated, withheld or missing.

2026-09-23 · trust

The API now says which values are verified, and which are not

Every decode now includes a data_quality section: each field is labelled verified, unverified, estimated, withheld or missing, with a one-sentence reason and where the value came from. 'Verified' is deliberately strict: a value earns it only when an independent record for that exact vehicle confirms it, so most values honestly read unverified. It is documented, with a ready-to-use example, in the API docs.

v2.19.0MINOR2026-09-22build 63fd86968b5e

Why this version: New method across manufacturers: body style comes from the vehicle's own VIN pattern instead of broad US registration classes.

2026-09-22 · accuracy

Station wagons, vans and hatchbacks are no longer labelled SUVs

US registration records use broad classes: 'Suburban' covers both SUVs and station wagons, and we were showing every one as an SUV. The decoder now uses the body styles recorded for the vehicle's own VIN pattern. A Volvo V70, VW Golf SportWagen or Audi A4 Avant now reads Wagon, a Ford Focus reads Hatchback, and Sprinter and Transit vans read Van.

v2.18.1PATCH2026-09-22build e37304140231

Why this version: Corrections: the engine-size check now runs at the very last step, and a data repair fixed Sprinter engine sizes.

2026-09-22 · accuracy

Mercedes-Benz and Dodge Sprinter vans get their engine data back

A listing source recorded 3.9 litres for 776 Sprinters that have the 3.0-litre OM642 V6 diesel. That false figure made the decoder reject the correct engine and show no engine data at all. The false figure is removed: Sprinters now show their cylinders and power, and the OM642 engine is shown as unverified instead of being hidden.

v2.18.0MINOR2026-09-22build 02e57bfe9b1c

Why this version: New check across manufacturers: bore, stroke and cylinder count must agree with the engine size.

2026-09-22 · quality

Engine measurements that contradict the engine size are withdrawn, with an explanation

Bore, stroke and cylinder count fix an engine's size exactly. When they disagreed with the engine size shown on the same page by more than 3%, one of them had to be wrong. The decoder now withdraws the bore, stroke and compression ratio in that case, because they usually come from a single catalogue row while the engine size has independent support, and says why on the page.

v2.17.0MINOR2026-09-21build 76d24f8ca803

Why this version: New page panel: 'What might be wrong', with held-back values shown as unverified. Also, engine reference data corrected against manufacturer sources.

2026-09-21 · trust

The vehicle page shows the values we held back, and what might be wrong

When the decoder is not confident enough in a value it holds it back, and until now the page just showed a blank. Those values now appear, clearly marked unverified, and a new 'What might be wrong' panel lists every field we withheld, estimated or are unsure of, plus any risk that affects the whole decode.

2026-09-21 · accuracy

Engine reference data corrected against manufacturer sources

We compared our engine reference tables with manufacturer documents and independent sources, and fixed every conflict we could prove with at least two citations. The most common fault was torque recorded in pound-feet but labelled as newton-metres. Proposals that failed an independent check were not applied.

v2.16.0MINOR2026-09-21build 8fe3f7250f8a

Why this version: New labelled values on the vehicle page: bore × stroke and compression rows. Also, correct US engine data released from over-strict checks.

2026-09-21 · coverage

US vehicles get their engine details back

Safety checks added in August were holding back correct engine data together with doubtful data, and American vehicles lost much of the engine detail they used to show. Between 18 and 21 September we went through every check, released the values independent records confirm, and kept the protections that catch real errors.

v2.15.1PATCH2026-09-18build 8f2777d5ceaf

Why this version: Correction: a VIN-table rule now checks the model year.

2026-09-18 · accuracy

A rule that gave every model year of a VIN pattern the same engine now checks the year

One of our VIN tables mapped a single VIN character straight to one engine for a whole manufacturer code, with no model year. We measured it: 40 of its 62 checkable entries were wrong for every model year. An entry is now used only when the vehicle's own NHTSA record or its model year supports it.

v2.15.0MINOR2026-09-18build b10454782dbf

Why this version: Existing source, new field across manufacturers: the engine code NHTSA holds for that exact VIN, with NHTSA's known errors blocked.

2026-09-18 · coverage

US vehicles show the engine code filed with NHTSA for that exact VIN, with NHTSA's own known mistakes blocked

Manufacturers file an engine description with NHTSA for every VIN, and for about a quarter of US vehicles it is an exact engine code. We now use it as the last step of the decode, after checking it against the engine family and the vehicle's own measurements. Four kinds of NHTSA error we found, such as some 2014-2016 Sienna records naming a later engine, are blocked. On 8,503 test VINs it added over a thousand engine codes, and none of those we could check against another record was wrong.

v2.14.1PATCH2026-09-17build ea484b9d2280

Why this version: Corrections for one model: the Honda Accord's exact engine and gearbox.

2026-09-17 · accuracy

Honda Accords get their exact engine and gearbox, and a misleading 'Engine family' line is gone

A 2014 Accord was shown with no engine code and a 5-speed automatic it never had. Three rules were fixed: the exact engine variant now comes from the car's own NHTSA record when it agrees with the engine family we hold, a gearbox rule written for Malaysian Accords now applies only outside North America, and 2003-2007 Accords are split by model year so each gets its own engine. We also removed the 'Engine family' line from the vehicle page: on real traffic at least 14 of the 194 we displayed were wrong.

v2.14.0MINOR2026-09-13build c6a53de0cacb

Why this version: New check across manufacturers: an engine code we cannot stand behind is withdrawn everywhere on the page and in the API.

2026-09-13

When we cannot stand behind an engine code, the vehicle page no longer shows one anyway

A vehicle whose engine code could not be verified was still having an engine named for it elsewhere on the page and in the API. A 2003 Nissan Almera displayed a 2020 engine. A 2012 Civic's data named a Japanese-market Fit engine while the correct code sat unused. Those claims are now withdrawn wherever they appear, and nothing is thrown away: each withdrawn value is kept in the response, marked unverified, with the reason it was held back.

v2.13.1PATCH2026-09-12build 54ffe7163bbf

Why this version: Reliability fixes: a failed NHTSA call no longer hides engine details until restart, and the year's confidence dot now matches the evidence.

2026-09-12

A failed lookup no longer hides a vehicle's engine details until restart, and the year's confidence dot now reflects the evidence

Two quiet defects. A failed call to NHTSA was remembered forever by whichever server handled it, so a single two-second timeout could hide a vehicle's engine details for hours. And the confidence dot beside the model year showed maximum certainty whenever a network lookup had set that year, even though that lookup checked nothing at all.

v2.13.0MINOR2026-09-12build 119770ef2a24

Why this version: Existing source, new field across manufacturers: NHTSA's record now also fills the assembly plant name. Also fixed: a year that could change between identical requests.

2026-09-12

Vehicles now show the assembly plant that built them, and a model year can no longer change between identical requests

NHTSA's per-VIN record names the plant a vehicle was built in, and we were dropping that name instead of serving it. It is now shown for 415 vehicles in our test set, checked against the vehicle's own city and state so a corporate label such as 'GMNA' is refused rather than displayed. Separately, a year-correction rule was switching itself off on a vehicle's first decode, so the first person to look up a VIN could see a different year from everyone after them.

v2.12.0MINOR2026-09-12build 3fa04ec0d761

Why this version: New data source: NHTSA's per-VIN record now decides the plant, model name and engine details of North American VINs.

2026-09-12

North American VINs now use NHTSA's own per-VIN record for the plant, the model name and the engine details we were holding back

Manufacturers must file their VIN decoding with NHTSA, and we already held its answer for 157,000 VINs without using it. Comparing 2,400 North American VINs showed the plant city wrong 46% of the time, model names cut short on one in eight, and engine details hidden on the majority of vehicles even when our own data had them. This release uses the NHTSA record to confirm and release those values, and repairs several wrong model names.

v2.11.0MINOR2026-09-11build b294f91a9319

Why this version: New response field: recall_vehicle says which vehicle each recall list was fetched for.

2026-09-11

Safety recalls are now found under the name NHTSA actually files them under, and the site's VIN-pattern count is honest

Recalls were looked up while the model name was still provisional, so NHTSA rejected keys like GRANDCHEROKEE, F150 or SEDONA EX and the vehicle appeared to have no recalls. The lookup now runs once the vehicle is fully identified and uses NHTSA's own model name for North American VINs. On 500 test VINs the right recall list is now returned for 487, up from 304. Separately, the headline that claimed 930,524 decodable VDS codes was wrong by about 14 times and has been replaced.

v2.10.0MINOR2026-09-11build cdbaa51422ca

Why this version: New data source: Toyota's dealer catalogue now confirms Toyota and Lexus engine codes. Also fixed: recalls hidden after a model's first decode.

2026-09-11

Safety recalls now show on every decode, and Toyota engine codes are confirmed from the dealer catalogue

NHTSA safety recalls were only shown the first time a model was ever decoded; on every later decode a date-handling fault hid them. That is fixed, and failed NHTSA calls can no longer be recorded as 'no recalls'. Toyota and Lexus engine codes are now checked against Toyota's own dealer parts catalogue, which fills or corrects about 1,800 vehicles. Fast API requests no longer make outside network calls.

v2.9.0MINOR2026-09-10build a132942bccc7

Why this version: New data source: Nissan's dealer catalogue and per-VIN factory table now decide Nissan and Infiniti engine codes.

2026-09-10

Nissan and Infiniti engine codes now come from the dealer parts catalogue

We hold Nissan's own dealer catalogue and a per-VIN factory build table, but the decoder had never used them. It now looks up a Nissan or Infiniti VIN in the factory table, reads the chassis code, and takes the engine from the catalogue. On a 1,761-vehicle test, 776 cars that previously showed no engine code now show one.

v2.8.8PATCH2026-09-10build 55bfdfb9d94e

Why this version: Correction within one manufacturer group: BMW catalogue engine codes are checked against the engine reference before they are served.

2026-09-10

BMW engine codes from the dealer catalogue are now checked against the engine reference before being served

The BMW dealer-EPC path serves engine codes for about three quarters of BMW VINs. A small class of catalogue tokens that no engine reference recognises was being served at full confidence - and in some cases used to overrule and blank out a car's displacement and cylinder count. Those are now served at engine-family grain, or withheld with the evidence stated.

v2.8.7PATCH2026-09-10build 53dfcb7a8f0b

Why this version: New check for one manufacturer group (GM): electric models are no longer given a combustion engine code.

2026-09-10

Electric GM vehicles are no longer given a combustion engine

Battery-electric Chevrolet, GMC and Cadillac models were being served a petrol or diesel engine code inherited from the position-8 engine tables. When the record itself shows the vehicle is electric, that code is now withheld and the evidence is stated instead.

v2.8.6PATCH2026-09-09build 119864b70f00

Why this version: Wording only: a suspected mistyped VIN now gets a lead to check, not an asserted correction.

2026-09-09

When a VIN looks mistyped, we now offer a lead instead of asserting a correction

If your VIN's manufacturer code is one we have flagged as commonly mistyped, we used to tell you what your vehicle 'really' is. We now say what we actually know: that the code resembles another one, and that you should check it against the vehicle.

v2.8.5PATCH2026-09-08build 10195a8108fd

Why this version: Wording only: refusal messages now say what we observed. No field was added.

2026-09-08

When we can't decode a VIN, we now say why - accurately

If we turn a VIN away, the message now tells you what we actually observed rather than asserting what your vehicle is. One customer's MINI was being told it was a trailer.

v2.8.4PATCH2026-09-08build e13fd838ffcd

Why this version: Correction: ordinary cars were being refused as boats.

2026-09-08

Cars are no longer turned away as boats

Some ordinary cars were being refused outright, with the decoder insisting they were boats. They now decode normally - and genuine boats and trailers are still correctly declined.

v2.8.3PATCH2026-09-08build 39e3189a0a56

Why this version: Correction: when the year character repeats every 30 years, the decoder no longer leans on evidence about other vehicles.

2026-09-08

Thirty-year misdates corrected on vehicles we know least about

A VIN's year character repeats every thirty years, so 1988 and 2018 look identical. When the decoder had to guess which, it was allowed to lean on evidence that was never about your vehicle - and sometimes chose thirty years wrong.

v2.8.2PATCH2026-09-08build 25332621cfe0

Why this version: Correction to an existing rule: one vehicle's engine details could be copied onto unrelated vehicles.

2026-09-08

Fewer wrong answers in every category

We found a flaw that let one vehicle's engine details be quietly copied onto unrelated vehicles - and fixing it reduced wrong answers across engines, displacement, year and fuel all at once.

No new versionMEASUREMENT

Why no version: this change was to how we test the decoder; the decoder itself did not change.

2026-09-08

We fixed how we measure ourselves

Our regression tests were quietly ignoring every vehicle the decoder refused to answer, and reporting a diagnostic column as zero when it was not. Both are fixed, and our scores are restated honestly.

v2.8.1PATCH2026-09-07build 726c98ca84fe

Why this version: Corrections: the BMW catalogue now outranks other data for BMW, and Honda CR-V and Accord records were repaired.

2026-09-07

The dealer catalog now has the last word on BMW engines

We found the decoder second-guessing the manufacturer's own parts catalog - and sometimes replacing a correct engine with an impossible one. The catalog now wins.

2026-09-07

Honda CR-V and Accord records cleaned against the factory catalog

We removed engine records that Honda's own dealer catalog shows are impossible for the cars they were attached to - including a third-generation CR-V engine recorded on second-generation vehicles.

v2.8.0MINOR2026-09-07build 3ad20e65d756

Why this version: New data source: BMW's dealer parts catalogue (12.6 million rows) now decides BMW engine codes.

2026-09-07

BMW engines now verified against the manufacturer's own dealer catalog

BMW and BMW M engine identification is now cross-checked against the same OEM parts-catalog data BMW dealerships use - 12.6 million catalog rows now back the decoder.

v2.7.3PATCH2026-09-07build 6229510f9de6

Why this version: Correction: an old Ford letter table was retired, so correct Ford engines show again.

2026-09-07

Ford engines un-hidden: Explorer, Mustang and truck data freed from a bad rule

A user's 2020 Explorer was missing its engine - the culprit was a legacy one-size-fits-all Ford letter table that contradicted correct data and made the decoder hide it.

v2.7.2PATCH2026-09-07build 63607e575ccb

Why this version: Correction for one model: the Mazda CX-9 engine.

2026-09-07

Mazda CX-9 gets its real engine back

A user spotted a suspicious engine label on a 2014 CX-9 - and they were right.

v2.7.1PATCH2026-09-07build 9c530c066e80

Why this version: Correction: a safety check was hiding the correct Toyota Tacoma and Kia Sportage engines.

2026-09-07

Tacoma and Sportage engines now fully shown

User-reported fix: Toyota Tacoma (3.5 V6, 2GR-FKS) and Kia Sportage (2.5 GDI, G4KN) VINs now serve their full engine identity - the decoder had resolved both codes internally but a safety gate hid them.

v2.7.0MINOR2026-09-07build 9cb1be836bd9

Why this version: New check on every make: fuel labels in other languages are mapped to the standard values, and a value outside the standard list is held back. Also fixes for Ford Super Duty, VW and Genesis.

2026-09-07

Ford Super Duty engines and cleaner provenance

Ford Super Duty trucks decode their real engines per year-band (year-guessing default deleted - unknown codes now honestly abstain), the European VW/Audi engine tail joins the abstention framework with its downstream writers gated in the same release, Genesis 3.3/3.8 sedans gain 9,000 verified engine fills, Toyota HiLux and Nissan X-Trail/Patrol gain new verified year ladders, four statistically-impure inference rules are disabled with their weekly-rebuild resurrection path closed, and mixed-language fuel labels are normalized at serve time.

v2.6.0MINOR2026-09-07build 377054c6e518

Why this version: New method across manufacturers: real build years from serial-number ranges for Toyota, Mazda, Nissan and Mercedes VINs that encode no year.

2026-09-07

Build years for VINs that do not encode them

Serial-range ladders mined from 63 verified production cohorts now serve real build years for Toyota, Mazda, Nissan and Mercedes vehicles whose VINs encode no year at all - each cohort ships only after clearing a 95%-accuracy holdout gate, and vehicles outside a proven cohort keep honest year ranges instead of guesses.

v2.5.0MINOR2026-09-07build b5f9b8ba5703

Why this version: New method across manufacturers: the cylinder count is filled from coherent engine evidence (measured 98.5% accurate), and engine codes fill from factory-confirmed records.

2026-09-07

Verified answers replace blank fields

Verified engine codes now fill from factory-corroborated cells (Skoda Octavia BVZ, VW Jetta AWP/CBUA, Subaru FB25), a measured 98.5%-accurate cylinder fill drains 40% of the missing-cylinders backlog, Amarok/Crafter/Ranger diesels get their fuel from coherent engine evidence, and family-label power guesses (76.6% wrong when measured) now abstain while honest power ranges keep serving.

v2.4.1PATCH2026-09-05build e779e145c403

Why this version: Corrections to model-name tables, brand by brand. Nothing new was added.

2026-09-05

Model names cleaned up across six brands

Wave F cleans up the model-name long tail across six brands: Dodge Grand Caravans no longer decode as Journeys, Nissan Muranos/Pathfinders/Xterras get their real names back (full letter-table audit), Audi Q5s stop reading as Q3s, Ford S-MAX identity restored, Renault Scenic/Kadjar/Express serve their own nameplates instead of platform siblings, VW Taigo and Skoda Kodiaq/Superb decode from the correct VIN positions, SEAT Arona/Ateca land right, and two internal self-contradictions (BMW model-vs-series, Mercedes W204-vs-W203) are fixed at the source.

v2.4.0MINOR2026-09-05build ee8e0aa11f98

Why this version: New check across manufacturers: a family engine label (such as VW EA211 or Ford EcoBlue) can no longer pass a family-default size or cylinder count to a specific car.

2026-09-05

A structural honesty layer for engine specs

Marketing-family engine labels (like VW EA211 or Ford ECOBLUE) can no longer smuggle a family-default displacement or cylinder count onto a specific car from ANY data layer - a structural rail catches all of them at serve time.

v2.3.5PATCH2026-09-04build 982db0ede6f1

Why this version: Rules that each serve one manufacturer group: Nissan export model names from the chassis code, Hyundai and Genesis engine codes from the engine letter, plus fixes.

2026-09-05

The three biggest error families, fixed

Wave D targets the three biggest remaining error families found by our 937,000-VIN test campaign: Nissan/Infiniti export VINs now decode their factory nameplate from the chassis code inside the VIN (Teana no longer masquerades as Sentra), Genesis and Hyundai luxury models get their true engine codes from the VIN engine letter (verified against factory catalogs - including 5.0 V8s that decoded as 3.3 V6s), and the Genesis-to-G80 2017 rebrand is now era-aware in both directions.

2026-09-04

Nissan export VINs get their factory model names

Nissan JN1/JN8 Japan-export VINs now decode the factory model from the chassis code in the VIN itself (50 chassis families, e.g.

v2.3.4PATCH2026-09-04build f19a46f9cc0a

Why this version: Correction within one manufacturer group: VW Golf-family models are now told apart.

2026-09-04

Golf-family precision and five more fixes

VW Golf-family VINs now distinguish Golf, Golf Plus, Jetta, Beetle, Sportsvan and e-Golf using plant and serial evidence inside the VIN.

v2.3.3PATCH2026-09-04build 681ef008e59a

Why this version: New rule for one manufacturer group only: Skoda fuel is read from the engine letter in the VIN.

2026-09-04

Skoda fuel read straight from the VIN

Skoda fuel now decodes from the engine letter inside the VIN itself (75 verified cells across Fabia/Octavia/Kamiq/Karoq/Enyaq - petrol, diesel, hybrid and electric all identified structurally, with unknown letters honestly abstaining).

v2.3.2PATCH2026-09-04build 1c8b531cc086

Why this version: Corrections to existing rules for specific models (Subaru, Ford Ranger and Everest, Nissan exports and more). Nothing new was added.

2026-09-04

Nine fixes from the million-VIN test campaign

Nine-class accuracy wave from the full-corpus test campaign: Subaru Forester/Legacy engines now decode from the chassis code in the VIN itself (petrol cars no longer served a phantom diesel), Ford Ranger/Everest V6 models keep their real 6-cylinder identity, Nissan Patrol/X-Trail export VINs get honest production-window years instead of a wrong decade, Toyota bZ4X decodes as the EV it is, Volvo V70s are no longer mislabeled V90 (and a fictional Polestar rule is gone), Mercedes Vito vans keep their name, and Chery models abstain rather than guess.

v2.3.1PATCH2026-09-04build 1cf9c9f5e7ee

Why this version: Correction within one manufacturer group: VW Group fuel type is no longer guessed from thin family statistics.

2026-09-04

VW-group fuel accuracy overhauled

Fuel-type accuracy overhaul for European VW-group vehicles (VW, Audi, Skoda, SEAT): the decoder no longer guesses petrol vs diesel from thin family statistics.

v2.3.0MINOR2026-09-03

Why this version: New method across manufacturers: the decoder reads how six brands build their VINs (which positions encode model, chassis and engine), and engine rules now depend on the generation.

2026-09-03 · accuracy

The decoder now understands VIN construction logic

A breakthrough in how our decoder works: instead of only recognizing VINs it has seen before, it has now extracted the underlying construction grammar manufacturers use - which positions encode the model, chassis and engine family for Honda, BMW, Renault, Mazda, Nissan and Subaru. Proven on thousands of held-out combinations at up to 100% accuracy and stress-tested against real-world registrations before going live, this means the decoder can correctly identify vehicles it has literally never encountered - because it understands the logic, not just the examples.

2026-09-03 · accuracy

Honda Odyssey engines now exact across all four generations

A generation-blind rule was assigning the newest Odyssey engine to every North American Odyssey, and our own safety rails were catching the contradiction and hiding the engine rather than serving a wrong one. The chassis code inside the VIN itself now selects the correct engine for each generation - from the 1999 original through the current model - with the mid-2000s generation honestly reporting the engine family where the exact variant depends on trim.

2026-09-03 · quality

Generation-aware engines across every brand

The bug class behind the Odyssey fix is now closed everywhere: we audited every rule that maps a model name to an engine and found dozens written for one generation but applied to all of them. The worst offenders - Jeep Cherokee, VW Jetta, Chevy Tahoe and Suburban among others - now carry verified generation ladders or honestly say nothing, and a new global safeguard automatically catches any engine claim that contradicts the engine's own production years, for every make, forever.

2026-09-03 · quality

Full security and reliability audit of the decoder and website

Nine independent audit passes hammered every page, endpoint and decoding layer with over 1,500 adversarial requests. The core held up impressively - zero crashes, authentication solid, sub-second decode times under load. What the audit did find is now fixed: hardened input handling and new browser security headers, a fuel-type edge case where two data layers could disagree, two slow public endpoints made instant, stronger privacy for decode history, and smarter year handling for brands that don't encode the year in the VIN - eliminating seven wrong years from our benchmark in one change.

2026-09-03 · accuracy

373 modern engines freed from a hidden date trap

A registration-card investigation on a Malaysian-assembled Renault uncovered a subtle data bug: engines documented as 'in production since year X' had been stored as if they stopped that same year, silently blocking 373 modern engines from ever being shown on newer cars. All 373 are now correctly open-ended, year arbitration got smarter about which brands truly encode a year in the VIN, and the reported vehicle now decodes perfectly from its official registration record.

2026-09-03 · performance

Infrastructure upgrade: 10x faster data backbone

The decoder's entire knowledge base - over 550 collections including 300 million manufacturer records - now runs on dedicated high-performance infrastructure co-located with the decoder itself. Data lookups that previously crossed the internet now happen in microseconds on the same machine, making decodes faster and immune to third-party cloud slowdowns.

v2.2.0MINOR2026-09-02

Why this version: New data source: manufacturers' own factory build records now decide model, engine and year (Nissan, Subaru, Mazda, VW Group, BMW, Honda, Renault, BYD, Mitsubishi).

2026-09-02 · Big upgrade

The decoder now learns directly from manufacturer factory records

We connected millions of official factory build records (Nissan, Subaru, Mazda, Volkswagen Group) straight into the decoder's brain. It learned over 10,000 new VIN patterns from the people who built the cars.

2026-09-02 · Big upgrade

Five more manufacturers learned: BMW, Honda, Renault, BYD, Mitsubishi

The decoder's factory knowledge grew from 10,000 to 56,000 learned patterns in one day. BMW type codes, Honda's per-market engine ladders, Renault's own decoding rules, BYD prefixes and Mitsubishi production records now resolve directly from the VIN.

2026-09-02 · Accuracy

Fourteen more engines right - learned from 160 million parts records

We distilled the world's parts catalogues into an engine dictionary: which engine belongs to which chassis code, straight from manufacturer data. Fourteen more cars in our verification library now show their exact engine - with zero new errors.

2026-09-02 · coverage

Japanese homologation codes now power fuel and engine detection

Vehicles imported from Japan carry government type-designation codes, and our decoder now reads their official grammar: it can tell petrol, diesel, hybrid, plug-in hybrid and electric apart directly from the designation prefix, and for Renault models it reads the exact engine code embedded in the designation itself. Every new mapping was verified against official Japanese market specifications before going live.

2026-09-02 · quality

Model-year logic validated against 60 million factory records

We tested our model-year decoding against 60 million manufacturer build records. The industry-standard year encoding was confirmed for 92 manufacturer codes with over 98% agreement, and we mapped exactly which manufacturers do not encode a year in the VIN, so the decoder never guesses where the data is not there.

2026-09-02 · accuracy

Factory records now correct mislabeled Renault models

When a Renault VIN arrives with a wrong model name attached from a polluted data source, the decoder now recognizes the conflict and serves the model that Renault's own factory grammar proves for that VIN - while carefully preserving trim variants and verified data.

2026-09-02 · quality

Independent audit hardens our accuracy benchmark

We ran a full independent audit of how the decoder learns, and raised the bar: our internal accuracy benchmark is now strictly separated from all training data, every learning pipeline enforces that separation automatically, and a handful of under-evidenced mappings were retired until stronger independent proof arrives. Where retiring a mapping could have exposed stale third-party data, new coherence safeguards now catch it - so a petrol car can never be served a diesel engine. Accuracy numbers we report are now provably earned, never memorized.

2026-09-02 · coverage

Volkswagen Group VINs now decode from the factory's own build records

For 1.5 million Volkswagen, Audi, SKODA, SEAT and Porsche vehicles, the decoder now consults the manufacturer's own production record for that exact car - returning the precise factory engine code, model year and even the build date, instead of an educated guess. When your VIN is in the factory books, you get the factory answer.

2026-09-02 · accuracy

Renault years now bounded by the factory's production calendar

Renault encodes its model type in every VIN, and we now pair that with the manufacturer's own production calendar for each type - nearly 5,800 model variants gained factory build-year windows. When a VIN's year letter claims a year the factory provably never built that model, the decoder now says so honestly instead of passing the error through.

2026-09-02 · quality

Every data source re-audited field by field

We audited every data source the decoder learns from, field by field, and recovered value that earlier pipelines had silently dropped: factory build-year windows now cover all Nissan and Subaru learned keys, Honda coverage quadrupled by handling the factory's wildcard notation, BYD coverage doubled, Australian displacement and body-style evidence turned back on across 200,000 listings, and several subtle data-reading bugs were fixed - including one that could label hybrid vehicles as petrol.

v2.1.0MINOR2026-08-28

Why this version: New method across manufacturers: an engine code is deduced from the specs on file when they match exactly one engine the brand ever made.

2026-08-28 · Smarter

Engine codes deduced from the specs

When the specs on file (size, cylinders, fuel, power) match exactly one engine ever made for that brand, the decoder now names it - verified against real registration documents before release.

2026-08-28 · Coverage

Rolls-Royce and Mercedes-Maybach: full coverage

Ghost, Phantom, Cullinan, and every modern Maybach (S550 to S680, GLS600) now decode with the exact factory engine, power and torque.

v2.0.0NEW MAJOR2026-08-25

Why this version: Start of version 2. From August every release passes the automated checks before it goes live, and a value the decoder cannot stand behind is held back instead of guessed. Releases before August 2026 were Beta 1.0.

2026-08-26 · Trust

We'd rather show a blank than a wrong answer

New safeguards stop one mislabeled foreign record from contaminating a whole model family - the error that once showed petrol cars as diesels.

2026-08-25 · Coverage

Fifteen brand families upgraded in one month

Infiniti, Acura, classic Mercedes and AMG, Opel, European and Thai-built Fords, Land Rover, Lada and more - each fixed for the whole model family, permanently.

Beta 1.0BETAbefore August 2026

Every release before August 2026. These releases are not renumbered.