VIN Model Year Codes: The 10th Character Table

Decode the model year from the 10th VIN character, including the 30-year cycle and how to tell 1990s vehicles from 2020s vehicles.

The 10th character

Position 10 of a 17-character VIN encodes the model year. The sequence uses letters and digits, skipping I, O, Q, U, Z, and 0.

Extracting It Automatically

When you read this data from photos, the VIN OCR API returns it as structured JSON, and you can apply the rules on this page as validation. Try it with the free scanner.

Where This Fits

  • The 30-year cycle: A=1980 or 2010, B=1981/2011, C=1982/2012, D=1983/2013, E=1984/2014, F=1985/2015, G=1986/2016, H=1987/2017, J=1988/2018, K=1989/2019, L=1990/2020, M=1991/2021, N=1992/2022, P=1993/2023, R=1994/2024, S=1995/2025, T=1996/2026, V=1997/2027, W=1998/2028, X=1999/2029, Y=2000/2030, then 1–9 for 2001–2009 and 2031–2039.
  • Resolving the cycle: Because codes repeat every 30 years, combine the year code with other information, such as the vehicle’s age or the manufacturer’s use of position 7 in some passenger vehicles, to choose the right decade.
Need more testing? Create a free account to get 200 free credits (equals 200 VIN scans).

Extract It with the API

Read the document from a photo and validate the returned fields.

Prerequisite: Python 3.9+, `pip install requests`, and a STRUCTOCR_API_KEY

PYTHON EXAMPLE
import base64
import os
import requests

with open("vin.jpg", "rb") as image_file:
    image = base64.b64encode(image_file.read()).decode("ascii")

response = requests.post(
    "https://api.structocr.com/v1/vin",
    headers={"x-api-key": os.environ["STRUCTOCR_API_KEY"]},
    json={"img": image},
    timeout=30,
)
response.raise_for_status()
data = response.json()["data"]
print("vin:", data.get("vin"))
print("confidence:", data.get("confidence"))
print("carrier_type:", data.get("carrier_type"))

Technical Specs

  • •Endpoint: POST https://api.structocr.com/v1/vin
  • •Authentication: x-api-key request header
  • •Inputs: JPG, PNG, or WebP as Base64 JSON; maximum 4.5MB
  • •Price: 1 credit per successful request; failed requests are not billed
  • •Free trial: 200 free credits on sign-up, no credit card required

Key Features

  • •The 30-year cycle: A=1980 or 2010, B=1981/2011, C=1982/2012, D=1983/2013, E=1984/2014, F=1985/2015, G=1986/2016, H=1987/2017, J=1988/2018, K=1989/2019, L=1990/2020, M=1991/2021, N=1992/2022, P=1993/2023, R=1994/2024, S=1995/2025, T=1996/2026, V=1997/2027, W=1998/2028, X=1999/2029, Y=2000/2030, then 1–9 for 2001–2009 and 2031–2039.
  • •Resolving the cycle: Because codes repeat every 30 years, combine the year code with other information, such as the vehicle’s age or the manufacturer’s use of position 7 in some passenger vehicles, to choose the right decade.
  • •Validate after OCR: Apply these rules to API output before storing it.

Reference Summary

Key facts from this page in structured form, for quick lookup.

{
  "The 10th character": "Position 10 of a 17-character VIN encodes the model year.",
  "The 30-year cycle": "A=1980 or 2010, B=1981/2011, C=1982/2012, D=1983/2013, E=1984/2014, F=1985/2015, G=1986/2016, H=1987/2017, J=1988/2018, K=1989/2019, L=1990/2020, M=1991/2021, N=1992/2022, P=1993/2023, R=1994/2024, S=1995/2025, T=1996/2026, V=1997/2027, W=1998/2028, X=1999/2029, Y=2000/2030, then 1–9 for 2001–2009 and 2031–2039..",
  "Resolving the cycle": "Because codes repeat every 30 years, combine the year code with other information, such as the vehicle’s age or the manufacturer’s use of position 7 in some passenger vehicles, to choose the right decade.."
}

Frequently Asked Questions

Is the model year the same as the build year?

No. A vehicle can be built in the calendar year before its model year.

Does StructOCR return the model year?

The VIN API returns the VIN itself. Decode the model year from position 10 in your code or with a VIN decoding service.

You May Also Like

Related tutorials, platform guides, and comparisons

Tutorial

Kia VIN Location and VIN OCR API

Where to find the VIN on a Kia, what its first characters mean, and how to read it from a photo with an API and decode the model year.

VIN
Tutorial

Subaru VIN Location and VIN OCR API

Where to find the VIN on a Subaru, what its first characters mean, and how to read it from a photo with an API and decode the model year.

VIN
Tutorial

VIN OCR API Pricing and Cost per Scan

What VIN OCR costs with StructOCR: 1 credit per successful scan, prepaid credits that never expire, and no charge for failed requests.

VIN
Tutorial

How to Choose a VIN OCR API in 2026

A practical checklist for evaluating VIN OCR APIs: coverage, accuracy on real photos, error handling, privacy, and cost per successful result.

VIN
Tutorial

Audi VIN Location and VIN OCR API

Where to find the VIN on a Audi, what its first characters mean, and how to read it from a photo with an API and decode the model year.

VIN
Tutorial

Node.js VIN OCR API

Tutorial: How to use the StructOCR Node.js SDK to extract data from VINs. Upload an image for a free test! Includes code samples and JSON schema.

Node.js · VIN
Tutorial

Honda VIN Location and VIN OCR API

Where to find the VIN on a Honda, what its first characters mean, and how to read it from a photo with an API and decode the model year.

VIN
Tutorial

C# VIN OCR API

Upload an image for a free test! Tutorial: How to use the StructOCR C# Client to extract data from VIN (Vehicle Identification Number)s. Includes code samples and JSON schema.

C# · VIN
Tutorial

Java VIN OCR API

Tutorial: How to use the StructOCR Java Client to extract data from VINs. Upload an image for a free test! Includes code samples and JSON schema.

Java · VIN
Tutorial

Python VIN OCR API

Tutorial: How to use the StructOCR Python SDK to extract data from VIN (Vehicle Identification Number)s. Upload an image for a free test! Includes code samples and JSON schema.

Python · VIN

Technical Comparisons & Integrations

Explore platform integrations and competitive analysis

From tutorial to production in 5 minutes.

You've seen the code. Now get your API key, grab your 200 free credits, and see it work with your own images. No credit card required.

Instant Access Cancel Anytime No Credit Card