随机 VIN 码

17 位车架号(合规校验)

28 次访问

VIN 码 / 车架号生成器

VIN(Vehicle Identification Number)= 17 位车辆识别号,按 ISO 3779 / GB 16735 标准生成(含第 9 位校验码)。仅用于开发测试 / 数据填充。

VIN 码0 条

VIN 17 位结构

· 第 1-3 位 WMI(World Manufacturer Identifier):国家 + 厂商代码

· 第 4-8 位 VDS(Vehicle Descriptor Section):车型 / 系列 / 车身样式

· 第 9 位:校验位(GB 16735 算法 0-9 或 X)

· 第 10 位:年份码(A=2010, B=2011, ..., 1=2031)

· 第 11 位:装配厂代码

· 第 12-17 位:流水号

· 排除字母:I / O / Q(防混淆)

关于本工具

了解工具定位 · 使用场景 · 对比优势

输入一段疑似伪造的 17 位车架号(VIN),工具自动校验其结构合规性,包括校验位计算与字符规则。二手车商、保险定损员、车辆检测人员快速筛查明显不合规的 VIN,减少人工核对时间。所有计算在浏览器内完成,数据不上传服务器。

使用场景

🚗

二手车验车

买二手车时,卖家提供的 VIN 码可能拼接篡改或来自事故报废车。用本工具校验 VIN 码的 17 位结构、校验位、地区代码与车型年份逻辑一致性,5 秒内识别格式违规或逻辑矛盾,避免买到套牌车或抵押车。

🔍

车辆档案核对

车管所或保险公司调档时,纸质单据上的 VIN 码可能因印刷模糊导致录入错误。逐位输入 17 位字符后,工具自动校验校验位,并高亮异常位置(如第 9 位校验值不匹配),帮助工作人员在 1 分钟内完成人工核对。

📦

配件采购匹配

汽修厂接到一台无铭牌事故车,只能凭残存车架号段采购配件。输入残缺的 VIN 码片段(如前 11 位),工具按 WMI(世界制造商识别码)和 VDS(车辆描述段)规则补全可能的后 6 位组合,缩小配件型号搜索范围。

📋

保险报价预审

保险经纪收到客户发来的 VIN 码截图,需确认码是否属于可保车型。粘贴 17 位码后,工具校验第 10 位(年份代码)是否在当前保险有效期内,以及第 1-3 位(制造商代码)是否在保司承保清单内,避免无效报价。

🛡️

租赁车辆入库

租车公司批量采购新车时,需逐一校验 50 辆车的 VIN 码与合格证是否一致。将 50 个码粘贴到工具中(每行一个),工具批量输出校验结果(通过 / 第 X 位异常),将人工核对时间从 2 小时压缩到 5 分钟。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具竞品 A (vindecoderz.com)传统方法
数据隐私纯浏览器处理,VIN 码不上传任何服务器VIN 码上传至第三方服务器进行查询VIN 码需提供给 4S 店或车管所工作人员
处理速度即时校验,输入完成即出结果需等待服务器响应,通常 3-10 秒需人工查询或等待系统响应,通常数小时至数天
离线可用完全离线,断网环境也可使用必须联网必须联网或前往线下网点
校验深度仅校验 17 位格式合规性(字符、校验位)校验格式 + 查询车辆品牌、型号等数据库信息校验格式 + 查询车辆完整档案
使用门槛无需注册,打开页面即用部分功能需注册或付费需携带证件前往指定地点
收费模式完全免费基础免费,深度查询或批量查询需付费通常免费,但需花费时间成本

使用指南

上手步骤 · 输入输出 · 避坑提示

使用步骤

  1. 在输入框中粘贴或手动输入 17 位车架号(VIN),字母仅限 A-H、J-N、P、R-Z,不含 I、O、Q
  2. 点击「校验」按钮,工具自动检查每一位字符是否符合 ISO 3779 标准格式
  3. 查看校验结果:绿色标记表示该位合规,红色标记提示违规字符或位数错误
  4. 若结果有误,直接修改输入框中的 VIN 码,再次点击「校验」重新检查

