身份证号解析

提取省份、出生日期、性别、年龄 · 纯前端计算 · 号码不上传不记录

本工具仅用于个人学习、开发测试与数据校对,禁止用于任何非法目的。工具不存储、不记录、不上传你输入的任何号码, 解析结果默认脱敏展示。

支持 15 位与 18 位,大小写 x 自动识别;输入后自动解析,不上传、不保存。

批量解析(多行输入,支持导出 CSV)

📖 使用说明

  1. 在输入框里粘贴或手输身份证号,支持 15 位与 18 位两种格式,末尾的 x 大小写都能识别。
  2. 输入完成后工具会自动解析(300 毫秒防抖)。你也可以点击"一键清除"立刻清空输入框。
  3. 解析结果包含:省份、出生日期、性别、年龄,以及校验码是否通过。为保护隐私, 号码本身以 622***********8498 的形式脱敏显示。
  4. 如果输入的是 15 位号码,可以点"转为 18 位"补全校验码;批量面板支持一次粘贴多行, 解析后可导出脱敏 CSV。

🔍 校验规则说明

本工具的判定依据是 GB 11643-1999《公民身份号码》,与身份证实际编码规则一致:

  • 结构:18 位 = 6 位地址码 + 8 位出生日期码 + 3 位顺序码 + 1 位校验码; 15 位号没有校验码,出生年份只有两位。
  • 地址码:前两位为省级行政区代码,工具会检查它是否在有效范围内。
  • 出生日期:会做真实日期校验,例如 2 月 30 日、13 月这类日期会被判为无效, 年份范围限定在 1900 年至今。
  • 校验码:前 17 位分别乘以权重 7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2, 求和后对 11 取模,按 1 0 X 9 8 7 6 5 4 3 2 的映射得到校验字符。
  • 性别:顺序码最后一位(即 18 位号的第 17 位)为奇数表示男性,偶数为女性。

❓ 常见问题

Q:号码会不会被上传或记录下来?

A:不会。整个解析过程由一段不依赖第三方库的 JavaScript 完成,输入值只在内存变量中参与计算。 页面没有把号码写进任何 DOM 属性、没有存 localStorage、也没有对应的服务端接口。

Q:为什么结果里的号码是带星号的?

A:这是有意做的脱敏展示,避免完整号码停留在页面上被截图、录屏或第三方脚本读取。

Q:校验码不通过代表号码是假的吗?

A:校验码只能证明"这个号码不符合编码规则",无法证明真实存在。反过来, 校验码通过也不代表该号码一定属于某个真实的人。工具只能做规则层面的校验。

Q:年龄是怎么算的?

A:按周岁计算,以当前日期为基准,只有过了当年生日才增加一岁。

Q:批量导出会不会带完整号码?

A:不会。导出文件中的号码同样是脱敏形式,如需完整数据请你自行在原表中保留。