免费在线 JWT 解码器 — 安全查看 Token 内容

粘贴 JSON Web Token,即刻查看解码后的 header、payload、claims 和过期状态。所有处理在浏览器本地完成,token 不会离开你的设备。

粘贴 JWT Token

你的 token 仅在浏览器本地处理,不会发送到服务器。

什么是 JWT?

JSON Web Token(JWT)是一种紧凑的、URL 安全的方式,用于在双方之间传递声明。它是 OAuth 2.0、OpenID Connect 以及大多数现代 API 认证方案的标准 bearer token 格式。

JWT 由三段 Base64URL 编码的部分组成,用点号分隔:header.payload.signature。Header 声明签名算法(如 HS256、RS256)。Payload 携带声明——包括 "exp"(过期时间)、"iat"(签发时间)等注册声明,以及你应用需要的任何自定义数据。Signature 确保 token 未被篡改。

本解码器拆分 token,对 header 和 payload 进行 Base64URL 解码并解析为 JSON,同时检查 "exp" 声明以判断 token 是否仍然有效。

使用方法

  1. 将 JWT 粘贴到文本框中,输入即刻解码。
  2. 查看解码后的 Header,确认算法和 token 类型。
  3. 检查 Payload 中的 sub、exp、iat 等声明及自定义字段。
  4. 关注状态徽标——显示 token 是否已过期或仍然有效。
  5. 点击复制按钮获取格式化 JSON,便于调试。

使用场景

调试认证流程

登录在测试环境正常,生产环境失败?分别粘贴两个环境的 token 对比 claims,快速发现 issuer 不同、audience 错误或角色缺失等问题。

开发时检查 token 过期

API 返回 401,不确定是 token 问题还是接口问题。粘贴到这里查看精确的 UTC 过期时间。

分享日志前审查 token

在 Slack 或 bug 报告中粘贴 token 前,先解码确认其中不包含不应共享的个人信息。

学习 JWT 结构

第一次实现 JWT 认证?粘贴示例 token 查看 header、claims 和 signature 如何组合。比直接读 RFC 直观得多。

安全建议

1.

不要在未验证签名的情况下信任 JWT

解码不等于验证。本工具展示 token 内容,但生产环境中必须用签发者的公钥或共享密钥验证签名。

2.

保持 token 短期有效

访问 token 应在几分钟内过期,使用 refresh token 维持长会话。如果看到 exp 设为数周后,这是安全隐患。

3.

不要在 payload 中存放敏感信息

JWT 是编码而非加密的。任何持有 token 的人都能解码。切勿在 claims 中存储密码、API 密钥或敏感个人信息。

4.

检查 algorithm header

"alg":"none" 攻击已有充分记录。如果 header 显示 "none",说明有问题。生产 token 应始终使用 HS256、RS256 或更强算法。

示例

标准 HS256 Token

包含标准声明的典型访问 token。

Input

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkphbmUgRG9lIiwiZXhwIjoyMDAwMDAwMDAwfQ.signature

Output

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

{
  "sub": "1234567890",
  "name": "Jane Doe",
  "exp": 2000000000
}

已过期 Token

exp 设在过去的 token——解码器标记为已过期。

Input

eyJhbGciOiJub25lIn0.eyJleHAiOjF9.signature

Output

Header: { "alg": "none" }
Payload: { "exp": 1 }
状态: 已过期 (1970-01-01T00:00:01.000Z)

功能特点

  • 输入即解码,无需点击按钮
  • 100% 浏览器端运行,页面加载后零网络请求
  • 过期状态显示精确 UTC 时间戳
  • 分段展示 header、payload 和 signature
  • 一键复制各解码段
  • 隐私优先:token 不会离开浏览器

常见问题

粘贴生产 JWT 安全吗?

安全。本工具完全在浏览器中运行,使用 JavaScript 内置的 atob() 函数。打开开发者工具 → 网络标签页可验证:粘贴 token 时没有任何请求发出。

能验证签名吗?

不能。签名验证需要签名密钥(HS256 的共享密钥或 RS256 的公钥)。本工具仅解码展示 token 内容。验证请使用后端 JWT 库。

为什么 token 显示过期但登录仍正常?

可能你看到的是旧的 access token,而应用正在静默使用 refresh token 获取新 token。或者服务器时钟与浏览器时钟不同步。

"alg: none" 是什么意思?

表示 token 没有密码学签名。这是已知攻击向量(CVE-2015-9235)。正规系统在生产中绝不使用 "none"。

能解码 JWE(加密 token)吗?

不能。本工具仅处理 JWS(签名 token)。JWE token 需要解密密钥才能读取 payload,它有 5 段而非 3 段。

提示与相关工作流