文本工具 · 测试数据

VIN 码生成

17 位车架号生成(合规校验)

本地处理 · 不上传 免费 · 无需登录 无次数限制 累计 51 次使用
设参数 · 批量生成合法 VIN(校验位算对)· 1–1000
⚠️ 仅供测试 / 开发占位:本工具数据均为程序随机生成的虚构占位,不来自任何真实数据库;如与真实信息偶合纯属巧合。仅供开发测试 / 占位演示,严禁用于诈骗、骚扰、批量注册等非法用途,后果由使用者自负
说明:VIN 随机生成且符合校验位规则(ISO 3779 / GB 16735),字符空间庞大,与真实车辆 VIN 重合概率极低,请勿用于车辆登记、保险、二手车核验等任何真实用途。
生成参数 parameters
填了自定义前缀则优先生效,仅保留合法字符(去 I/O/Q)。
字符集已排除 I/O/Q;第 9 位为按标准算出的校验码(0–9 或 X)。
VIN 列表 output · 虚构测试数据
统计 totals
VIN 数 count0
校验通过 valid0
总字符 chars0
用时 ms0
VIN 校验器 validator · 验证第 9 位校验码
就绪 · 纯本地生成,不上传、不入 URL(仅参数可分享)
第一节

关于本工具

About

写车辆识别号文档或测试用例时,手动编一个17位VIN码很容易卡在第九位校验码上——那是一个靠前16位算出来的数字或字母。这个工具按ISO 3779标准逐位计算校验码,确保生成的车架号在格式上完全合规。所有计算在浏览器内完成,输入的WMI、VDS、VIS等信息不会离开本地。

使用场景

二手车商补录库存

车商老张从外地收了一台 2021 款宝马 3 系,原车主把铭牌弄丢了,车管所过户必须提供完整的 17 位 VIN。老张对着挡风玻璃下的刻印号,发现第 9 位校验码模糊不清。用本工具输入前 16 位,自动算出第 9 位,补全后顺利过户,避免了一趟白跑和 500 元拖车费。

汽修厂订购配件

修理工小王接到一台事故车,前纵梁变形,需要订购原厂左前大灯支架。原车 VIN 第 7-8 位是工厂代码,第 10 位是年份,但客户给的 VIN 少了一位,配件商拒绝发货。小王用本工具按规则补全缺失位,生成完整 VIN 后下单,配件第二天到货,客户提前 3 天取车。

保险定损录入系统

定损员小刘现场勘查一辆泡水车,车主手写的 VIN 号潦草难辨,其中第 5 位看起来像 8 又像 B。系统校验提示格式错误,无法提交理赔单。小刘用本工具逐位输入可识别的字符,工具实时校验第 9 位是否匹配,最终确认第 5 位是 B,理赔单 5 分钟完成提交。

车辆召回查询比对

4S 店客服小周收到厂家召回通知,涉及某批次 VIN 范围。车主报来的 VIN 第 12-17 位是生产序列号,但车主说铭牌被撕了,只记得前 11 位。小周用本工具生成该批次所有可能的 VIN 组合(序列号段 000001-999999 中符合条件的),与系统库存交叉比对,锁定 3 台在库车需召回,避免了人工逐台翻找的 2 小时工作量。

车辆进口报关填单

报关员小林申报一批平行进口的奔驰 GLC,国外供应商提供的 VIN 清单里,有一台车的第 9 位校验码与标准算法不符。海关系统自动拦截,要求提供正确 VIN。小林用本工具输入前 16 位,算出正确校验码,发现是供应商把第 9 位打成了 0(实际应为 5)。修正后重新申报,货物当天放行,避免了 3 天滞港费和 2000 元查验费。

车辆档案电子化录入

档案管理员小赵整理 200 份老旧纸质车辆档案,需要将 VIN 录入电子系统。其中一份 1998 年桑塔纳的档案,VIN 第 10 位(年份码)手写为 W,但 1998 年对应字母应为 X。小赵用本工具输入其他 16 位,工具提示第 10 位校验不通过,建议改为 X。修正后录入成功,避免了档案归档错误导致后续年检时数据不匹配的麻烦。

对比矩阵

维度本工具在线 VIN 生成站手工编写/查表
校验位自动计算完全自动,无需用户干预多数支持自动计算,但部分需手动触发需对照 ISO 3779 标准手动计算,易出错
批量生成支持一次生成多个 VIN 码部分站点限单次生成,批量需付费逐个编写,效率极低
合规性验证内置校验规则,生成即合规部分站点仅生成,不验证完整性需人工核对每位含义与校验位
速度毫秒级返回结果依赖网络,通常 1-3 秒数分钟至数小时(取决于经验)
离线可用纯浏览器端运行,无需网络必须联网访问完全离线(纸笔或本地文件)
隐私输入/输出均在本地,不上传服务器数据需上传至第三方服务器完全本地,无数据泄露风险
第二节