输入输出示例8 个典型场景,覆盖常规、边界与易错

输入输出说明
LSVAU2A32N2100001WMI: LSV (上汽大众) | VDS: AU2A32 | VIS: N2100001 | 校验位: 2 (正确)典型场景:常见的国产合资品牌 VIN
WBA3A5C5XDF123456WMI: WBA (宝马) | VDS: 3A5C5 | VIS: XDF123456 | 校验位: 5 (正确)典型场景:进口豪华品牌 VIN
1HGCM82633A004352WMI: 1HG (本田美国) | VDS: CM826 | VIS: 33A004352 | 校验位: 3 (正确)典型场景:北美生产的日系品牌 VIN
LSVAU2A32N210000错误:VIN 码长度不足 17 位边界 case:输入少了一位,常见复制粘贴遗漏
LSVAU2A32O2100001错误:第 10 位字符 'O' 不合法(VIN 中禁止使用字母 I、O、Q)易错 case:用户误输入字母 O 而非数字 0
WDB4632321X123456WMI: WDB (奔驰) | VDS: 463232 | VIS: 1X123456 | 校验位: 1 (正确)典型场景:奔驰越野车(G 级)VIN
11111111111111111WMI: 111 (无效) | VDS: 111111 | VIS: 11111111 | 校验位: 1 (错误,应为 5)边界 case:全 1 的 VIN,校验位必然错误
JN1TBNT30A0000001WMI: JN1 (日产日本) | VDS: TBNT30 | VIS: A0000001 | 校验位: 0 (正确)边界 case:序列号全 0 开头的早期 VIN

常见错误对照8 个常踩的坑 · 错误 → 修复

1. 输入不足 17 位

错误
LSVHJ133022
修复
LSVHJ133022221234

VIN 码标准(ISO 3779)规定固定 17 位字符;不足 17 位说明输入有遗漏或非完整车架号,校验逻辑会直接拒绝

2. 混入字母 I、O、Q

错误
WDBOJ56D61F123456
修复
WDBUJ56D61F123456

VIN 码标准禁止使用 I、O、Q 以避免与数字 1、0、9 混淆;输入这些字母会被判定为无效字符

3. 第 9 位校验位输错

错误
1G1BL52P7TR115520(原车校验位应为 5)
修复
1G1BL52P5TR115520

第 9 位是根据前 8 位和后 8 位通过加权算法计算出的校验位;输错会导致合规校验失败,提示 VIN 无效

4. 年份位(第 10 位)用了字母 U、Z、0

错误
1FAFP404XWF123456(W 不是有效年份字符)
修复
1FAFP404X1F123456(1 代表 2001 年)

第 10 位代表车型年份,仅使用特定字母和数字(如 A=1980, 1=2001, L=2020);U、Z、0 不在年份映射表中

5. 把空格或连字符带进去

错误
1G1 BL52P 5TR115520
修复
1G1BL52P5TR115520

VIN 码是连续 17 位无分隔符字符串;空格、连字符、下划线等均视为非法字符,工具会直接报错

6. 输入小写字母

错误
1g1bl52p5tr115520
修复
1G1BL52P5TR115520

VIN 码标准要求大写字母;小写字母虽可自动转换,但部分校验算法(如校验位计算)依赖大写原始值,建议直接输入大写

7. 把车辆识别码(VIN)和发动机号混淆

错误
输入发动机号 12345678 到 VIN 校验工具
修复
输入完整 17 位车架号(如挡风玻璃左下角或铭牌上的字符串)

VIN 码是整车唯一标识,17 位;发动机号通常 6-12 位且无统一格式,两者完全不同,校验规则不适用

8. 使用非北美/中国标准的 VIN 格式

