JWT 解码器

在线解码 JWT 令牌,查看 Header 与 Payload 内容与过期状态。解码在浏览器本地完成,令牌不会上传。

安全提示:不要粘贴包含敏感数据的真实令牌。解码结果会完整显示在页面上,请使用测试令牌或已脱敏的令牌;本工具也不校验签名,不能用于鉴权判断。

粘贴标准三段式 JWT(header.payload.signature),会自动按「.」分段并用 Base64URL 解码。

使用说明

  1. 把 JWT 令牌粘贴到输入框,无需点击按钮,Header 与 Payload 会立即解码并美化显示。
  2. 令牌按「.」分段后逐段用 Base64URL 解码(自动补齐 = 填充),并以 JSON 格式展示,方便阅读嵌套结构。
  3. 下方摘要列出 alg / typ,以及 iat(签发)、nbf(生效)、exp(过期)声明对应的本地时间;exp 会同时给出「已过期 / 有效」徽章与剩余时间。
  4. 签名段原样展示,仅便于复制比对;本工具不校验签名,不能证明令牌未被篡改。
  5. 想快速体验可点击「示例」生成一枚演示令牌;「清空」会移除输入与全部结果。

常见问题

我的令牌会上传到服务器吗?
不会。分段、Base64URL 解码与 JSON 美化全部由浏览器本地脚本完成,令牌不会离开当前设备。但仍建议不要粘贴生产环境的敏感令牌,避免页面被他人看到。
为什么显示「有效」却仍被服务端拒绝?
本工具只解码内容并用本机时间对比 exp / nbf,不校验签名,也不检查吊销状态、签发者(iss)、受众(aud)等服务端策略。令牌是否可信以服务端验证结果为准。
支持哪些令牌格式?
支持标准 JWS 三段式 JWT(header.payload.signature)。五段式的 JWE 加密令牌内容本身被加密,无法直接解码,会给出明确提示;alg 为 none 时签名段为空属正常现象。
时间显示的时区是什么?
exp / iat / nbf 声明按 Unix 时间戳(秒)存储,工具会换算为您浏览器所在时区的本地时间展示;与您服务器的时区可能不同,请注意区分。

使用步骤

  1. 粘贴令牌即时解码

    把三段式 JWT 粘进输入框即可,无需点击按钮。Header 与 Payload 会立即解码并按 JSON 格式化展示。

  2. 阅读关键声明摘要

    结果区列出 alg、typ 以及 iat 签发时间、nbf 生效时间与 exp 过期时间。时间已换算为你所在时区的本地时间。

  3. 确认令牌是否过期

    exp 一行带「已过期 / 有效」徽标与剩余时间,不必手动换算 Unix 时间戳即可快速判断令牌状态。

  4. 按需复制各部分内容

    Header、Payload 与签名区域右上角各有「复制」按钮。把声明内容贴进文档、工单或测试脚本都很方便。

  5. 谨记签名未经校验

    签名部分仅原样展示,本工具不校验签名。显示「有效」不代表令牌未被篡改,信任判定必须由服务端完成。

工具详细介绍

JWT 由三段 Base64URL 内容以点号连接。Header 声明签名算法,Payload 携带具体声明,Signature 供服务端校验真伪。前两段只是编码并非加密,任何拿到令牌的人都能还原内容。本工具在浏览器本地拆分并解码三段,格式化 JSON,并把时间声明换算成本地时区。

适合调试接口鉴权,核对 sub、iss、exp 等声明是否符合预期。令牌没过期却被拒绝时,可以用它排查时区或时钟偏差问题。阅读第三方 API 文档时,也能快速理解示例令牌结构。请只粘贴测试或脱敏令牌,避免真实凭据停留在页面上。

原理与背景

JWT 令牌本体由 RFC 7519 规定,头部 alg 字段决定签名算法。HS256 是对称方案,签发方与校验方持有同一把密钥。RS256 与 ES256 走非对称路线,私钥签发、公钥验签,更适合开放给第三方。三段编码采用 Base64URL 变体,把标准 Base64 的加号与斜杠换成减号和下划线,并去掉末尾填充等号。这样令牌能安全放进链接与 Cookie,代价是前两段人人可解:它们是编码,不是加密。

签名结构由 RFC 7515 规定,服务端用它校验令牌真伪。iss、sub、aud、exp、nbf、iat、jti 属于注册声明,其中三个时间声明都是秒级 Unix 时间戳。iat 记录签发时刻,nbf 是生效下限,exp 是过期上限,服务端校验通常容忍几十秒的时钟偏差。其余声明由业务自行定义,没有统一含义,读令牌时先分清这两类。本工具把时间值换算成设备本地时区,方便阅读。令牌是否可信,最终由签发方密钥与签名决定。签名未经验证时,「未过期」只是声明之一,不是信任凭证。

典型使用场景

  1. 排查「没过期却被拒」的令牌

    exp 明明仍有效但接口持续返回 401 时,先核对签名算法与密钥是否匹配。再看设备时钟是否偏差过大,最后检查 aud 与 iss 是否和服务端配置一致。

  2. 排查权限不足的 403

    接口返回 403 而不是 401 时,令牌多半有效但声明不达标。解开令牌检查 scope、role 或租户声明里是否包含所需值,比反复盲试请求快得多。

  3. 检查令牌里有没有敏感数据

    新写的签发逻辑难免把手机号、邮箱这类敏感字段塞进 Payload。把线上令牌解开看一眼,就能在数据真正泄露之前发现设计问题并推动整改。

使用技巧

  • Payload 只是编码不是加密,任何人都可还原,切勿存放敏感数据。
  • 时间声明是秒级 Unix 时间戳,按设备时区换算,与服务端时区可能不同。
  • 五段式 JWE 加密令牌无法直接解码,工具会给出明确提示;alg 为 none 时签名为空属正常。

注意事项

  • 别在日志里整段打印令牌

    把 JWT 写进日志等于把凭据复制了一份,日志的可见范围通常远大于代码仓库。打印时只留 sub 与 jti,令牌本体截断或脱敏。

  • alg=none 需要警惕

    历史上多个高危漏洞源于服务端接受 alg=none 的未签名令牌。调试时看到空签名,应确认服务端已显式禁用该算法,而不是当作正常现象放过。

  • 别用普通 Base64 硬解

    令牌用的是 Base64URL 变体,字符表不含加号、斜杠与填充等号。用通用 Base64 解码器硬解会报错或得到乱码,按 Base64URL 规则才能还原。

相关工具