🌐 ZH

🔓 JWT 解码器

粘贴 JWT(JSON Web Token)后,会立即对 header 和 payload 进行 base64url 解码,并以格式化的 JSON 展示。exp/iat/nbf 声明会同时以易读时间显示,并用徽章标注令牌是否已过期。

⚠️ 本工具仅进行解码,不验证签名(signature)。出于安全考虑,本工具没有设置密钥输入框——如需验证签名,请使用服务端的 JWT 库。

指南

了解更多

01

1. 理解 JWT 结构

JWT 由点号分隔的 3 部分组成:header.payload.signature。header 中包含签名算法(alg)和令牌类型(typ),payload 中包含实际的声明(claims,如用户 ID、权限、签发时间等),两者均经过 base64url 编码。签名是用密钥(或私钥)对 header+payload 进行签名后的值,用于验证令牌未被篡改,但本工具不会执行该验证。

02

2. exp、iat、nbf 声明

exp(expiration)表示令牌过期时间,iat(issued at)表示签发时间,nbf(not before)表示在该时间之前令牌无效。这三个值都以 Unix 时间戳(秒)存储,不便于直接阅读。本工具会将每个值同时以本地时间和 ISO 8601 格式显示,若 exp 早于当前时间则显示"已过期"徽章。

03

3. 何时需要验证签名

验证 JWT 签名需要签发时使用的密钥(HMAC 系列,如 HS256)或对应的公钥(RSA/ECDSA 系列,如 RS256/ES256)。这是应在服务端处理的敏感操作,因此本浏览器工具只提供解码(查看内容),不接收任何密钥输入。如需真正的验证,请使用后端语言的 JWT 库(如 jsonwebtoken、PyJWT、firebase-admin 等)。

常见问题

可以用这个工具伪造 JWT 吗?
不可以。本工具仅进行解码(base64url 解析),不生成也不验证签名。生成有效签名需要只有签发方知道的密钥/私钥,本工具不接收此类输入。
为什么没有密钥输入框?
出于安全考虑。将密钥粘贴到浏览器工具中存在意外泄露的风险,因此本工具从设计上就不接受此类输入。
如何知道令牌是否已过期?
如果 payload 中含有 exp 声明,会自动与当前时间比较,显示"已过期"或"有效(未过期)"徽章。
粘贴的令牌会发送到服务器吗?
不会。解码完全在浏览器 JavaScript 中完成,不会发送到任何服务器。