JWT解析 — 在线解码 JSON Web Token
解码 JWT 的 header 和 payload 并查看过期时间(不验证签名)
在浏览器中处理 · 不上传任何内容
本工具只解码令牌,不验证签名。能读出内容不代表令牌有效或可信。任何数据都不会离开你的浏览器。
功能简介
JWT(JSON Web Token)用来携带用户身份等声明。它由点分隔的三部分组成:header、payload 和签名。前两部分是 base64url 编码的 JSON,任何人都能读取。本工具会拆开令牌,清楚地显示其中的内容,但不检查签名。
使用方法
- 把令牌粘贴到输入框。开头的
Bearer和换行都会被忽略。 - header 和 payload 会以带缩进的 JSON 显示,各有一个复制按钮。
- 如果 payload 中有 exp、iat 或 nbf,会显示为易读的日期,并注明距离现在还有多久或已经过去多久(“3 小时后”“2 天前”),同时标出是否过期。
- 如果令牌格式不对,错误信息会指出是哪一部分有问题。由五部分组成的加密令牌(JWE)会提示没有密钥无法读取。
解析方式
- 结构遵循 RFC 7519(JWT)和 RFC 7515(JWS):必须正好是由点分隔的三部分。
- 每一部分按 RFC 4648 的 base64url(使用
-和_,填充可省略)解码,并按 UTF-8 读取。 - header 和 payload 必须是 JSON 对象;如果是数组或字符串,会报错。
- 只有当 exp、iat、nbf 是数字时,才按秒解析,并以你所在地区的格式和 ISO 8601(UTC)显示。
- 过期状态只是把当前时间与 exp、nbf 进行比较。不验证签名,所以 alg 为 none 或签名错误的令牌也会照样解码。
示例
| 部分 | 内容 |
|---|---|
| 令牌开头 | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 |
| header | {"alg": "HS256", "typ": "JWT"} |
| payload | {"sub": "1234567890", "name": "John Doe", "iat": 1516239022} |
| iat | 2018-01-18T01:30:22Z |
这是 JWT 入门资料中常见的练习用令牌。payload 中含有 {"name": "张三"} 的令牌也能正常解码,不会出现乱码。
常见问题
这个工具会验证 JWT 签名吗?
不会,它只负责解码。能读出令牌内容不代表它是真实或有效的。是否可信,必须在服务器上用密钥或公钥验证签名后才能确定。
把令牌粘贴到这里安全吗?
解码只在你的浏览器中进行,令牌不会被传输。即便如此,也请避免把正式环境中正在使用的令牌粘贴到共享屏幕或文档里。
payload 中的中文能正确显示吗?
能。JWT 是经过 base64url 编码的 UTF-8 JSON,本工具按 UTF-8 解码,所以中文、韩文等文字的名字以及 emoji 都能完整显示。
exp 的值是什么时间格式?
它是 NumericDate,即自 1970 年 1 月 1 日 UTC 起经过的秒数。工具会按你浏览器的语言和时区显示,同时给出 UTC 的 ISO 8601 格式。