错误
输入日本 12 位车架号(如 JHM-EJ-123456)
修复
输入符合 ISO 3779 标准的 17 位 VIN

该工具基于 ISO 3779 标准(北美/中国/欧洲主流)校验;日本、部分旧款欧洲车使用非 17 位格式,无法通过校验

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

VIN = WMI(3) + VDS(6) + VIS(8)

变量说明

  • WMI — 世界制造商代码,前 3 位
  • VDS — 车辆描述部分,第 4-9 位
  • VIS — 车辆指示部分,第 10-17 位
  • 第 9 位 — 校验位,通过加权计算验证

示例

以 VIN=1HGCM82633A004352 为例:WMI=1HG(本田美国),VDS=CM8263(车型/发动机/校验位),VIS=3A004352(年份/工厂/序列号)。校验位计算:将各字符按对应值乘以权重(位置 1-8 权重 8-2,位置 10-17 权重 9-10),求和后除以 11,余数对应校验位值。此例校验位为 3,与第 9 位一致,VIN 合法。

适用范围

适用于全球 ISO 3779 标准下的 17 位 VIN 码校验。不适用于非标准长度(如 11 位旧格式)或自定义编码。校验算法源自 ISO 3779:2009 及 SAE J853 标准。

原理图

假 VIN 码 · 合规校验流程输入 17 位 VIN本地规则校验输出校验结果用户手动输入或粘贴浏览器内完成,无网络请求显示合规 / 不合规及错误位置
用户输入 本地处理 输出结果

开发者集成

3 种主流语言 · 复制即用

import re

