关于 JWT(JSON Web Token)
JWT 是由点分隔的三个 base64url 编码部分组成的紧凑、URL 安全令牌:描述签名算法的头部、包含声明(数据)的负载,以及用于验证令牌未被篡改的签名。本工具将头部和负载解码还原为易读的 JSON。
头部和负载只是经过 base64url 编码,而非加密,因此任何人都可以在没有密钥的情况下解码并读取它们——这是设计使然。JWT 的签名防止的是篡改,而不是让内容不可读,因此仅凭解码器永远无法确认令牌是否真正有效。
在下方粘贴 JSON Web Token 即可解码其头部和负载。
本工具仅解码 JWT 的头部和负载,不验证签名。即使能解码,令牌仍可能已过期、被篡改或无效。请勿在未经服务器端验证的情况下信任 JWT 内容。
100% 本地处理 — 令牌完全在你的浏览器中解码,绝不会发送到任何地方。
-
-
JWT 是由点分隔的三个 base64url 编码部分组成的紧凑、URL 安全令牌:描述签名算法的头部、包含声明(数据)的负载,以及用于验证令牌未被篡改的签名。本工具将头部和负载解码还原为易读的 JSON。
头部和负载只是经过 base64url 编码,而非加密,因此任何人都可以在没有密钥的情况下解码并读取它们——这是设计使然。JWT 的签名防止的是篡改,而不是让内容不可读,因此仅凭解码器永远无法确认令牌是否真正有效。
JWT(JSON Web Token)由三段用点号连接的 base64url 编码内容组成:header.payload.signature。要读懂它,按点号把字符串拆开,对 header 和 payload 部分做 base64url 解码,再各自按 JSON 解析即可——解码不需要密钥,只有验证签名才需要。payload 里的 iat(签发时间)和 exp(过期时间)是 Unix 时间戳(从 1970-01-01 起的秒数),本工具会把它们转换成人可读的日期。
| 字段 | 含义 |
|---|---|
| iss | 签发者——谁创建并签署了这个令牌 |
| sub | 主体——令牌所指向的身份,比如用户 ID |
| aud | 受众——令牌的预期接收方 |
| iat | 签发时间——令牌创建的时刻(Unix 时间戳) |
| exp | 过期时间——令牌失效的时刻(Unix 时间戳) |
不能。解码只是显示 header 和 payload 里的内容,并不能说明签名是否真实、令牌是否由可信来源签发、内容有没有被篡改。只有用正确的密钥验证签名,才能确认令牌是真实有效的。
header 和 payload 只是做了 base64url 编码,并没有加密,所以解码只是一次可逆的文本转换,不是安全屏障——这是设计上的初衷,因为 JWT 本来就是要让收到它的任何一方都能读懂内容。正因如此,敏感数据永远不应该放进 JWT 的 payload 里。
对于会检查 exp 的系统来说,exp 是过去时间的 JWT 通常被视为已过期,应该被拒绝;但这个解码工具只负责显示日期,不会拿它和当前时间比较,也不会拒绝任何令牌——这个判断是服务端的责任。
出错通常说明粘贴的文本不是一个完整、格式正确的 JWT——比如缺少某个用点号分隔的段落、header 或 payload 不是合法的 base64url 编码,或者解码出来的文本不是合法的 JSON。请检查是否完整复制了整个令牌,没有多余的空格或换行。
可以,这是开发中很常见的用法:把接口返回的令牌粘贴进来,不用写代码就能快速看到里面的用户 ID、角色、过期时间等信息,方便排查登录态或权限问题。不过它始终只是只读的查看工具;如果要真正校验令牌在服务端是否有效,还是需要用对应的 JWT 库和正确的密钥去验证签名。
本工具只解码并显示 header 和 payload,不会验证签名,不会把过期时间和当前时间做比较,也不会校验任何字段;成功解码出内容,不代表这个令牌已经通过验证、可以信任。
Sources: RFC 7519(JSON Web Token)
最后更新: 2026-08-17