JWT 解码器

即时解码 JWT(JSON Web Token)的头部、载荷和签名。查看 exp、iat、nbf 声明状态。100% 客户端运行,无需上传,无跟踪。

广告
广告

解码 JWT,不上传您的令牌

即时 JWT 解码,含声明状态指示器和美化打印 JSON——就在您的浏览器中。无需上传,无需注册,无限制。

100% 私密
即时解码
永久免费

使用步骤

  1. 1

    粘贴您的 JWT

    复制 JWT 并粘贴到顶部的输入框中。工具将即时解码——无需点击按钮。

  2. 2

    查看头部和载荷

    解码的头部(算法和令牌类型)和载荷(声明)以美化打印的 JSON 显示在输入框下方。

  3. 3

    检查声明状态

    iat、nbf 和 exp 声明被解析并与当前时间比较。过期或尚未生效的令牌以红色或黄色标记。

  4. 4

    按需复制

    使用复制按钮将解码的头部或载荷 JSON 复制到剪贴板,以进行进一步分析。

为什么使用此 JWT 解码器?

即时解码,含声明验证,就在您的浏览器中。

即时本地解码

粘贴令牌的瞬间即解码并美化打印头部和载荷为 JSON——无需点击按钮,无服务器往返。

声明状态指示器

解析 `exp`、`nbf` 和 `iat` 声明并与当前时间比较,为过期、尚未生效和有效的令牌提供清晰的颜色编码状态。

UTF-8 安全

正确解码包含非 ASCII 字符的 Base64URL 载荷,包括表情符号和国际文本。

美化打印 JSON

解码的头部和载荷以适当的缩进格式化,便于阅读和调试。

100% 私密

所有解码在浏览器中本地完成。您的令牌永远不会被上传、记录或存储。

免费且无限制

无需注册、无需 API 密钥、无每日配额。对个人和商业用途永久免费。

广告

了解 JSON Web Token (JWT)

什么是 JWT?

JSON Web Token (JWT) 是一个开放标准(RFC 7519),定义了一种紧凑且自包含的方式,以 JSON 对象的形式在各方之间安全传输信息。JWT 常用于 Web 应用中的认证和授权。用户登录后,服务器签发包含用户声明(如用户 ID 和角色)的 JWT。客户端在后续请求的 Authorization 头中包含此 JWT,允许服务器在不存储会话状态的情况下验证用户身份。

JWT 由用点分隔的三部分组成:`header.payload.signature`。头部指定令牌类型 (JWT) 和签名算法(如 HS256、RS256)。载荷包含声明——关于用户和附加元数据的语句。签名用于验证令牌未被篡改。只有头部和载荷被 Base64URL 解码以读取声明;签名是仅用于验证的二进制值。

广告

解码 JWT vs 验证 JWT

解码 JWT 意味着 Base64URL 解码头部和载荷以读取声明。这不需要任何密钥——任何人都可以解码 JWT。解码告诉您令牌声明了什么,但不证明声明为真或令牌由受信任方签发。

验证 JWT 意味着使用密钥(HMAC 算法)或公钥(RSA/ECDSA 算法)检查签名。这确认令牌由密钥/私钥持有者签发且此后未被修改。只有经过验证的令牌才应被信任用于安全决策。我们的工具解码 JWT 但不验证——如需验证,请使用 jsonwebtoken (Node.js) 或 PyJWT (Python) 等库。

常见 JWT 声明

注册声明(RFC 7519 定义):`sub`(主体——用户 ID)、`iss`(签发者)、`aud`(受众)、`exp`(过期时间)、`nbf`(生效时间)、`iat`(签发时间)、`jti`(JWT ID)。私有声明:各方约定的自定义声明,如 `role`、`permissions`、`email` 或 `name`。我们的工具将载荷中的所有声明显示为格式化 JSON。

广告

常见用例

JWT 解码器不可或缺的真实场景。

调试认证