def validate_vin(vin: str) -> bool:
    """校验17位车架号格式与校验位"""
    if not re.fullmatch(r'[A-HJ-NPR-Z0-9]{17}', vin):
        return False  # 排除I、O、Q
    
    # 字符映射表
    map_char = {c: i for i, c in enumerate('0123456789')}
    map_char.update({'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})
    # 权重(位置从1开始)
    weights = [8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2]
    
    total = sum(map_char.get(c, 0) * w for c, w in zip(vin, weights))
    check_digit = total % 11
    if check_digit == 10:
        check_digit = 'X'
    else:
        check_digit = str(check_digit)
    
    return vin[8] == check_digit

# 示例
print(validate_vin('1HGCM82633A004352'))  # True
print(validate_vin('1HGCM82633A004353'))  # False
package main

import (
	"fmt"
	"regexp"
	"strings"
)

func validateVIN(vin string) bool {
	// 排除 I、O、Q
	matched, _ := regexp.MatchString(`^[A-HJ-NPR-Z0-9]{17}$`, vin)
	if !matched {
		return false
	}

	charMap := map[rune]int{
		'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9,
		'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,
	}
	weights := []int{8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2}

	total := 0
	for i, c := range strings.ToUpper(vin) {
		val, ok := charMap[c]
		if !ok {
			return false
		}
		total += val * weights[i]
	}

	check := total % 11
	checkChar := fmt.Sprintf("%d", check)
	if check == 10 {
		checkChar = "X"
	}

	return string(vin[8]) == checkChar
}

func main() {
	fmt.Println(validateVIN("1HGCM82633A004352")) // true
	fmt.Println(validateVIN("1HGCM82633A004353")) // false
}
function validateVIN(vin) {
  // 排除 I、O、Q
  if (!/^[A-HJ-NPR-Z0-9]{17}$/i.test(vin)) return false;

  const charMap = {
    '0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9,
    '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];

  const upper = vin.toUpperCase();
  let total = 0;
  for (let i = 0; i < 17; i++) {
    const val = charMap[upper[i]];
    if (val === undefined) return false;
    total += val * weights[i];
  }

  let check = total % 11;
  if (check === 10) check = 'X';
  else check = String(check);

  return upper[8] === check;
}

// 示例
console.log(validateVIN('1HGCM82633A004352')); // true
console.log(validateVIN('1HGCM82633A004353')); // false

常见问题

8 个高频疑问

假 VIN 码工具到底能校验什么?输入一个 17 位字母数字串,它怎么知道是真假?
工具按 ISO 3779 标准校验 17 位车架号的格式合规性:每位字符是否在允许字符集内(字母 I、O、Q 禁用)、第 9 位校验位是否匹配加权计算结果、第 10 位是否代表有效生产年份(1980-2079)。合规 ≠ 真实存在,只能说明该号码符合编码规则;实际是否被车管所注册过,需要查国家车辆公告库。
我输入一个真实的车架号,为什么校验结果显示「不合格」?
常见原因有两个:一是手动抄写时看错了字符(比如数字 0 和字母 O、数字 1 和字母 I 混淆),二是某些车型(特别是进口车/小众改装车)可能采用非标准编码,比如第 10 位年份码用了厂商自定义规则。建议对照行驶证或车辆铭牌逐字符核对,确认无误后仍报错,大概率是原厂编码未完全遵循 ISO 3779。
这个工具和车管所查 VIN 有什么区别?能查到车辆配置信息吗?
车管所查询能返回该 VIN 对应的品牌、车型、发动机号、注册日期等实际登记数据,因为对接了全国车辆数据库。本工具只做格式合规校验,不解码具体配置(比如排量、产地、配置包)。如果你需要查车辆具体信息,得用 VIN 解码器(如 DecodeThis 或厂商数据服务),但那些通常需要付费。
工具会不会上传我的 VIN 码?我输入的是真实车架号,怕隐私泄漏。
不会上传。校验逻辑完全在浏览器本地 JavaScript 中运行,不向任何服务器发送数据。可以验证:打开浏览器开发者工具的「网络」标签,输入任意 VIN 点击校验,观察是否有 HTTP 请求发出——正常情况为零。如果还是不放心,可以断网后使用,工具即使离线也能正常校验。
为什么有时候校验通过,但输入到某些网站(比如二手车查询平台)却提示无效?
不同平台的校验规则有差异。本工具严格按 ISO 3779 标准执行,允许的字符集和加权算法是国际通用。但某些平台为了减少无效查询,会额外限制:比如第 1-3 位(WMI 世界制造商代码)必须对应真实存在的主机厂,或者第 4-8 位(VDS 车辆描述部分)不能全为 0。本工具不做这些「增强校验」,因为 WMI 数据库需要持续更新,且小众进口车的 WMI 码可能不在公开列表内。
17 位 VIN 码能不能少于 17 位?我见过一些老车只有 13 位。
本工具只接受 17 位输入。1981 年之前生产的车辆(尤其是美国市场车型)确实使用过 13 位或 11 位编码,但 1981 年后全球统一为 17 位(ISO 3779 标准)。如果你遇到少于 17 位的号码,说明它是旧标准车辆,本工具无法校验。这种情况下建议通过车辆铭牌或原厂手册确认编码规则。
输入框里提示「禁止 I O Q」,为什么这三个字母不能用?
ISO 3779 标准明确规定禁止使用字母 I、O、Q,因为它们容易与数字 1、0、9 混淆(比如 I 和 1、O 和 0、Q 和 9 在印刷体或手写时难以区分)。如果 VIN 中出现了这三个字母,说明该号码本身不合规——要么是抄写错误,要么是伪造的。输入时如果看到报错「字符非法」,请检查原始号码中是否有这些字母。
工具能校验摩托车或拖车的 VIN 吗?
可以。ISO 3779 标准同样适用于摩托车(17 位,第 1-3 位 WMI 码以字母 M 开头的厂商常见)和拖车(WMI 码第 1 位通常为 1-5 数字或字母 T/Z 等)。但需要注意:某些小型摩托车(如轻便摩托车)或非道路车辆(如越野车)可能不强制使用 17 位 VIN,或者编码规则有本地化差异(比如中国摩托车有时用 15 位),这些情况本工具无法校验。
选择 打开 +新窗口 esc关闭