Công cụ này chỉ giải mã header và payload của JWT — không xác minh chữ ký. Token đã giải mã vẫn có thể hết hạn, bị giả mạo hoặc không hợp lệ. Đừng bao giờ tin nội dung JWT khi chưa xác minh phía máy chủ.
Xử lý 100% cục bộ — token được giải mã hoàn toàn trong trình duyệt của bạn và không bao giờ được gửi đi bất cứ đâu.
Thời điểm phát hành (iat)-
Thời điểm hết hạn (exp)-
Về JWT (JSON Web Token)
JWT là token gọn nhẹ, an toàn cho URL, gồm ba phần mã hóa base64url phân tách bằng dấu chấm: header mô tả thuật toán ký, payload chứa claim (dữ liệu), và chữ ký để xác minh token không bị thay đổi. Công cụ này giải mã header và payload trở lại thành JSON dễ đọc.
Vì header và payload chỉ được mã hóa base64url chứ không mã hóa bảo mật, nên bất kỳ ai cũng có thể giải mã và đọc chúng mà không cần khóa bí mật — đây là điều được thiết kế có chủ đích. Chữ ký của JWT bảo vệ chống lại việc giả mạo, không phải khiến nội dung không đọc được, nên chỉ riêng bộ giải mã không bao giờ xác nhận được token có thực sự hợp lệ hay không.
Cách giải mã JWT và exp/iat nghĩa là gì?
JWT (JSON Web Token) gồm ba phần mã hóa base64url nối bằng dấu chấm: header.payload.signature. Để đọc nó, tách chuỗi theo dấu chấm, giải mã base64url phần header và payload, rồi phân tích mỗi phần dưới dạng JSON — không cần khóa bí mật để giải mã, chỉ cần khi xác minh chữ ký. Các trường iat (thời điểm phát hành) và exp (thời điểm hết hạn) trong payload là dấu thời gian Unix (số giây kể từ 1970-01-01), công cụ này đổi chúng sang ngày giờ dễ đọc.
Các bước giải mã JWT
- Dán toàn bộ chuỗi JWT (cả ba phần cách nhau bởi dấu chấm) vào ô nhập.
- Công cụ tách token theo dấu chấm và giải mã base64url phần đầu tiên (header) và phần thứ hai (payload).
- Mỗi phần đã giải mã được phân tích dưới dạng JSON và định dạng đẹp để dễ đọc.
- Nếu payload chứa trường iat hoặc exp, chúng được đổi từ dấu thời gian Unix sang ngày giờ địa phương dễ đọc.
- Phần thứ ba (signature) được giữ nguyên và không bao giờ được giải mã hay kiểm tra, vì xác minh nó cần khóa bí mật hoặc khóa công khai của bên phát hành, điều công cụ này không có.
Cấu trúc JWT và cách đổi dấu thời gian
JWT = base64url(header) + "." + base64url(payload) + "." + signature · Ngày dễ đọc = new Date(số giây exp_hoặc_iat x 1000)
- iat (issued at) = dấu thời gian Unix, tính bằng giây, khi token được tạo
- exp (expiration) = dấu thời gian Unix, tính bằng giây, sau đó token nên được coi là hết hạn
- base64url = biến thể an toàn cho URL của mã hóa base64, thay + và / bằng - và _ và bỏ ký tự đệm
Các trường payload JWT thường gặp
| Trường | Ý nghĩa |
|---|
| iss | Issuer — ai đã tạo và ký token |
| sub | Subject — danh tính mà token nói đến, ví dụ ID người dùng |
| aud | Audience — bên nhận dự kiến của token |
| iat | Issued at — khi token được tạo (dấu thời gian Unix) |
| exp | Expiration — khi token ngừng có hiệu lực (dấu thời gian Unix) |
Câu hỏi thường gặp
Giải mã JWT có chứng minh nó hợp lệ hay đáng tin không?
Không. Giải mã chỉ tiết lộ nội dung bên trong header và payload; nó không nói gì về việc chữ ký có thật hay không, token có được phát hành bởi nguồn đáng tin hay không, hay token có bị can thiệp hay không. Chỉ việc xác minh chữ ký bằng đúng khóa bí mật hoặc khóa công khai mới xác nhận được token là thật.
Vì sao bất kỳ ai cũng đọc được payload JWT của tôi mà không cần mật khẩu?
Header và payload được mã hóa base64url, không phải mã hóa bảo mật (encryption), nên giải mã chúng chỉ là một phép biến đổi văn bản có thể đảo ngược, không phải rào chắn bảo mật — điều này là cố ý, vì JWT được thiết kế để bất kỳ bên nào nhận được cũng đọc được. Vì lý do đó, không bao giờ nên đặt dữ liệu nhạy cảm vào payload JWT.
Điều gì xảy ra nếu dấu thời gian exp của token đã ở quá khứ?
Một JWT có giá trị exp ở quá khứ thường được các hệ thống kiểm tra coi là đã hết hạn và nên bị từ chối, nhưng công cụ giải mã này chỉ hiển thị ngày tháng — nó không so sánh với thời gian hiện tại hay từ chối bất cứ điều gì, vì việc kiểm tra đó là trách nhiệm của máy chủ.
Vì sao token đã giải mã của tôi hiện lỗi?
Lỗi thường có nghĩa là văn bản đã dán không phải một JWT hoàn chỉnh, đúng định dạng — ví dụ thiếu một phần cách nhau bởi dấu chấm, phần header hoặc payload không phải base64url hợp lệ, hoặc văn bản giải mã không phải JSON hợp lệ. Hãy kiểm tra lại bạn đã sao chép toàn bộ token mà không có khoảng trắng hay xuống dòng thừa.
Công cụ này có hữu ích cho lập trình viên khi debug API không?
Có, đây là cách dùng phổ biến của lập trình viên: nhanh chóng dán một token nhận được từ API để kiểm tra nội dung (ID người dùng, vai trò, ngày hết hạn) mà không cần viết mã. Tuy nhiên đây vẫn chỉ là công cụ đọc; để kiểm tra thực sự tính hợp lệ của token phía máy chủ, cần xác minh chữ ký bằng thư viện JWT và khóa phù hợp.
Công cụ này chỉ giải mã và hiển thị header và payload; không bao giờ xác minh chữ ký, không so sánh thời gian hết hạn với thời gian hiện tại, và không xác thực bất kỳ trường nào, nên một token giải mã thành công không đồng nghĩa với một token đã được xác minh, đáng tin cậy.
Sources: RFC 7519 (JSON Web Token)
Quyền riêng tư và an toàn
- Tính toán trong trình duyệt — Dữ liệu bạn nhập chỉ được tính trên thiết bị của bạn và không gửi tới máy chủ utilduck.
- Kết nối được mã hóa — Mọi trang đều dùng HTTPS nên không ai trên đường truyền đọc được nội dung.
- Không chia sẻ với bên thứ ba — Dữ liệu bạn nhập không được chuyển cho dịch vụ phân tích hay quảng cáo.
- Không lưu trữ — Kết quả không được lưu trên máy chủ nào và bạn không cần tạo tài khoản.
Cập nhật lần cuối: 2026-08-17