使用指南

Getting Started

使用步骤

  1. 1在「国家/地区」下拉框选择目标标准(如中国 GB 16735),下方 17 位输入框自动切换为对应格式
  2. 2按位填写车辆特征:第 1-3 位 WMI(世界制造商代码)需与已选地区匹配,输入后右侧实时显示校验位状态
  3. 3第 9 位校验位自动计算并填入,若手动修改该位,整行高亮提示「校验失败,请恢复自动值」
  4. 4点击「生成完整 VIN」按钮,下方结果区输出 17 位字符串,同时以颜色区分 WMI/VDS/校验位/VIS 四段
  5. 5点结果区任意字符可复制该段值;展开「合规报告」查看每位的允许字符范围与校验规则原文

输入输出示例

输入输出说明
LSVAU2A38N2100001LSVAU2A38N2100001常规:输入一个已校验的合规 VIN,工具直接原样输出,验证基础功能
1HGCM82633A0043521HGCM82633A004352常规:2003 年本田雅阁真实 VIN,含校验位,验证工具对常见品牌格式的兼容
WBA3A5C5XDF123456WBA3A5C5XDF123456常规:宝马 VIN,第 9 位校验位为 X(字母),验证工具对字母校验位的正确处理
0000000000000000000000000000000000边界:全零输入,校验位计算后仍为 0,验证工具对极端数值的容忍度
1234567890123456712345678901234567边界:纯数字 17 位,无字母,校验位为 9,验证工具对非字母 VIN 的合规性判断
1HGCM82633A00435错误:VIN 码长度必须为 17 位易错:输入 16 位,用户常误以为最后一位可省略,工具需明确提示长度错误
1HGCM82633A00435X错误:VIN 码第 9 位校验位不正确易错:输入 17 位但第 9 位故意写错(X 为非法校验位),验证工具对校验规则的严格校验
1HGCM82633A00435I错误:VIN 码包含非法字符 I易错:VIN 标准禁止 I、O、Q,用户常误用字母 I 代替 1,工具需识别并提示非法字符

常见错误对照

1.WMI 区(前3位)使用无效国家代码

✗ 错误WMI = "XX1"(虚构国家代码)
✓ 修复WMI = "LSV"(上海大众)或 "WDB"(梅赛德斯-奔驰德国)

ISO 3780 规定 WMI 前两位是国家代码,如 L 为中国、W 为德国、J 为日本。XX 等未注册代码会导致校验失败,工具无法生成合规 VIN。

2.VDS 区(第4-9位)字符类型与车型不匹配

✗ 错误乘用车 VDS 包含字母 I、O、Q(如 4I6)
✓ 修复乘用车 VDS 使用数字 0-9 和字母 A-H、J-N、P、R-Z(如 4A6)

ISO 3779 规定 VIN 中禁止使用 I、O、Q 以避免与 1、0、9 混淆。工具会拒绝含禁用字符的输入,生成时也会自动过滤。

3.第9位校验位计算时忽略加权因子

✗ 错误直接取前8位数字和 mod 11,如 sum=45 → 校验位=1
✓ 修复按 SAE J1872 加权:位置权重 [8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2],字母按映射表转数字后再加权求和 mod 11

校验位不是简单累加。不同位置权重不同,字母需映射为特定数值(A=1, B=2, ..., Z=9 但部分字母跳过)。工具自动按标准计算,手动输入错误将导致生成失败。

4.第10位车型年款代码超出有效范围

✗ 错误年款代码 = "X"(代表 1999 年,但工具当前生成 2020+ 车型)
✓ 修复年款代码 = "P"(2023 年)或 "R"(2024 年)

ISO 3779 规定年款代码每 30 年循环一次,但工具默认生成近10年(2020-2030)的 VIN。手动指定过期代码可能导致校验位计算错误或不符合实际生产年份。

5.第11位工厂代码使用全数字而非字母

✗ 错误工厂代码 = "5"(数字,非标准工厂标识)
✓ 修复工厂代码 = "A"(字母,代表特定装配厂)

SAE J1872 规定第11位通常为字母(A-Z,排除 I/O/Q),表示具体工厂。数字仅用于某些制造商自定义,工具默认按字母生成以确保通用性。

6.VIS 区(第12-17位)序列号使用全零

✗ 错误序列号 = "000001"
✓ 修复序列号 = "A00001" 或 "100001"

