JWT Encoder & Generator
Generator & encoder JWT online gratis. Susun header dan payload, tandatangani dengan HS256, RS256, atau ES256 secara instan. 100% di browser — secret dan key Anda tidak pernah meninggalkan perangkat.
Apa Itu JWT Encoder?
JWT encoder menyusun dan menandatangani secara kriptografis sebuah JSON Web Token dari header dan payload berisi klaim. JWT, yang didefinisikan dalam RFC 7519, adalah tiga bagian ber-encode Base64URL yang digabungkan dengan titik: header.payload.signature. Header menamai algoritma penandatanganan; payload membawa klaim (tentang siapa token itu, apa yang bisa dilakukannya, kapan kedaluwarsa); dan tanda tangan adalah bukti kriptografis, yang dihitung dari header dan payload dengan secret atau private key, yang memungkinkan penerima mendeteksi manipulasi.
"JSON Web Token (JWT) is a compact claims representation format intended for space-constrained environments such as HTTP Authorization headers and URI query parameters." — RFC 7519, Section 1
Encoding adalah kebalikan dari decoding. Sebuah JWT decoder membaca klaim token yang sudah ada; sebuah encoder mengambil klaim yang Anda berikan dan menghasilkan token baru yang ditandatangani. Langkah penandatanganan inilah yang membedakan JWT sungguhan dari Base64 sembarangan — tanpa tanda tangan valid, tidak ada verifier yang akan menerima token. Alat ini menandatangani menggunakan Web Crypto API bawaan browser di seluruh keluarga HMAC (HS), RSA (RS, PS), dan ECDSA (ES), jadi seluruh operasi terjadi di perangkat Anda dengan nol dependensi dan nol panggilan jaringan.
Developer menjangkau JWT encoder terus-menerus: untuk mencetak token yang menguji endpoint API terproteksi, untuk mereproduksi bentuk klaim persis yang diterbitkan server OAuth agar sebuah bug bisa didebug, untuk menyusun fixture bagi test integrasi, atau untuk memberi rekan tim Bearer token siap pakai untuk perintah curl. Karena payload di-encode, bukan dienkripsi, JWT aman dikirim lewat jaringan tetapi tidak boleh pernah membawa rahasia — siapa pun yang memegang token bisa membaca setiap klaim, dan hanya tanda tangan yang mencegah mereka mengubahnya.
Pekerjaan JWT berpasangan secara alami dengan alat developer lain. Setelah menandatangani, dekode token untuk memastikan klaimnya, konversi exp dan iat antara waktu Unix dan tanggal manusia, atau hitung hash SHA-256 saat Anda butuh fungsi hash dasar yang menjadi fondasi HMAC pada HS256. Karena setiap segmen JWT di-encode Base64URL, alat Base64 berguna saat Anda memeriksa token secara manual; untuk pembahasan mendalam tentang encoding ini, lihat panduan dasar Base64 kami.
// Sign a JWT in the browser with the Web Crypto API (HS256)
async function encodeJwt(payload, secret) {
const b64url = (bytes) =>
btoa(String.fromCharCode(...new Uint8Array(bytes)))
.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
const enc = (obj) =>
b64url(new TextEncoder().encode(JSON.stringify(obj)));
const header = { alg: 'HS256', typ: 'JWT' };
const signingInput = `${enc(header)}.${enc(payload)}`;
const key = await crypto.subtle.importKey(
'raw', new TextEncoder().encode(secret),
{ name: 'HMAC', hash: 'SHA-256' }, false, ['sign']);
const sig = await crypto.subtle.sign(
'HMAC', key, new TextEncoder().encode(signingInput));
return `${signingInput}.${b64url(sig)}`;
}
const token = await encodeJwt({ sub: 'user_123', exp: 1999999999 }, 'my-secret');
// → eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsImV4cCI6MTk5OTk5OTk5OX0.... Fitur Utama
Buat & Tandatangani JWT Secara Instan
Edit payload dan lihat token yang ditandatangani diperbarui real-time — header, payload, dan tanda tangan dihitung saat itu juga. Tanpa tombol Generate, tanpa perjalanan bolak-balik ke server.
Cakupan Algoritma Penuh
Tandatangani dengan HS256/384/512, RS256/384/512, PS256/384/512, dan ES256/384/512 — setiap keluarga JWS umum, semua lewat Web Crypto API bawaan browser.
Key Tidak Pernah Meninggalkan Perangkat
Secret dan private key PKCS8 Anda dipakai sepenuhnya di browser. Tidak ada yang diunggah, dicatat, atau disimpan — aman untuk pengembangan dan penanganan insiden.
Bantuan Klaim Cepat
Sisipkan iss, sub, aud, iat, nbf, atau exp satu jam dengan sekali klik — tanpa timestamp Unix manual, tanpa salah sintaks.
Output Berkode Warna
Token yang ditandatangani dipisah menjadi header, payload, dan tanda tangan dengan warna berbeda, sehingga strukturnya jelas sekali pandang dan mudah disalin.
Nol Dependensi
Dibangun hanya di atas Web Crypto API dan JSON bawaan browser — tanpa library eksternal, tanpa telemetri, tanpa panggilan jaringan jenis apa pun.
Contoh
Token Sesi HS256
{
"sub": "user_123",
"name": "Alice",
"role": "admin",
"iat": 1715000000,
"exp": 1999999999
}
secret: a-string-secret-at-least-256-bits-long eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsIm5hbWUiOiJBbGljZSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTcxNTAwMDAwMCwiZXhwIjoxOTk5OTk5OTk5fQ.<HMAC-SHA256 signature>
Token HMAC-SHA256 yang ditandatangani dengan shared secret — konfigurasi paling umum untuk autentikasi sesi stateless. Siapa pun yang memegang secret yang sama bisa memverifikasinya.
Access Token RS256
{
"iss": "https://auth.example.com",
"aud": "api.example.com",
"sub": "90087165",
"scope": "read:user write:post",
"iat": 1715000000,
"exp": 1999999999
}
private key: -----BEGIN PRIVATE KEY----- (PKCS8) eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2F1dGguZXhhbXBsZS5jb20iLCJhdWQiOiJhcGkuZXhhbXBsZS5jb20iLCJzdWIiOiI5MDA4NzE2NSIsInNjb3BlIjoicmVhZDp1c2VyIHdyaXRlOnBvc3QiLCJpYXQiOjE3MTUwMDAwMDAsImV4cCI6MTk5OTk5OTk5OX0.<RSA signature>
Access token bergaya OAuth yang ditandatangani RSA. Token ditandatangani dengan private key Anda dan diverifikasi oleh siapa pun yang memegang public key pasangannya — ideal saat verifier tidak boleh bisa mencetak token.
Token Ringkas ES256
{
"sub": "device-42",
"iat": 1715000000,
"exp": 1999999999
}
private key: -----BEGIN PRIVATE KEY----- (P-256) eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkZXZpY2UtNDIiLCJpYXQiOjE3MTUwMDAwMDAsImV4cCI6MTk5OTk5OTk5OX0.<ECDSA P-256 signature>
Token ECDSA pada kurva P-256. Tanda tangan ES256 jauh lebih pendek daripada RSA sambil menawarkan keamanan setara, sehingga token tetap kecil untuk lingkungan terbatas.
Cara Menggunakan
- 1
Edit Klaim Payload
Tulis klaim yang dibutuhkan token Anda sebagai JSON di editor payload. Gunakan chip klaim cepat untuk menyisipkan iss, sub, aud, iat, nbf, atau exp satu jam tanpa mengetik timestamp.
- 2
Pilih Algoritma & Masukkan Key
Pilih algoritma penandatanganan. Untuk HS256/384/512 masukkan secret; untuk algoritma RS, PS, atau ES tempel private key PKCS8 PEM. Token ditandatangani secara lokal saat Anda mengetik.
- 3
Salin JWT yang Ditandatangani
Token yang ditandatangani muncul instan, diberi kode warna per segmen. Klik Salin untuk mengangkatnya ke header Authorization, perintah curl, atau test. Key Anda tidak pernah meninggalkan browser.
Common Errors
Memakai Secret HMAC Lemah
Keamanan HS256 bergantung sepenuhnya pada entropi secret. Secret pendek atau mudah ditebak memungkinkan penyerang menebaknya secara brute-force dan memalsukan token. Gunakan setidaknya 256 bit keacakan.
secret: "password123" // guessable, low entropy
secret: base64(crypto.randomBytes(32)) // >=256 random bits
Melewatkan Klaim exp
Token tanpa exp tidak pernah kedaluwarsa. Jika bocor, tidak ada titik pencabutan alami. Selalu setel kedaluwarsa yang sesuai dengan tipe token.
{ "sub": "user_123", "role": "admin" } // no exp { "sub": "user_123", "role": "admin", "exp": 1715003600 } Menempel Key PKCS1 Alih-alih PKCS8
Web Crypto API hanya mengimpor private key PKCS8. Key RSA PKCS1 tradisional gagal diimpor — konversi dulu.
-----BEGIN RSA PRIVATE KEY----- // PKCS1, not supported
openssl pkcs8 -topk8 -nocrypt -in pkcs1.pem -out pkcs8.pem
Kasus Penggunaan Umum
- Buat Token untuk Testing API
- Buat Bearer token HS256 dalam hitungan detik untuk menguji endpoint terproteksi dari curl, Postman, atau test integrasi.
- Reproduksi Token OAuth & OIDC
- Susun token RS256 atau ES256 yang mencerminkan apa yang diterbitkan server otorisasi Anda, sehingga Anda bisa mendebug ketidakcocokan klaim dan audience.
- Buat Test Fixture
- Hasilkan token deterministik yang ditandatangani untuk unit dan test integrasi tanpa menyiapkan server auth lengkap.
- Debug Kegagalan Otorisasi
- Buat ulang bentuk token pelanggan — issuer, audience, scope, kedaluwarsa — untuk menemukan kenapa backend menolaknya.
- Validasi Verifier
- Tandatangani token dengan key yang diketahui untuk memastikan middleware verifikasi Anda menerima token valid dan menolak yang dimanipulasi.
- Prototipe Alur Auth
- Beri rekan tim token siap pakai sambil merangkai login baru, microservice, atau panggilan antar layanan.
Detail Teknis
- Sesuai RFC 7519 / 7515 / 7518
- Menghasilkan token JWS yang sesuai RFC 7519 (JWT), RFC 7515 (JWS), dan RFC 7518 (JWA), dengan identifier algoritma terdaftar di header.
- Penandatanganan Web Crypto Native
- Menandatangani lewat crypto.subtle untuk HMAC, RSASSA-PKCS1-v1_5, RSA-PSS, dan ECDSA. Tanda tangan ECDSA dipancarkan sebagai raw r||s, persis seperti yang dituntut JWS.
- Base64URL, Nol Dependensi
- Header dan payload di-encode Base64URL dengan alfabet URL-safe (RFC 4648), tanpa padding. Tanpa library eksternal, tanpa panggilan jaringan, tanpa telemetri.
Praktik Terbaik
- Selalu Setel Kedaluwarsa
- Sertakan klaim exp agar token yang bocor berhenti valid. Masa hidup pendek mengecilkan radius dampak — hitungan menit untuk access token, bukan hari.
- Jauhkan Rahasia dari Payload
- Payload JWT bisa dibaca siapa pun yang memegang token. Taruh identifier dan scope di dalamnya; jangan pernah password, API key, atau PII utuh.
- Tandatangani di Sisi Server di Production
- Gunakan alat ini untuk test dan debugging. Di sistem sungguhan, tandatangani token di server dengan library terpelihara dan key dari secrets manager Anda.
Pertanyaan yang Sering Diajukan
Bagaimana cara membuat JWT secara online?
Apa itu generator JWT?
header.payload.signature yang bisa Anda pakai sebagai Bearer token. Ini kebalikan dari JWT decoder: alih-alih membaca token yang sudah ada, generator membuat token baru yang ditandatangani dengan secret Anda (HS256) atau private key (RS256/ES256). Generator ini berjalan sepenuhnya di browser Anda, jadi token diproduksi instan dan signing key Anda tidak pernah meninggalkan perangkat. Apakah generator JWT ini gratis dan aman dipakai?
Apakah aman memasukkan secret atau private key saya di sini?
Apa perbedaan HS256 dan RS256?
Algoritma apa saja yang didukung JWT encoder ini?
Bagaimana cara menyetel klaim exp (kedaluwarsa)?
exp ke payload sebagai timestamp Unix dalam detik — misalnya "exp": 1999999999. Cara tercepat adalah chip exp +1h di bawah payload, yang menyisipkan kedaluwarsa satu jam dari sekarang. Anda juga bisa menambahkan iat (issued-at) dan nbf (not-before) dengan cara yang sama. Ingat bahwa exp dalam detik, bukan milidetik, dan verifier membandingkannya dengan jam mereka sendiri, jadi jaga waktu server tetap sinkron agar tidak terjadi penolakan dini. Untuk mengonversi tanggal manusia ke timestamp Unix, gunakan konverter Unix timestamp kami. Bagaimana cara mendapatkan private key PKCS8 PEM untuk RS256 atau ES256?
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out private.pem. Untuk ECDSA P-256: openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -out ec-private.pem. Kedua perintah menghasilkan blok PKCS8 PEM yang diawali -----BEGIN PRIVATE KEY-----, yang persis seperti yang diharapkan alat ini. Tempel seluruh blok, termasuk baris header dan footer. Public key pasangannya — dipakai untuk memverifikasi token — bisa diturunkan dengan openssl pkey -in private.pem -pubout. Bagaimana cara memverifikasi token yang baru saya buat?
jwt.verify(token, secretOrPublicKey, { algorithms: ['HS256'] }) di Node.js, PyJWT.decode(token, key, algorithms=['RS256']) di Python, atau jwt.Parse(token, keyFunc) di Go. Jangan pernah memverifikasi dengan daftar algoritma kosong atau dengan verify_signature=False di production — selalu pin algoritma persis yang Anda harapkan. Apa yang sebaiknya saya taruh di payload?
iss (issuer), sub (subject — biasanya ID pengguna), aud (audience), exp (expiration), nbf (not before), iat (issued at), dan jti (token ID). Di samping ini Anda bisa menambahkan klaim aplikasi seperti role, scope, atau email. Jangan menaruh rahasia di payload — JWT di-encode, bukan dienkripsi, jadi siapa pun yang memegang token bisa membaca setiap klaim. Jaga token di bawah sekitar 4 KB agar muat di header Authorization dan cookie. Apakah JWT dienkripsi?
Kenapa penandatanganan RS256 atau ES256 saya gagal?
-----BEGIN RSA PRIVATE KEY----- (PKCS1) dengan openssl pkcs8 -topk8 -nocrypt -in old.pem -out pkcs8.pem; (2) kurva tidak cocok dengan algoritma — ES256 butuh key P-256, ES384 butuh P-384, ES512 butuh P-521; (3) Anda menempel public key atau sertifikat alih-alih private key; atau (4) key dienkripsi dengan passphrase, yang tidak bisa diimpor langsung oleh Web Crypto API. Dekripsi dulu dengan openssl pkey lalu tempel blok PKCS8 yang tidak terenkripsi. Apakah alat ini mendukung token tanpa tanda tangan alg:none?
alg:none tidak punya tanda tangan, yang berarti siapa pun bisa memalsukannya — inilah akar dari kerentanan klasik bypass autentikasi JWT. Karena inti dari sebuah encoder adalah menghasilkan token yang ditandatangani, alat ini hanya menawarkan algoritma penandatanganan sungguhan. Jika Anda mempelajari alg:none untuk riset keamanan, Anda bisa menyusunnya secara manual dengan meng-encode Base64URL header dan payload lalu membiarkan segmen tanda tangan kosong — token tetap diakhiri titik di ujung (header.payload.) — tetapi Anda tidak boleh pernah menerima token seperti itu di production. Bisakah saya membuat JWT lewat kode saja?
jsonwebtoken.sign(payload, secret, { algorithm: 'HS256', expiresIn: '1h' }). Di Python: jwt.encode(payload, key, algorithm='RS256') dengan PyJWT. Di Go: jwt.NewWithClaims(jwt.SigningMethodES256, claims).SignedString(privateKey). Alat ini adalah cara tercepat untuk menghasilkan token untuk test cepat, request curl, atau fixture — tetapi di kode aplikasi Anda sebaiknya membuat token di sisi server dengan library yang terpelihara dan key yang dimuat dari secrets manager Anda, jangan pernah di-hardcode. Alat Terkait
Lihat semua alat →JWT Decoder
Alat Keamanan
Dekode token JWT online dengan dekoder JWT gratis kami. Periksa header, payload, tanda tangan, kedaluwarsa, dan klaim secara instan. 100% browser — token Anda tidak meninggalkan perangkat. Tanpa pendaftaran, tanpa pelacakan.
MD5 Hash Generator & Alat Checksum File
Alat Keamanan
Hasilkan hash MD5, SHA-256, SHA-1 & SHA-512 secara online gratis. Hash teks atau file di browser Anda, verifikasi checksum dan salin hasil. Tanpa pendaftaran.
Generator Kata Sandi Acak Online — Kuat, Aman & Gratis
Alat Keamanan
Buat kata sandi acak yang kuat secara instan — gratis, tanpa pendaftaran, 100% di browser. Sesuaikan panjang & karakter, batch hingga 50 dengan analisis entropi.
SHA-1 Hash Generator (160-bit, Algoritma Usang)
Alat Keamanan
Hasilkan hash SHA-1 di browser — output hex 40 karakter, tanpa unggah. Algoritma usang untuk sidik jari Git, cek sertifikat lama, dan audit migrasi. Data tidak pernah meninggalkan perangkat Anda.
SHA-256 Hash Generator & Alat Checksum
Alat Keamanan
Hasilkan hash SHA-256 online gratis. Hash teks atau file di browser Anda, verifikasi checksum, dan salin output hex 64 karakter. Tanpa pendaftaran; data tidak pernah meninggalkan halaman.
SHA-3 Hash Generator (Keccak SHA3-256 NIST)
Alat Keamanan
Hasilkan hash SHA-3 online gratis. Konstruksi sponge NIST FIPS 202 — standar pasca-SHA-2. Output SHA3-256 dalam 64 karakter hex. Hanya browser melalui js-sha3 yang di-lazy-load; tanpa unggahan.