检查认证服务器签发的 JWT 声明,确认用户 ID、角色或过期时间。

API 开发

快速验证服务器端生成的 JWT 是否包含预期的载荷,再发送给客户端。

学习 JWT 结构

无需编写代码或安装库即可查看 JWT 的确切结构——头部、载荷、签名。

排查过期令牌

即时查看 401 错误是否由过期的 `exp` 声明或尚未生效的 `nbf` 声明引起。

与其他 JWT 解码器相比如何?

热门 JWT 解码工具的并排对比。

功能NovaToolsJWT.ioJWT.ms
隐私(无上传)100% 本地上传到服务器上传到服务器
价格免费无限制免费含广告免费
声明状态 (exp/nbf/iat)颜色编码
美化打印 JSON
UTF-8 安全解码有限
移动端友好有限有限
离线可用页面加载后

JWT.io 和 JWT.ms 将您的令牌上传到他们的服务器进行解码。我们的工具完全在本地解码——您的 JWT 永远不会离开浏览器。

JWT 快速参考

JSON Web Token 的关键信息。

令牌结构

header.payload.signature

用点分隔的三个 Base64URL 编码部分。

示例:eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjMifQ.abc123
header

包含算法 (alg) 和令牌类型 (typ) 的 JSON 对象。

示例:{"alg":"HS256","typ":"JWT"}
payload

包含用户和令牌声明的 JSON 对象。

示例:{"sub":"123","exp":1735689600}
signature

HMAC/RSA/ECDSA 签名。不解码,仅验证。

示例:HMAC-SHA256(header.payload, secret)

注册声明

sub

主体——标识用户或实体。

示例:"sub":"user-123"
iss

签发者——标识谁签发了令牌。

示例:"iss":"auth.example.com"
aud

受众——令牌的预期接收者。

示例:"aud":"api.example.com"
exp

过期时间(Unix 时间戳,秒)。

示例:"exp":1735689600
iat

签发时间(Unix 时间戳,秒)。

示例:"iat":1735603200
nbf

生效时间——令牌在此时间之前无效。

示例:"nbf":1735603200

算法

HS256

HMAC with SHA-256。对称——签名和验证使用相同密钥。

示例:{"alg":"HS256"} + 共享密钥
RS256

RSA 签名 with SHA-256。非对称——私钥签名,公钥验证。

示例:{"alg":"RS256"} + RSA 2048 位密钥对
ES256

ECDSA with P-256 and SHA-256。非对称——签名比 RSA 更小。

示例:{"alg":"ES256"} + EC P-256 密钥对
none

无签名。不安全——切勿在生产环境中使用。

示例:{"alg":"none"} — 严重漏洞

常见问题