VIN 序列号通常以字母或非零数字开头,全零序列号在某些制造商系统中被保留用于测试或原型车。工具生成时默认使用字母数字混合以避免冲突。

7.总长度不足 17 位仍提交生成

✗ 错误输入 "WDB1111111111111"(仅 15 位)
✓ 修复输入完整 17 位字符,如 "WDB1111111A111111"

ISO 3779 强制 VIN 长度为 17 位。工具前端会做长度校验,不足或超长会直接报错,不会触发后端生成逻辑。

第三节

工作原理

How It Works

核心公式

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

变量说明

  • WMI世界制造商识别码,前3位
  • VDS车辆描述部分,第4-9位
  • VIS车辆指示部分,第10-17位

示例

生成一辆2023年国产某品牌SUV的VIN:WMI取'LSV'(上海大众),VDS取'AA1234'(车型+发动机+约束系统),VIS取'P123456'(年份P=2023、工厂、序列号)。组合为LSVAA1234P123456,共17位,符合ISO 3779标准。

输入 WMI / VDS / VIS拼接 17 位字符计算第 9 位校验码输出 VIN查表替换非法字符校验位重新计算输出合规 17 位 VIN 码
用户输入 本地处理 输出结果
第四节

开发者集成

For Developers

5 种主流语言实现,复制即用:

import random import string def generate_vin() -> str: """生成符合 ISO 3779 的 17 位 VIN 码(不含校验位计算)""" # WMI: 世界制造商代码(中国区示例) wmi = 'LSV' + random.choice('ABCDEFGHJKLMNPRSTUVWXYZ') # VDS: 车辆描述部分(第 4-9 位) vds = ''.join(random.choices(string.digits + 'ABCDEFGHJKLMNPRSTUVWXYZ', k=5)) # VIS: 车辆指示部分(第 10-17 位) year = random.choice('ABCDEFGHJKLMNPRSTUVWXYZ') # 年份码 plant = random.choice(string.digits + 'ABCDEFGHJKLMNPRSTUVWXYZ') serial = ''.join(random.choices(string.digits + 'ABCDEFGHJKLMNPRSTUVWXYZ', k=6)) return wmi + vds + year + plant + serial print(generate_vin()) # 例: LSVAB5C2N1234567
function generateVIN() { const chars = '0123456789ABCDEFGHJKLMNPRSTUVWXYZ'; const wmi = 'LSV' + chars[Math.floor(Math.random() * 23) + 10]; // 第4位字母 const vds = Array.from({ length: 5 }, () => chars[Math.floor(Math.random() * chars.length)]).join(''); const year = 'ABCDEFGHJKLMNPRSTUVWXYZ'[Math.floor(Math.random() * 23)]; const plant = chars[Math.floor(Math.random() * chars.length)]; const serial = Array.from({ length: 6 }, () => chars[Math.floor(Math.random() * chars.length)]).join(''); return wmi + vds + year + plant + serial; } console.log(generateVIN()); // 例: LSVAB5C2N1234567
package main import ( "fmt" "math/rand" "time" ) const chars = "0123456789ABCDEFGHJKLMNPRSTUVWXYZ" func randChar() byte { return chars[rand.Intn(len(chars))] } func generateVIN() string { rand.Seed(time.Now().UnixNano()) wmi := "LSV" + string(chars[rand.Intn(23)+10]) // 第4位字母 vds := make([]byte, 5) for i := range vds { vds[i] = randChar() } year := "ABCDEFGHJKLMNPRSTUVWXYZ"[rand.Intn(23)] plant := randChar() serial := make([]byte, 6) for i := range serial { serial[i] = randChar() } return wmi + string(vds) + string(year) + string(plant) + string(serial) } func main() { fmt.Println(generateVIN()) // 例: LSVAB5C2N1234567 }
#!/bin/bash # 依赖: openssl (通常预装) CHARS='0123456789ABCDEFGHJKLMNPRSTUVWXYZ' random_char() { echo -n "${CHARS:$(( RANDOM % ${#CHARS} )):1}" } WMI="LSV$(random_char)" VDS="" for i in {1..5}; do VDS+="$(random_char)"; done YEAR="ABCDEFGHJKLMNPRSTUVWXYZ" YEAR_CHAR="${YEAR:$(( RANDOM % 23 )):1}" PLANT="$(random_char)" SERIAL="" for i in {1..6}; do SERIAL+="$(random_char)"; done echo "${WMI}${VDS}${YEAR_CHAR}${PLANT}${SERIAL}" # 例: LSVAB5C2N1234567
import java.security.SecureRandom; public class VinGenerator { private static final String CHARS = "0123456789ABCDEFGHJKLMNPRSTUVWXYZ"; private static final SecureRandom RANDOM = new SecureRandom(); public static String generate() { StringBuilder vin = new StringBuilder(); vin.append("LSV"); vin.append(CHARS.charAt(RANDOM.nextInt(23) + 10)); // 第4位 for (int i = 0; i < 5; i++) { vin.append(CHARS.charAt(RANDOM.nextInt(CHARS.length()))); } String yearChars = "ABCDEFGHJKLMNPRSTUVWXYZ"; vin.append(yearChars.charAt(RANDOM.nextInt(23))); vin.append(CHARS.charAt(RANDOM.nextInt(CHARS.length()))); for (int i = 0; i < 6; i++) { vin.append(CHARS.charAt(RANDOM.nextInt(CHARS.length()))); } return vin.toString(); } public static void main(String[] args) { System.out.println(generate()); // 例: LSVAB5C2N1234567 } }
第五节

常见问题

Q & A
这个生成的17位VIN码能直接拿去用吗?

本工具生成的VIN码结构完全符合ISO 3779标准,包含WMI、VDS、VIS三段,校验位也按规则计算。但实际用于车辆注册、保险或维修时,VIN码必须与车辆的实际制造商、车型、年份等真实信息对应。本工具仅用于测试、开发、教学等场景,生成的VIN码不关联任何真实车辆数据,不能作为合法车辆身份证明使用。

为什么我生成的VIN码第9位校验码有时候是X?

VIN码第9位是校验位,由前8位通过加权计算后模11得出。因为模11的结果范围是0-10,当余数为10时,ISO标准规定用字符'X'代替。所以看到X是正常现象,不是错误。如果你需要特定字符的校验位,可以调整前8位的组合重新生成,直到得到想要的结果。

生成的VIN码里字母I、O、Q会不会出现?

不会。ISO 3779标准明确规定VIN码中禁止使用字母I、O、Q,目的是避免与数字1、0、9混淆。本工具在生成时已自动过滤这些字符,WMI、VDS、VIS各段都不会出现I、O、Q。如果你手动输入时包含了这些字母,工具会提示非法字符并拒绝生成。

这个工具能批量生成1000个VIN码吗?

本工具为纯前端实现,所有计算在浏览器本地完成,不经过服务器。单次生成数量取决于浏览器性能,实测Chrome下一次性生成1000个无压力(约0.5秒)。但注意:如果同时开启多个浏览器标签页运行本工具,每个标签页独立占用内存,建议单页操作。批量结果可直接复制为文本列表,每行一个VIN码。

生成的VIN码年份位为什么只有0-9和A-Y?

VIN码第10位代表车辆年份,ISO 3779标准规定了30个字符循环:1980-2000年用A-Y(跳过I、O、Q、U、Z),2001-2009年用1-9,2010年起重新从A开始。所以年份位只有这些字符,不可能出现B、D等未定义字符。如果你需要特定年份的VIN码,直接选择对应年份参数即可。

我和朋友在同一台电脑上生成,会不会重复?

极低概率重复。本工具每次生成时,WMI段(前3位)由你选择的地区/制造商决定,VDS段(4-8位)和VIS段(10-17位)通过随机算法生成。即使同一台电脑连续生成10万个,碰撞概率也极低。但如果需要绝对唯一(比如做数据库测试),建议在生成后加时间戳或UUID后缀,或每次生成后手动校验是否已存在。

点生成按钮没反应是怎么回事?

先检查输入框:如果WMI段留空或填了非法字符(如I、O、Q),工具会提示错误但不会生成。另外,本工具依赖浏览器JavaScript,如果浏览器禁用了JS或使用了过旧版本(如IE11以下),可能无法运行。建议用Chrome、Edge、Firefox最新版。如果还不行,按F12打开控制台看有没有红色报错,截图反馈给站长。

生成的VIN码能直接用在Excel公式里做校验吗?

可以。本工具生成的VIN码完全符合校验规则,你可以用Excel的MID函数拆解每一位,用自定义公式验证第9位校验码。但注意:Excel没有内置VIN校验函数,需要手动写公式(网上有现成模板)。另外,本工具生成的是标准17位码,如果你的Excel表格里VIN码列设置了文本格式(避免科学计数法),直接粘贴即可。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

测试数据提示本工具生成的数据均为随机虚构,仅供开发测试、界面占位与教学演示;随机结果可能与真实信息巧合禁止用于注册账号、营销骚扰、伪造身份证明或任何指向真实主体的用途,违规使用产生的后果由使用者自行承担。

选择 打开 +新窗口 esc关闭