Pengode / pendekode JWT
Tempel token untuk membaca header dan payload-nya, atau tanda tangani dari klaim Anda sendiri — tanpa tombol, tanpa unggahan.
Opsional saat mendekode (isi untuk memverifikasi), wajib untuk menandatangani.
Tanda tangan:
Token
Header
Payload
Cara menggunakan
- Tempel token: header dan payload langsung muncul, tanpa tombol yang perlu ditekan. Apa pun yang berasal dari token tetap persis seperti saat ditandatangani — masukannya tidak pernah ditulis ulang.
- Tambahkan rahasia di bawah masukan untuk memeriksa tanda tangan. Membiarkannya kosong berarti “belum diverifikasi”: klaimnya tetap terbaca apa adanya.
- Beralih ke Enkode, tulis klaim Anda sebagai JSON, pilih HS256/384/512 dan rahasia, lalu salin token yang keluar. Berpindah mode tidak pernah menghapus yang sudah Anda ketik.
- Klaim standar exp / iat / nbf dijelaskan dalam bahasa dan zona waktu Anda, dengan penanda kedaluwarsa dan belum berlaku.
Contoh
Token
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1LTEwMjQiLCJuYW1lIjoiU2l0aSBSYWhtYXdhdGkiLCJyb2xlIjoiZWRpdG9yIiwiaXNzIjoiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20iLCJpYXQiOjE3NjcyMjU2MDAsImV4cCI6MTc5ODc2MTYwMH0.jl_SxsRHLHCRS3Q051YC_f1jJVD2tQfBIEki9KShkkA
Header dan payload
Header
{
"alg": "HS256",
"typ": "JWT"
}
Payload
{
"sub": "u-1024",
"name": "Siti Rahmawati",
"role": "editor",
"iss": "https://api.example.com",
"iat": 1767225600,
"exp": 1798761600
}Ditandatangani dengan rahasia “dev-secret-change-me”; ketik di kolom Rahasia dan baris statusnya berubah menjadi “Tanda tangan terverifikasi”. Beralih ke Enkode dan tekan Contoh untuk mendapat payload yang sama: dengan rahasia yang sama ia membangun ulang token ini persis, karakter demi karakter.
Aturan, batasan, dan masalah yang diketahui
- Hanya HS256, HS384, dan HS512 yang didukung, untuk menandatangani maupun memverifikasi. Token RS*, ES*, dan PS* didekode dan ditampilkan apa adanya, tetapi tanda tangannya tidak pernah diperiksa — itu butuh kunci publik, jadi baris status mengatakannya daripada menebak.
- Token tanpa tanda tangan (alg: none) didekode dan ditandai dengan jelas, tetapi tidak pernah dibuat: meminta tanda tangan tanpa rahasia menghasilkan galat, bukan token tanpa tanda tangan.
- Enkode membangun header sendiri (`{"alg": … ,"typ": "JWT"}`). Bidang header seperti kid, jku, x5c, atau cty tidak dibawa — alat ini menandatangani klaim, bukan rantai sertifikat.
- JSON klaim Anda diserialkan ulang secara ringkas sebelum ditandatangani, sehingga indentasi dan komentar tidak masuk ke token. Urutan kunci mengikuti objek JavaScript: kunci berulang menyusut ke yang terakhir, dan kunci yang tampak angka pindah ke depan.
- Bilangan bulat yang sangat besar kehilangan presisi — `12345678901234567890` kembali dalam bentuk dibulatkan, karena begitulah angka JavaScript. Tidak ada yang dikoreksi diam-diam; pakai string bila digit persis penting.
- Klaim ditampilkan menjorok agar mudah dibaca, sedangkan tanda tangan mencakup segmen mentah persis seperti di token. Tidak ada yang dienkode ulang di belakang layar, jadi token yang terverifikasi di sini juga terverifikasi di kode Anda.
- Base64url bersifat ketat: `+`, `/`, dan `=` dilaporkan sebagai galat, bukan diterima diam-diam, dan byte yang bukan UTF-8 dilaporkan, bukan diganti dengan karakter pengganti. Spasi di dalam token yang ditempel diabaikan, karena token memang tidak pernah memuatnya.
- JWE terenkripsi (lima bagian) tidak didekripsi — Anda diberi tahu bahwa itulah yang Anda tempel.
- Batas ukuran 10.000 karakter. Tidak ada yang diunggah, disimpan, ditulis ke URL, atau dibagikan: tombol bagikan hanya membagikan alamat halaman ini, tidak pernah token atau rahasia Anda.
Alat terkait
Setelah klaimnya terbaca, ini langkah berikutnya yang biasa.