Mã hóa
JWT Encoder/Decoder
Mã hóa và giải mã token JWT — header, payload, chữ ký HMAC và các trường chuẩn.
Các ví dụ đã ký (tất cả trừ none) yêu cầu HTTPS — trang hiện đang mở mà không có HTTPS.
Với RS/PS/ES, khóa được tạo tự động và tạm thời — chỉ để minh họa, không thể tái sử dụng.
Các ví dụ đã ký (tất cả trừ none) yêu cầu HTTPS — trang hiện đang mở mà không có HTTPS.
Claims
A JWT (JSON Web Token) is a compact format for transmitting signed data, made of three dot-separated parts: a header, a payload, and a signature. This tool decodes any JWT and shows all three parts, and can also build a new token signed with HMAC.
Decoding does not verify the signature — reading a token's contents needs no secret key. Verifying the signature only matters when you need to trust the token as genuine.
How to use it
- Decode: paste a JWT and the tool splits it into header, payload, and signature, highlighting standard claims like exp, iat, and sub.
- Encode: fill in the header and payload, provide a secret, and get a signed HMAC token (HS256/HS384/HS512) back.
- Check expiry: the exp claim is shown as a normal date, so you can immediately tell if a token has expired.
Common uses
- Debugging authentication issues by inspecting exactly what a request's token contains.
- Checking which claims (roles, permissions, expiry) your backend issues.
- Generating a test token for local development without running an auth server.
Things to keep in mind
A JWT is not encrypted, only Base64URL-encoded — anyone can read the payload. Never put passwords or other secrets in it.
The signature protects against tampering, not against being read. For confidentiality you need extra encryption (JWE) or an HTTPS transport.
Bài viết về công cụ này: JWT: cấu trúc token và "giải mã" JWT nghĩa là gì
Câu hỏi thường gặp
Giải mã JWT có xác minh chữ ký của nó không?
Không. Việc giải mã chỉ base64url-decode phần header và payload để bạn đọc được các claim — điều này không chứng minh token là xác thực. Để thực sự xác minh chữ ký, bạn cần nhập đúng khóa bí mật hoặc khóa công khai vào đây.
Dán một JWT thật vào công cụ này có an toàn không?
Việc giải mã và ký diễn ra hoàn toàn trong trình duyệt của bạn — token và bất kỳ khóa bí mật nào bạn nhập không bao giờ được gửi tới máy chủ. Tuy vậy, hãy cẩn thận với token từ hệ thống production, vì bất kỳ ai thấy JWT đã giải mã đều có thể đọc được các claim.
Vì sao token của tôi hiện đã hết hạn dù vẫn hoạt động trong ứng dụng?
Chỉ báo Hết hạn/Hợp lệ ở đây chỉ so sánh claim exp với thời gian hiện tại — nó không kiểm tra dung sai lệch đồng hồ hay các quy tắc xác thực khác mà máy chủ hoặc thư viện của bạn có thể áp dụng.
Tấn công đánh tráo thuật toán thành "none" là gì?
Nếu backend ngây thơ tin tưởng trường alg lấy từ header của token, kẻ tấn công có thể đổi nó thành none, bỏ chữ ký — và token chứa dữ liệu tùy ý sẽ vượt qua kiểm tra. Các thư viện đáng tin cậy yêu cầu chỉ định rõ thuật toán mong đợi khi xác minh.
Vì sao không nên lưu JWT trong localStorage cho các phiên nhạy cảm?
localStorage có thể truy cập được từ bất kỳ đoạn JavaScript nào trên trang, nên dễ bị tấn công qua XSS — một script độc hại có thể đánh cắp token. Với token phiên, dùng httpOnly-cookie an toàn hơn, vì JavaScript không thể truy cập được.