MSMuhammad Shahid

免费工具 · 在浏览器中运行

JWT 解码器

粘贴 JSON Web Token,读取其 header 和 payload,查看签发时间和过期时间。

快速解答

JWT 由点号分隔的三部分组成:header、payload 和签名。前两部分是 Base64URL 编码的 JSON,任何人都能解码阅读;只有签名能证明令牌是真实的。本工具解码 header 和 payload,并把 exp、iat 和 nbf 转换为可读日期,但不验证签名。

使用方法

  1. 粘贴令牌. 从应用、Authorization 请求头或 Cookie 中复制 JWT 并粘贴到框中。
  2. 查看各部分. header 显示算法;payload 显示声明,例如用户 ID 和角色。
  3. 检查时间. 工具会显示令牌的签发和过期时间,以及是否已经过期。

示例

一个 admin 角色用户的已签名 JWT,有效期 1 小时:

输入

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzQyIiwibmFtZSI6IlNhcmEgTGV2aSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc5MzUyMDAwMCwiZXhwIjoxNzkzNTIzNjAwfQ.1R3nQ-xp3SDmEZSSr355txmajhu1r1JjO863Li_Cam0

输出

Header
{
  "alg": "HS256",
  "typ": "JWT"
}

Payload
{
  "sub": "user_42",
  "name": "Sara Levi",
  "role": "admin",
  "iat": 1793520000,
  "exp": 1793523600
}

Issued (iat):  2026-11-01T08:00:00Z
Expires (exp): 2026-11-01T09:00:00Z

常见错误及解决方法

令牌无法解码
只复制令牌本身。去掉 "Bearer " 前缀、引号和换行,并确认里面正好有两个点。
jwt expired (TokenExpiredError)
exp 时间已过。用 refresh token 获取新的 access token,不要简单地延长令牌有效期。
invalid signature
签发令牌用的密钥和服务器验证用的不同,常见原因是不同环境或服务器的密钥不一致。所有验证令牌的地方都要使用同一个密钥。
jwt not active (NotBeforeError)
nbf 时间还没到,通常是服务器时钟不同步。用 NTP 同步时钟,或允许几秒的时钟误差。

常见问题

把 JWT 粘贴到这里安全吗?

安全。解码完全在浏览器中进行,不会发送到服务器。不过,生产环境的令牌仍应像密码一样对待,避免分享。

这个工具会验证 JWT 签名吗?

不会。验证签名需要密钥或公钥,它们应保存在你的服务器上。解码只读取 header 和 payload。

为什么任何人都能读取 JWT 的 payload?

payload 只是编码,不是加密。绝不要在 JWT 中放密码或机密。

exp、iat 和 nbf 是什么意思?

exp 是过期时间,iat 是签发时间,nbf 是生效时间(在此之前无效)。它们都是以秒为单位的 Unix 时间戳。

为什么使用 JWT 时用户会被随机登出?

通常是请求或标签页之间的刷新竞争、时钟差异、Cookie 设置,或服务器之间密钥不一致。

JWS 和 JWE 有什么区别?

JWS 经过签名但可读,大多数 JWT 都是这种。JWE 是加密的,没有密钥无法读取 payload。本工具只解码签名令牌。

JWT header 中的 alg 是什么?

签名算法,例如 HS256(共享密钥)或 RS256、ES256(私钥和公钥对)。服务器应只接受预期的算法。

JWT 的有效期应该多长?

访问令牌通常较短,从几分钟到一小时,再配合有效期更长的刷新令牌获取新令牌。短有效期能在令牌泄露时减少损失。

JWT 应该存放在浏览器的哪里?

很多应用把刷新令牌放在 httpOnly、Secure 的 Cookie 中,把短期访问令牌放在内存里,以限制恶意脚本能读取的内容。

可以修改 payload 后继续使用令牌吗?

不行。修改任何部分都会使签名失效,配置正确的服务器会拒绝该令牌。

来源

相关内容

同类更多工具