CodeKitHub
简体中文
编码工具

JWT 解码器

粘贴任意 JWT(JSON Web Token),即时看到解码后的 Header 和 Payload,格式化展示,并自动判断是否已过期。全程在浏览器本地完成:token 不会发送到任何地方,本工具也不做签名验证(只解码,不校验真伪)。

Header

Payload

仅在浏览器本地解码,不做签名验证,token 不会发送到任何服务器。

工具介绍

JWT(JSON Web Token)是一种紧凑、URL安全的字符串,用于在两方之间传递声明信息——最常见的用途是登录后的身份令牌。它由三段用点号分隔的部分组成:Header(算法和令牌类型)、Payload(实际的声明内容——用户ID、角色、过期时间等)、Signature(服务端用来验证令牌未被篡改的签名)。

Header 和 Payload 只是 Base64URL 编码的 JSON——不是加密——所以任何人都能不需要密钥就解码读出内容。只有 Signature 部分需要密钥才能验证。这正是本工具做的事:解码可读的两部分并格式化展示,不尝试验证签名。

为什么使用它?

  • 即时得到格式化的 JSON——不用再手动拆分字符串、手工 Base64 解码。
  • 自动过期检测:如果 Payload 里有"exp"声明,会转换成可读日期,并标注是否已过期。
  • Header 和 Payload 可分别一键复制。
  • 100% 浏览器本地解码——token 不会被传输,即使是生产环境的真实 token 也能放心使用。
  • 不做也不声称做签名验证——这是调试/查看工具,不是验证器。

使用方法

  1. 把 JWT 完整粘贴进输入框(包括全部三段,用点号分隔)。
  2. 输入时 Header 和 Payload 会自动解码显示。
  3. 如果 token 带"exp"声明,会显示具体过期时间和是否已过期。
  4. 点击每个框下方的"复制"按钮即可复制该部分 JSON。

示例

输入

eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0IiwibmFtZSI6IkpvaG4gRG9lIiwiZXhwIjoxNzAwMDAwMDAwfQ.dQw4w9WgXcQ

输出

Header: {"alg": "HS256"}
Payload: {"sub": "1234", "name": "John Doe", "exp": 1700000000}

第三段(Signature)不会被解码或校验——它是服务端用来验证真实性的不透明哈希值。

实用建议

  • 排查"token 无效"错误时:先解码 payload 查看"exp"声明——token 过期是最常见的原因,但从报错信息本身往往看不出来。
  • 查看第三方 API 令牌到底装了什么:很多 API 返回的 access token 表面上看是一串乱码的 JWT——用本工具解码就能看到实际拿到的权限范围、用户ID或过期时间。
  • 永远不要假设 JWT 是加密的:开发时如果在解码后的 payload 里看到敏感数据(邮箱、内部ID),这是个信号——应该把这类数据挪到服务端处理,而不是指望客户端不去读它。

Payload里常见的声明字段

字段含义
sub主体——通常是令牌代表的用户ID
exp过期时间(Unix时间戳)——超过这个时间令牌失效
iat签发时间——令牌是什么时候创建的
iss签发方——哪个服务/服务器签发了这个令牌
aud受众——这个令牌是给哪个服务用的
role / roles / scope自定义字段——授予用户的权限或角色(不是JWT标准的一部分,但极其常见)

常见问题

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

不会。验证签名需要签发方持有的密钥(对称或非对称密钥对),只有签发服务器自己有。本工具只解码 Header 和 Payload 这两个人类可读的部分,方便你查看声明内容和过期时间,不需要任何密钥。

把真实的生产环境 JWT 粘贴进来安全吗?

解码完全通过浏览器 JavaScript 本地完成——token 不会发送到任何服务器,包括本站。不过还是建议把 token 当密码对待:不要粘贴到不信任的工具里,也避免分享包含敏感声明的解码截图。

为什么不需要密码任何人都能读出我的 JWT 内容?

这是设计使然——JWT 的 Header 和 Payload 只是 Base64URL 编码,不是加密。编码不等于加密,它只是让 JSON 能安全地在 URL 里传输。永远不要把密码、信用卡号这类敏感信息直接放进 JWT payload——假设任何拿到 token 的人都能读到里面的内容。

"exp"声明是什么意思,为什么重要?

"exp"是令牌的过期时间,用 Unix 时间戳表示(从1970年至今的秒数)。这个时间一过,服务端会拒绝该 JWT,强制客户端重新登录。本工具会把它转换成可读日期并标注是否已过期,排查"为什么突然被登出"这类问题时很有用。

为什么我的 token 显示 JSON 解析错误?

要么这不是合法的 JWT(应该正好是三段用点号分隔),要么是被截断或修改过——常见原因是复制时 token 被意外换行分割,或者结尾字符丢失。

相关工具