此工具会验证 JWT 签名吗?
不会。此工具仅解码令牌——不验证签名。解码告诉您令牌声明了什么,但任何人都可以创建包含任意声明的令牌。验证需要签名密钥(用于 HS256 等 HMAC 算法)或公钥(用于 RS256 等 RSA 算法或 ES256 等 ECDSA 算法)。在未先验证签名之前,切勿信任 JWT 的声明做安全决策。如需验证 JWT,请使用 jsonwebtoken (Node.js)、PyJWT (Python) 或 jose (JavaScript/TypeScript) 等库,配合正确的密钥。
在此粘贴我的 JWT 安全吗?
安全。所有解码使用 JavaScript 在您的浏览器中本地完成。令牌永远不会发送到服务器,永远不会被存储,也永远不会被记录。您可以通过打开浏览器的开发者工具 Network 面板来验证——粘贴或解码令牌时不会发出任何网络请求。但是,您仍应避免将令牌粘贴到不受信任的网站,切勿在截图、工单或公开渠道中分享 JWT。即使我们的工具安全,其他在线 JWT 解码器可能会将您的令牌上传到服务器。
iat、nbf 和 exp 声明是什么意思?
这些是 RFC 7519 定义的注册声明,控制令牌的时间有效性。`iat`(签发时间)是指示令牌创建时间的 Unix 时间戳。`nbf`(生效时间)是指示令牌最早被视为有效的时间的 Unix 时间戳——在此时间之前,令牌应被拒绝。`exp`(过期时间)是指示令牌过期时间的 Unix 时间戳——在此时间之后,令牌应被拒绝。三者都以 Unix 纪元(1970 年 1 月 1 日 00:00:00 UTC)以来的秒数存储。我们的工具解析这些声明并显示颜色编码状态:绿色表示有效,黄色表示尚未生效,红色表示已过期。
为什么我的令牌有三部分?
JWT 由用点分隔的三个 Base64URL 编码部分组成:`header.payload.signature`。头部描述令牌类型 (JWT) 和签名算法(如 HS256、RS256)。载荷包含声明——关于实体(通常是用户)的语句和附加元数据。签名用于验证 JWT 发送者身份并确保消息在传输中未被更改。要解码 JWT,只需 Base64URL 解码头部和载荷——签名不解码,它是仅用于验证的二进制值。
什么是 Base64URL 编码,它与 Base64 有什么不同?
Base64URL 是 Base64 的变体,设计为在 URL 和文件名中安全使用。它用 `-` 替换 `+` 字符,用 `_` 替换 `/` 字符,并省略末尾的 `=` 填充字符。这是必要的,因为 `+` 和 `/` 在 URL 中有特殊含义(分别表示空格和路径分隔符)。JWT 使用 Base64URL 编码头部、载荷和签名。如果您尝试用标准 Base64 解码 JWT 部分,可能会出错,因为 `-` 和 `_` 不是有效的标准 Base64 字符。
最常见的 JWT 声明有哪些?
最常见的注册声明有:`sub`(主体——用户 ID)、`iss`(签发者——谁签发了令牌)、`aud`(受众——令牌的预期接收者)、`exp`(过期时间)、`nbf`(生效时间)、`iat`(签发时间)和 `jti`(JWT ID——令牌的唯一标识符)。还可以包含自定义声明,如 `role`、`permissions`、`email` 或 `name`。我们的工具将载荷中的所有声明显示为格式化的 JSON 对象。
可以不用密钥解码 JWT 吗?
可以。解码 JWT 不需要密钥——只需 Base64URL 解码头部和载荷。密钥仅用于验证签名,确认令牌由受信任方签发且未被篡改。这是一个常见的混淆点:解码不等于验证。任何人都可以解码 JWT,但只有拥有密钥的人才能验证它。
如果我粘贴了无效的 JWT 会怎样?
工具将显示错误消息,指出问题所在。常见错误包括:没有恰好三个用点分隔的部分、包含不是有效 Base64URL 的字符、或解码后载荷不是有效 JSON。错误消息会准确告诉您出了什么问题,以便修复输入。
该工具能在移动设备上使用吗?
可以。工具完全响应式,可在 iOS Safari 和 Android Chrome 上运行。界面适应小屏幕,采用垂直布局——输入在顶部,解码的头部和载荷在中间,声明状态在底部。解码在您的手机上本地运行,因此在慢速网络连接下也能使用。
可以将此工具用于商业项目吗?
可以。本工具对个人和商业用途均免费,无水印、无需署名、无使用限制。您保留对令牌的完全所有权。无需注册、无需 API 密钥、无需订阅。

100% 客户端 & 私密

JWT 解码完全在您的浏览器中完成。

  • 您的令牌永远不会被上传、记录或存储。
  • 所有解码使用 JavaScript 在本地执行——粘贴或解码令牌时不会发出任何网络请求。
  • 对于高度敏感的令牌(如生产访问令牌),请考虑使用离线工具或本地脚本。
  • 即使我们的工具安全,作为一般安全实践,也切勿将生产令牌粘贴到任何基于 Web 的工具中。

你可能还喜欢

相关指南

广告