Preparing your generator page
We are loading content and tools so everything is ready to use.
We are loading content and tools so everything is ready to use.
Generate valid 17-character VINs for testing, with correct check digits, real manufacturer codes and the model year you choose, or broken ones for negative tests. Copy or download up to 100 as a list, CSV or JSON, and validate and decode any VIN with the check digit math shown.
Also try the IMEI Generator, UUID Generator, and Fake Address Generator.
Last updated: October 3, 2026 · Published: 2026-04-02 · Updated: 2026-10-03
For developers, QA testers, dealership and insurance software, teachers and anyone reading a VIN. Browse all Randomizer tools.
Every VIN will pass length, character and check digit validation.
Generate up to 100 test VINs with valid check digits, real manufacturer codes and model years. Copy or download them as a list, CSV or JSON.
A random VIN generatorcreates made-up Vehicle Identification Numbers that follow the official 17-character format, so developers and testers can fill databases, forms and APIs without using real vehicles' VINs.
Muxgen's generator builds each VIN like a real one: a genuine manufacturer code from 57 WMIs in positions 1–3, the correct model year code in position 10, the North American position 7 rule, a numeric serial, and a check digit in position 9 calculated with the official formula. It can also generate VINs that should fail validation.
The Validate & decode mode checks any VIN's length, characters and check digit, explains each character and shows the math. Generated VINs are for testing only and don't identify real vehicles.
Three steps from settings to test data.
Pick how many (1–100), a manufacturer from 57 real WMI codes or random characters, and a model year from 1981 to 2030.
Keep every VIN valid, or generate ones with a wrong check digit, an I, O or Q, or the wrong length to test that your validation rejects them.
Copy or download the batch as a list, CSV or JSON. Click Decode on any VIN, or paste your own, to see each character explained and the check digit math.
1 to 100 VINs per batch, 5 by default, with no duplicates.
Any year from 1981 to 2030, or Any for 2000–2027. Sets the position 10 code.
57 real World Manufacturer Identifiers grouped by country, any of them at random, or random characters that match no maker.
On: real model year code, the North American position 7 rule and a numeric serial. Off: 14 random characters after the WMI.
All valid, wrong check digit, contains I, O or Q, wrong length, or a mix with about a quarter valid.
A plain list, CSV with make, country, year and validity columns, or JSON.
Opens any VIN in Validate & decode, color-coded by section, with problems and the check digit worked out.
Paste a VIN to check its length, characters and check digit, and see its region, country, maker and model year.
A VIN has 17 characters in three parts: who made the vehicle, what it is, and which one it is. Here is the example 1G1TEST11RF000123, a 2024 Chevrolet car.
| Positions | Section | In the example | What it means |
|---|---|---|---|
| 1–3 | World Manufacturer Identifier (WMI) | 1G1 | Who made the vehicle. Position 1 is the region, positions 1–2 the country, and all three the manufacturer, assigned through SAE International. |
| 4–8 | Vehicle Descriptor Section (VDS) | TEST1 | Model, body style, engine, restraint system or weight class. Each manufacturer decides its own codes. |
| 9 | Check digit | 1 | 0–9 or X, calculated from the other 16 characters to catch typos. Required in North America and China. |
| 10 | Model year | R | A letter or digit that repeats every 30 years, so T can mean 1996 or 2026. |
| 11 | Assembly plant | F | The factory that built the vehicle, coded by the manufacturer. |
| 12–17 | Production sequence number | 000123 | The vehicle's serial number. In North America the last five characters are digits for cars and light trucks. |
Position 9 is a check digit that catches most typos, including any single wrong digit and most pairs of swapped characters. Here is the full method, worked through for 1G1TEST11RF000123.
| A=1 | B=2 | C=3 | D=4 | E=5 | F=6 | G=7 | H=8 |
| J=1 | K=2 | L=3 | M=4 | N=5 | P=7 | R=9 | |
| S=2 | T=3 | U=4 | V=5 | W=6 | X=7 | Y=8 | Z=9 |
I, O and Q are not allowed, so they have no value.
| Position | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Weight | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 10 | 0 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
| Character | 1 | G | 1 | T | E | S | T | 1 | 1 | R | F | 0 | 0 | 0 | 1 | 2 | 3 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Value | 1 | 7 | 1 | 3 | 5 | 2 | 3 | 1 | – | 9 | 6 | 0 | 0 | 0 | 1 | 2 | 3 |
| Weight | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 10 | 0 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
| Product | 8 | 49 | 6 | 15 | 20 | 6 | 6 | 10 | – | 81 | 48 | 0 | 0 | 0 | 4 | 6 | 6 |
Sum: 8 + 49 + 6 + 15 + 20 + 6 + 6 + 10 + 81 + 48 + 4 + 6 + 6 = 265. 265 ÷ 11 = 24 remainder 1, so the check digit is 1.
Position 10 shows the model year. The 30 codes skip I, O, Q, U, Z and 0, and repeat every 30 years.
| Code | 1980–2009 | 2010–2039 |
|---|---|---|
| A | 1980 | 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 |
| Code | 1980–2009 | 2010–2039 |
|---|---|---|
| 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 |
| Code | 1980–2009 | 2010–2039 |
|---|---|---|
| Y | 2000 | 2030 |
| 1 | 2001 | 2031 |
| 2 | 2002 | 2032 |
| 3 | 2003 | 2033 |
| 4 | 2004 | 2034 |
| 5 | 2005 | 2035 |
| 6 | 2006 | 2036 |
| 7 | 2007 | 2037 |
| 8 | 2008 | 2038 |
| 9 | 2009 | 2039 |
To tell 1996 from 2026 (both T) on a North American car, SUV, van or light truck, look at position 7: a digit means 1980–2009 and a letter means 2010–2039. The model year can differ from the calendar year the vehicle was built.
The first character shows the region where the vehicle was built, and the first two the country. Some common ranges:
| First character | Region |
|---|---|
| A, B, C, D, E, F, G, H | Africa |
| J, K, L, M, N, P, R | Asia |
| S, T, U, V, W, X, Y, Z | Europe |
| 1–5, 7F–70 | North America |
| 6, 7A–7E | Oceania |
| 8, 9 | South America |
| Starts with | Country | Region |
|---|---|---|
| 1 | United States | North America |
| 4 | United States | North America |
| 5 | United States | North America |
| 7F–70 | United States | North America |
| 2 | Canada | North America |
| 3A–3W | Mexico | North America |
| J | Japan | Asia |
| KL–KR | South Korea | Asia |
| L | China | Asia |
| MA–ME | India | Asia |
| ML–MR | Thailand | Asia |
| SA–SM | United Kingdom | Europe |
| SN–ST | Germany | Europe |
| SU–SZ | Poland | Europe |
| TA–TH | Switzerland | Europe |
| TJ–TP | Czech Republic | Europe |
| TR–TV | Hungary | Europe |
| VA–VE | Austria | Europe |
| VF–VR | France | Europe |
| VS–VW | Spain | Europe |
| W | Germany | Europe |
| XL–XR | Netherlands | Europe |
| X3–X0 | Russia | Europe |
| YA–YE | Belgium | Europe |
| YF–YK | Finland | Europe |
| YS–YW | Sweden | Europe |
| ZA–ZR | Italy | Europe |
| 6A–6W | Australia | Oceania |
| 7A–7E | New Zealand | Oceania |
| 8A–8E | Argentina | South America |
| 9A–9E | Brazil | South America |
| 93–99 | Brazil | South America |
The first three characters identify the manufacturer. These are the 57 WMIs the generator uses, grouped by the country in the code. A maker can have many WMIs for different plants and vehicle types.
Check that your VIN field accepts the first four and rejects the rest. Results are from this page's decoder.
| Case | Input | Expected | Decoder says |
|---|---|---|---|
| Valid VIN | 1G1TEST11RF000123 | Pass. | Valid |
| Check digit X | 1FTFW1E5XPFA00002 | Pass. X stands for a remainder of 10. | Valid |
| Lowercase | 1g1test11rf000123 | Pass after converting to uppercase. | Valid |
| Spaces | 1G1 TEST11 RF000123 | Pass after removing spaces, or reject if your form is strict. | Valid |
| Wrong check digit | 1G1TEST12RF000123 | Fail. The check digit should be 1. | Invalid |
| Letter O instead of 0 | 1G1TEST11RF0O0123 | Fail. VINs never use I, O or Q. | Invalid |
| Letter I instead of 1 | 1GITEST11RF000123 | Fail. VINs never use I, O or Q. | Invalid |
| 16 characters | 1G1TEST11RF00012 | Fail. Too short. | Invalid |
| 18 characters | 1G1TEST11RF0001234 | Fail. Too long. | Invalid |
| Impossible model year | 1G1TEST10UF000123 | Check digit passes, but U is never a model year code. Strict validators reject it. | Valid, with a warning |
| Empty | (empty) | Fail, or a required-field error. | Invalid |
Copy these functions to validate VINs in your own code. Both return the check digit, or null/None if the VIN has the wrong length or characters.
const VALUES = { A: 1, B: 2, C: 3, D: 4, E: 5, F: 6, G: 7, H: 8, J: 1, K: 2, L: 3, M: 4, N: 5,
P: 7, R: 9, S: 2, T: 3, U: 4, V: 5, W: 6, X: 7, Y: 8, Z: 9 };
const WEIGHTS = [8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2];
function vinCheckDigit(vin) {
const v = vin.toUpperCase();
if (!/^[A-HJ-NPR-Z0-9]{17}$/.test(v)) return null; // 17 characters, no I, O or Q
let sum = 0;
for (let i = 0; i < 17; i++) {
const value = /[0-9]/.test(v[i]) ? Number(v[i]) : VALUES[v[i]];
sum += value * WEIGHTS[i];
}
const remainder = sum % 11;
return remainder === 10 ? "X" : String(remainder);
}
const isValidVin = (vin) => vinCheckDigit(vin) === vin.toUpperCase()[8];
isValidVin("1G1TEST11RF000123"); // truefrom typing import Optional
VALUES = {str(n): n for n in range(10)}
VALUES.update(zip("ABCDEFGH", range(1, 9)))
VALUES.update(zip("JKLMN", range(1, 6)))
VALUES.update({"P": 7, "R": 9})
VALUES.update(zip("STUVWXYZ", range(2, 10)))
WEIGHTS = [8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2]
def vin_check_digit(vin: str) -> Optional[str]:
vin = vin.upper()
if len(vin) != 17 or any(c not in VALUES for c in vin):
return None # 17 characters, no I, O or Q
remainder = sum(VALUES[c] * w for c, w in zip(vin, WEIGHTS)) % 11
return "X" if remainder == 10 else str(remainder)
def is_valid_vin(vin: str) -> bool:
digit = vin_check_digit(vin)
return digit is not None and digit == vin.upper()[8]
is_valid_vin("1G1TEST11RF000123") # TrueEvery road vehicle has its VIN in several places. They should all match.
A small plate at the base of the windshield on the driver's side, readable from outside the car.
The sticker on the door pillar, usually with tire pressures and the build date.
Your vehicle title, registration card and license plate renewal notices.
Insurance cards and policy documents list the VIN of each covered vehicle.
Often stamped on the firewall, engine block or frame rail. Locations vary by maker.
Motorcycles usually have it on the steering head; trailers on the tongue or front frame.
The 17-character format is international, but the rules for the check digit and model year are not.
17-character VINs have been required since the 1981 model year under US rule 49 CFR Part 565 and Canada's CMVSS 115. The position 9 check digit and position 10 model year are mandatory.
Model year codes repeat every 30 years. For North American cars, SUVs, vans and light trucks, position 7 is a letter for 2010 and later models and a digit for 1980–2009, so a T in position 10 means 2026 or 1996.
VINs follow GB 16735, which is based on ISO 3779 and also requires a check digit in position 9.
ISO 3779 sets the 17-character format but does not require a check digit or model year code. Many European-market VINs fail a check digit test and have no year in position 10.
Makers building fewer than 1,000 vehicles a year use 9 as the third character, and positions 12–14 identify the manufacturer.
Before 1981, VINs ran from 11 to 17 characters with no standard, so check digit rules don't apply. Many Japanese-market cars use a shorter chassis number instead.
Generated VINs are for testing. Here is what that means in practice.
Use generated VINs in software tests, demos, mock APIs, sample datasets and classes, never as a vehicle's real identity.
The WMIs are real and the check digits are valid, so a generated VIN may belong to an actual vehicle by chance. Don't publish one as a real car.
Altering, removing or cloning a VIN to disguise a vehicle is a federal crime in the US (18 U.S.C. § 511), as is using one on titles, insurance or sales.
Use the free NHTSA VIN decoder for factory specs, NHTSA recall lookup for open recalls, and NICB VINCheck for theft and salvage records.
Built for test data that behaves like the real thing.
Every VIN passes the position 9 check digit test used in North America and China.
36 manufacturers including Ford, Toyota, Tesla, BMW, and Honda, or random characters.
Pick 1981–2030. The year code and North American position 7 follow the federal rules.
Generate VINs that should fail: wrong check digit, I, O or Q, 16 or 18 characters.
Download or copy batches with make, country, region, model year and validity.
Validate any VIN and see every character, problem and the check digit math.
If only the check digit is wrong, see what it should be and copy the corrected VIN.
Runs in your browser with secure randomness, no sign-up and nothing uploaded.
Who uses a random VIN generator, and how.
Check that VIN fields accept valid VINs and reject bad ones, using the invalid test cases.
Fill dev and staging databases with up to 100 unique, valid VINs at a time.
Paste JSON into Postman, mock servers or fixtures for vehicle, insurance and fleet APIs.
Show inventory and service software with realistic VINs instead of real customer data.
Replace real VINs in shared datasets and screenshots with valid stand-ins.
Test quoting, claims and telematics flows without touching real vehicles.
Show students how a VIN is built and let them work out the check digit by hand.
Download a CSV to fill a VIN column for templates, training or tutorials.
Paste your car's VIN to see where and when it was built and confirm it was copied correctly.
When to use this tool, and when another one fits better.
NHTSA's free decoder looks up real factory specs such as model and engine. This tool generates test VINs and checks any VIN's format offline.
Carfax, AutoCheck and NMVTIS reports show a real car's past. This tool knows nothing about real vehicles.
About 10 in 11 random 17-character strings fail the check digit. Every VIN here passes unless you ask it not to.
Faker-style libraries make VINs in code. This gives you real WMIs, chosen years and invalid cases without writing any.
The IMEI generator makes 15-digit phone identifiers with a Luhn check digit. This makes vehicle VINs.
UUIDs are generic unique IDs. Use VINs when your code expects a vehicle identifier.
How the VINs are built and what the tables cover.
Generated VINs pass format checks but are random. They are not looked up in, or taken from, any vehicle database.
Positions 1–3 are real manufacturer codes, but positions 4–8 are random, so a VIN won't decode to an actual model.
The check digit, year codes and position 7 rule follow 49 CFR Part 565. Character rules follow ISO 3779.
The country table covers 27 major countries and the WMI list 57 common codes, not the full SAE database. Some ranges have been reassigned over time.
Characters come from your browser's crypto.getRandomValues, and batches never repeat a VIN.
VINs you generate or paste stay in your browser tab.
VIN terms used on this page.
Vehicle Identification Number: the 17-character code that identifies a single vehicle.
World Manufacturer Identifier: positions 1–3, showing the region, country and manufacturer.
Vehicle Descriptor Section: positions 4–8, describing the model, body, engine and restraints.
Vehicle Identifier Section: positions 10–17, with the model year, plant and serial number.
Position 9: 0–9 or X, calculated from the other characters to catch typos.
Turning letters into numbers for the check digit, such as A = 1 and S = 2.
Position 10: a letter or digit for the model year, repeating every 30 years.
Position 11: the factory that assembled the vehicle, set by each manufacturer.
The international standard for the content and structure of VINs.
The US federal rule that sets VIN requirements, including the check digit and model year.
The organization that assigns WMI codes for NHTSA in the US.
Putting a legitimate vehicle's VIN on a stolen one. It is a crime.
Explore more tools in the directory.
Valid test IMEIs with Luhn check digits.
Random unique IDs for databases and APIs.
Realistic test addresses.
Random names for test data.
Invoice numbers in custom formats.
Strong random passwords.
Random numbers in any range.
Random US states for test addresses.