JWT 解析

编码

在线 JWT 解析与过期时间查看

排查登录态问题时,最常见的一步就是把 JWT 拆开看看里面到底写了什么:这个 token 属于哪个用户、什么时候签发、还有多久过期、带了哪些权限声明。手动做这件事要先把 Base64URL 换回标准 Base64、补齐填充、解码、再格式化 JSON,几步下来很容易出错。

这个页面把整条链路压成一次粘贴。输入框会自动剥掉 Bearer 前缀、首尾引号和从日志里带出来的换行空白,然后即时解码出 Header 与 Payload 并按缩进 JSON 展示。右侧单独把 iatnbfexp 三个时间声明换算成本地时间,并直接给出「约剩余 2 小时」或「已过期 3 天」这样的结论,省去手动换算 Unix 时间戳的步骤;秒级和毫秒级两种写法都会被自动识别。

需要明确的是,本工具只解码不验签。验证签名必须持有签发方的密钥或公钥,而把密钥交给一个网页是不可接受的做法,因此这里刻意不提供该功能。它能回答「这个 token 里有什么、是否过期」,不能回答「这个 token 是不是真的」——后者只能在服务端用 JWT 库校验。同理,Payload 不是密文,任何持有 token 的人都能读,敏感字段不应放进去。

由于全部处理都在浏览器内完成,token 不会经过任何服务器,这对于线上环境的凭证尤其重要。如果只是想快速验证工具行为,点「示例」会载入一个标准的 HS256 token,其中包含 subnameiatexp 字段,可以先用它熟悉各面板的含义。

功能一览

  • 自动解析:输入即解码,自动去掉 Bearer 前缀、首尾引号以及换行和空格
  • Header 与 Payload:以两空格缩进的 JSON 并排展示,各自带独立复制按钮
  • 时间声明:iat、nbf、exp 同时给出原始时间戳与本地时间,秒级和毫秒级时间戳都能识别
  • 过期判断:直接显示「尚未过期,约剩余多久」或「已过期多久」,按秒、分钟、小时、天自动换算
  • 常用字段速览:alg、typ、sub、iss、aud、jti 单列一栏,aud 为数组时合并显示
  • 签名段原样展示并可复制,缺少第三段时提示可能是未签名 token
  • 错误定位:段数不对、某一段不是合法 Base64URL JSON 时给出具体原因
  • 内置示例 token 与剪贴板粘贴按钮,token 保存在本机,刷新后仍在

常见问题

这个工具能验证 JWT 的签名吗?
不能,而且这是刻意的设计。验签需要签发方的密钥,HMAC 系列要 secret,RSA 与 ECDSA 系列要公钥,把生产环境的密钥粘进一个网页本身就是风险。本工具只做 Base64URL 解码,因此它能告诉你 token 里写了什么、什么时候过期,但无法证明这个 token 没被伪造或篡改。真正的校验请在服务端用对应语言的 JWT 库完成。
JWT 里的内容是加密的吗?放敏感信息安全吗?
不是加密。标准 JWT 的 Header 和 Payload 只做了 Base64URL 编码,任何拿到 token 的人都能直接读出全部内容,本页面就是最直观的证明。签名保证的是「不可篡改」,不是「不可读」。所以不要把密码、身份证号、完整手机号或内部业务细节写进 payload,确实需要保密时应改用 JWE 加密令牌,或者只在 payload 里放一个不透明的用户标识。
粘贴的 token 会被上传到服务器吗?
不会。解析完全由页面内的 JavaScript 完成,页面加载后即使断网也能正常使用,不会向任何接口发送你的 token。为方便刷新后继续查看,token 会写入本机浏览器的 localStorage,不会同步到别处。在公用电脑或共享屏幕的场合,看完请点「清空」,长期有效的生产凭证仍建议在本地命令行工具里查看。
提示「Payload 不是合法的 Base64URL JSON」是怎么回事?
多数情况是 token 在复制时被截断了,尤其是从终端或日志里跨行复制时容易丢字符。其次是拿到的根本不是 JWT,而是随机字符串型的 session token 或 API key,这类字符串没有结构可解。合法的 JWT 由两个英文句点分隔成三段,未签名的 token 可以只有两段,每段都是 Base64URL。本工具会自动清理空白和 Bearer 前缀,但被截断的内容无法恢复,请重新完整复制。
显示已过期,可接口还能正常调用,为什么?
过期判断基于你这台机器的本地时间,系统时钟不准会直接导致误判。另外不少服务端会允许几十秒的时钟偏移容差,或者你调用的那个接口压根没有校验 exp。反过来也成立,exp 未到并不代表 token 仍然有效,它可能已经被服务端主动吊销、用户已改密码,或者所需的权限声明发生了变化,这些都只能由服务端判断。
支持哪些签名算法?alg 为 none 的 token 能解析吗?
解码过程与签名算法无关,所以 HS256、RS256、ES256、EdDSA 等任何算法签发的 token 都能正常展示,工具会把 header 里的 alg 原样列出来供你确认。alg 为 none 的未签名 token 同样可以解析,签名段会显示为空提示。看到这类 token 应当警惕,它没有任何完整性保护,任何人都能随意改写 payload,正式环境的服务端必须拒绝接受。

编码分组的其它工具

  • 编解码URL / Base64 / Unicode 编解码与 MD5
  • 哈希摘要MD5 / SHA1 / SHA256 / SHA512 摘要计算,支持逐行批量