DEV Community

Vin Lookup
Vin Lookup

Posted on

VIN Positions 10-17 Explained: Model Year, Plant Codes and Serial Numbers

Positions 10 through 17 of a VIN are called the Vehicle Identifier Section (VIS). Most explainers stop at "position 10 is the year." This post goes a bit further: what position 11 (the plant code) and positions 12-17 (the serial number) actually tell you, how to use them, and where people get them wrong.

Quick recap of the VIS

Position Meaning
10 Model year code
11 Assembly plant code
12-17 Production sequence (serial) number

For low-volume manufacturers (fewer than 1,000 vehicles per year), positions 12-14 are part of the manufacturer identifier and only 15-17 are the sequence. That's signaled by a 9 in position 3.

Position 10: the model year, with a 30-year catch

The year code cycles through letters and digits, skipping I, O, Q, U, Z and 0:

  • A=1980/2010, B=1981/2011 ... Y=2000/2030
  • 1=2001/2031 ... 9=2009/2039

Because the cycle repeats every 30 years, A could be 1980 or 2010. For passenger vehicles from 2010 onward, U.S. rules use position 7 to disambiguate: a letter in position 7 indicates the newer cycle (2010+), a digit the older one. In practice, a decoder backed by manufacturer data resolves this for you, but it's worth knowing if you're writing your own parser.

const YEAR = 'ABCDEFGHJKLMNPRSTVWXY123456789';
function modelYear(vin) {
  const idx = YEAR.indexOf(vin[9].toUpperCase());
  if (idx < 0) return null;
  const base = /[A-Z]/i.test(vin[6]) ? 2010 : 1980;
  return base + idx;
}
Enter fullscreen mode Exit fullscreen mode

This heuristic is reliable for light passenger vehicles in North America. It's not guaranteed for trucks, buses, or vehicles built for other markets, so treat it as a hint and prefer a real decode.

Position 11: the plant code

Position 11 identifies the assembly plant. There is no universal table. Each manufacturer assigns its own codes, so K means one factory for one brand and a completely different factory for another.

That has a few consequences:

  1. You need manufacturer data to decode it. In the U.S., manufacturers file this with NHTSA, and the public vPIC database exposes it as fields like Plant City, Plant State, Plant Country, and Plant Company Name.
  2. Country of assembly is not always position 1. Position 1 is the manufacturer's region code (part of the WMI). A brand with a U.S. WMI can still build some models in Mexico or Canada. The plant code is what tells you where this car was assembled.
  3. Plants change. Models move between factories over their life cycle, so the same model and year can show different plant codes.

Why buyers care

  • Recalls are sometimes plant-specific. A campaign may only cover vehicles from one plant within a VIN range. Knowing the plant helps you read recall notices, though you should always confirm with an official VIN recall lookup.
  • Consistency check. If a seller says "built in Japan" and the decode says a plant in Kentucky, that's not necessarily a problem, but it's a sign the seller's info isn't reliable.
  • Collector value. For some enthusiast models, plant of origin affects value and authenticity.

Positions 12-17: the serial number

The last six characters are the production sequence number assigned by the manufacturer. It's usually numeric, though some manufacturers use letters in some positions.

What it can tell you:

  • Rough production order within a model, year and plant. Lower numbers generally mean earlier production, but manufacturers don't always start at 000001 and don't always count in a single run.
  • Recall ranges. Recall notices often specify affected VINs by sequence ranges ("from ...000123 to ...004567"), which is why the full VIN matters.

What it cannot tell you:

  • Exact build date. Some manufacturers publish build-date lookups, but the serial alone isn't a date.
  • Trim or options. That's in positions 4-8, or not encoded at all.

Common mistakes

  • Using only the last 6 or 8 characters. Parts counters often do this, which is fine within one brand, but it's not unique across manufacturers.
  • Assuming plant codes are standardized. They're not; always decode against the manufacturer's data.
  • Ignoring the low-volume rule. If position 3 is 9, positions 12-14 aren't serial digits.
  • Trusting a VIN typed by hand. Letters I, O and Q never appear; if you see them, it's a typo for 1 or 0.

Getting the data programmatically

NHTSA's vPIC API returns plant fields for a VIN:

https://vpic.nhtsa.dot.gov/api/vehicles/DecodeVinValues/<VIN>?format=json
Enter fullscreen mode Exit fullscreen mode

Look for PlantCity, PlantState, PlantCountry, PlantCompanyName, and ModelYear. Coverage depends on what each manufacturer filed, so some fields may be blank for older or imported vehicles.

Summary

  • Position 10 is the year code; it repeats every 30 years, and position 7 helps disambiguate for newer passenger cars.
  • Position 11 is a manufacturer-specific plant code; decode it with manufacturer data, not a generic table.
  • Positions 12-17 are a production sequence, useful for recall ranges and rough build order, not exact dates.

Disclosure: I build VIN Lookup, a free VIN decoder that shows model year and plant details from NHTSA's public data.

Top comments (0)