Skip to content

Codificatore e Generatore JWT

Generatore JWT online gratis. Costruisci header e payload, firma con HS256, RS256 o ES256 all'istante nel browser; segreto e chiave non lasciano il dispositivo.

Niente tracciamento Funziona nel browser Gratuito
Payload (attestazioni)
Inserisci un'attestazione registrata:
Segreto
Firmato localmente nel tuo browser — il tuo segreto e la tua chiave privata non lasciano mai il dispositivo.
Segue il comportamento di firma di RFC 7515/7518 con output verificato in modo incrociato contro un verificatore a chiave pubblica indipendente — Team Sicurezza di Go Tools · Jun 11, 2026

Cos'è un codificatore JWT?

Un codificatore JWT costruisce e firma crittograficamente un JSON Web Token a partire da un'intestazione e da un payload di attestazioni. Un JWT, definito nella RFC 7519, è composto da tre sezioni codificate in Base64URL unite da punti: header.payload.signature. L'intestazione nomina l'algoritmo di firma; il payload trasporta le attestazioni (su chi è il token, cosa può fare, quando scade); e la firma è una prova crittografica, calcolata sull'intestazione e sul payload con un segreto o una chiave privata, che permette al destinatario di rilevare manomissioni.

"Il JSON Web Token (JWT) è un formato compatto di rappresentazione delle attestazioni, pensato per ambienti con vincoli di spazio come gli header Authorization HTTP e i parametri di query URI." — RFC 7519, Sezione 1

La codifica è l'inverso della decodifica. Un decodificatore JWT legge le attestazioni di un token esistente; un codificatore prende le attestazioni che fornisci e produce un token firmato nuovo di zecca. Il passo della firma è ciò che separa un vero JWT da un Base64 arbitrario — senza una firma valida, nessun verificatore accetterà il token. Questo strumento firma usando la Web Crypto API nativa del browser per le famiglie HMAC (HS), RSA (RS, PS) ed ECDSA (ES), quindi l'intera operazione avviene sul tuo dispositivo con zero dipendenze e zero chiamate di rete.

Gli sviluppatori ricorrono costantemente a un codificatore JWT: per coniare un token che esercita un endpoint API protetto, per riprodurre la forma esatta delle attestazioni che un server OAuth emette così da poter fare il debug di un bug, per costruire fixture per test di integrazione o per consegnare a un collega un Bearer token pronto all'uso per un comando curl. Poiché il payload è codificato, non cifrato, un JWT è sicuro da passare in rete ma non deve mai trasportare segreti — chiunque abbia il token può leggere ogni attestazione, e solo la firma impedisce loro di cambiarne una.

Il lavoro con i JWT si combina naturalmente con altri strumenti per sviluppatori. Dopo la firma, decodifica il token per confermarne le attestazioni, converti exp e iat tra il tempo Unix e date leggibili, oppure calcola un hash SHA-256 quando ti serve la funzione di hash sottostante su cui è costruito l'HMAC di HS256. Poiché ogni segmento del JWT è codificato in Base64URL, uno strumento Base64 è utile quando ispezioni un token a mano; per un approfondimento sulla codifica, consulta la nostra guida ai fondamenti di Base64.

// 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....

Caratteristiche principali

Genera e firma JWT all'istante

Modifica il payload e guarda il token firmato aggiornarsi in tempo reale — intestazione, payload e firma calcolati al volo. Nessun pulsante Genera, nessun round-trip verso un server.

Copertura completa degli algoritmi

Firma con HS256/384/512, RS256/384/512, PS256/384/512 ed ES256/384/512 — ogni famiglia JWS comune, tutte tramite la Web Crypto API nativa del browser.

Le chiavi non lasciano mai il dispositivo

Il tuo segreto e la tua chiave privata PKCS8 sono usati interamente nel browser. Nulla viene caricato, registrato o memorizzato — sicuro per lo sviluppo e la risposta agli incidenti.

Aiutanti per le attestazioni rapide

Inserisci iss, sub, aud, iat, nbf o un exp di un'ora con un solo clic — niente timestamp Unix manuali, niente errori di sintassi.

Output evidenziato a colori

Il token firmato è segmentato in intestazione, payload e firma con colori distinti, così la struttura è evidente a colpo d'occhio e facile da copiare.

Zero dipendenze

Costruito solo sulla Web Crypto API e su JSON del browser — nessuna libreria esterna, nessuna telemetria, nessuna chiamata di rete di alcun tipo.

Esempi

Token di sessione 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>

Un token HMAC-SHA256 firmato con un segreto condiviso — la configurazione più comune per l'autenticazione di sessione stateless. Chiunque abbia lo stesso segreto può verificarlo.

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>

Un access token in stile OAuth firmato con RSA. Il token è firmato con la tua chiave privata e verificato da chiunque possieda la chiave pubblica corrispondente — ideale quando il verificatore non deve poter coniare token.

Token compatto ES256

{
  "sub": "device-42",
  "iat": 1715000000,
  "exp": 1999999999
}
private key: -----BEGIN PRIVATE KEY----- (P-256)
eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkZXZpY2UtNDIiLCJpYXQiOjE3MTUwMDAwMDAsImV4cCI6MTk5OTk5OTk5OX0.<ECDSA P-256 signature>

Un token ECDSA sulla curva P-256. Le firme ES256 sono molto più corte di quelle RSA pur offrendo sicurezza equivalente, il che mantiene il token piccolo per ambienti con vincoli.

Come si usa

  1. 1

    Modifica le attestazioni del payload

    Scrivi come JSON le attestazioni che il tuo token richiede nell'editor del payload. Usa i chip per le attestazioni rapide per inserire iss, sub, aud, iat, nbf o un exp di un'ora senza digitare timestamp.

  2. 2

    Scegli l'algoritmo e inserisci la chiave

    Scegli un algoritmo di firma. Per HS256/384/512 inserisci un segreto; per gli algoritmi RS, PS o ES incolla una chiave privata PEM PKCS8. Il token viene firmato localmente mentre digiti.

  3. 3

    Copia il JWT firmato

    Il token firmato appare all'istante, evidenziato a colori per segmento. Clicca Copia per inserirlo in un header Authorization, un comando curl o un test. La tua chiave non ha mai lasciato il browser.

Common Errors

Usare un segreto HMAC debole

La sicurezza di HS256 dipende interamente dall'entropia del segreto. Un segreto corto o facile da indovinare permette agli attaccanti di forzarlo a forza bruta e falsificare token. Usa almeno 256 bit di casualità.

✗ Errato
secret: "password123"  // guessable, low entropy
✓ Corretto
secret: base64(crypto.randomBytes(32))  // >=256 random bits

Omettere l'attestazione exp

Un token senza exp non scade mai. Se trapela, non c'è un punto di revoca naturale. Imposta sempre una scadenza adeguata al tipo di token.

✗ Errato
{ "sub": "user_123", "role": "admin" }  // no exp
✓ Corretto
{ "sub": "user_123", "role": "admin", "exp": 1715003600 }

Incollare una chiave PKCS1 invece di PKCS8

La Web Crypto API importa solo chiavi private PKCS8. Una chiave RSA PKCS1 tradizionale non riesce a essere importata — convertila prima.

✗ Errato
-----BEGIN RSA PRIVATE KEY-----  // PKCS1, not supported
✓ Corretto
openssl pkcs8 -topk8 -nocrypt -in pkcs1.pem -out pkcs8.pem

Casi d'uso comuni

Genera token per il test delle API
Genera un Bearer token HS256 in pochi secondi per esercitare un endpoint protetto da curl, Postman o un test di integrazione.
Riproduci token OAuth e OIDC
Costruisci un token RS256 o ES256 che rispecchi ciò che emette il tuo server di autorizzazione, così puoi fare il debug di mismatch di attestazioni e audience.
Crea fixture di test
Produci token firmati deterministici per test unitari e di integrazione senza dover avviare un server di autenticazione completo.
Debug dei fallimenti di autorizzazione
Ricrea la forma del token di un cliente — issuer, audience, scope, scadenza — per scoprire perché un backend lo rifiuta.
Convalida un verificatore
Firma token con una chiave nota per confermare che il tuo middleware di verifica accetti i token validi e rifiuti quelli manomessi.
Prototipa i flussi di autenticazione
Consegna ai colleghi token pronti all'uso mentre allestisci un nuovo login, un microservizio o una chiamata service-to-service.

Dettagli tecnici

Conforme a RFC 7519 / 7515 / 7518
Produce token JWS conformi a RFC 7519 (JWT), RFC 7515 (JWS) e RFC 7518 (JWA), con gli identificatori di algoritmo registrati nell'intestazione.
Firma nativa con Web Crypto
Firma tramite crypto.subtle per HMAC, RSASSA-PKCS1-v1_5, RSA-PSS ed ECDSA. Le firme ECDSA vengono emesse come r||s grezzo, esattamente come richiede JWS.
Base64URL, zero dipendenze
Intestazione e payload sono codificati in Base64URL con l'alfabeto URL-safe (RFC 4648), senza padding. Nessuna libreria esterna, nessuna chiamata di rete, nessuna telemetria.

Buone pratiche

Imposta sempre una scadenza
Includi un'attestazione exp così un token trapelato smette di essere valido. I tempi di vita brevi riducono il raggio d'azione — minuti per gli access token, non giorni.
Tieni i segreti fuori dal payload
Un payload JWT è leggibile da chiunque abbia il token. Metti identificatori e scope al suo interno; mai password, chiavi API o PII completi.
Firma lato server in produzione
Usa questo strumento per test e debug. Nei sistemi reali, firma i token sul server con una libreria mantenuta e una chiave presa dal tuo gestore di segreti.

Domande frequenti

Come si genera un JWT online?
Modifica il JSON del payload nella casella qui sopra, scegli un algoritmo di firma (HS256 è quello predefinito e richiede solo un segreto) e inserisci il tuo segreto o incolla una chiave privata PEM PKCS8. Il token firmato appare all'istante, con i segmenti di intestazione, payload e firma evidenziati a colori così puoi copiare il tutto con un clic. La firma gira interamente nel tuo browser tramite la Web Crypto API nativa — non c'è alcun pulsante Genera da attendere e nessuna richiesta a un server, quindi è sicuro firmare token con chiavi reali durante lo sviluppo.
Cos'è un generatore JWT?
Un generatore JWT è uno strumento che costruisce e firma crittograficamente un JSON Web Token a partire da un'intestazione e da un payload di attestazioni, producendo una stringa header.payload.signature che puoi usare come Bearer token. È l'inverso di un decodificatore JWT: invece di leggere un token esistente, ne crea uno nuovo firmato con il tuo segreto (HS256) o la tua chiave privata (RS256/ES256). Questo generatore gira interamente nel tuo browser, quindi il token viene prodotto all'istante e la tua chiave di firma non lascia mai il dispositivo.
Questo generatore JWT è gratis e sicuro da usare?
Sì — è completamente gratuito, senza registrazione, senza pubblicità e senza tracciamento. È sicuro perché tutta la firma avviene localmente nel tuo browser tramite la Web Crypto API: il payload, il segreto e la chiave privata non vengono mai caricati, registrati o memorizzati, e lo strumento non effettua alcuna richiesta di rete. Questo lo rende adatto anche quando lavori con chiavi sensibili, anche se usare chiavi di test usa e getta è sempre l'abitudine più sicura.
È sicuro inserire qui il mio segreto o la mia chiave privata?
Sì. La firma avviene localmente nel tuo browser; il tuo segreto e la tua chiave privata non vengono mai inviati a un server, mai registrati, mai memorizzati e mai usati per analisi. Non ci sono cookie né tracciamento. Questo è importante perché una chiave di firma JWT può coniare credenziali valide — incollarla in uno strumento remoto equivarrebbe a consegnare le chiavi del tuo sistema di autenticazione. Poiché tutto gira lato client, questo codificatore è sicuro da usare con chiavi di produzione, ma dovresti comunque preferire chiavi usa e getta o di test quando possibile.
Qual è la differenza tra HS256 e RS256?
HS256 (HMAC-SHA256) usa un unico segreto condiviso sia per firmare sia per verificare. È semplice e veloce, ma ogni parte in grado di verificare il token può anche crearne uno, quindi il segreto deve restare solo su server fidati. RS256 (RSA-SHA256) usa una coppia di chiavi: firmi con una chiave privata e gli altri verificano con la chiave pubblica. Questo ti permette di distribuire liberamente la chiave pubblica — ad app client, servizi partner o a un endpoint JWKS — senza dare a nessuno la possibilità di falsificare token. Usa HS256 per sistemi simmetrici a singolo proprietario; usa RS256 o ES256 quando i verificatori non devono poter coniare token.
Quali algoritmi supporta questo codificatore JWT?
Firma con HS256, HS384, HS512 (HMAC con un segreto condiviso), RS256, RS384, RS512 (RSA PKCS#1 v1.5), PS256, PS384, PS512 (RSA-PSS) ed ES256, ES384, ES512 (ECDSA su P-256, P-384 e P-521). Tutti vengono prodotti con la Web Crypto API nativa del browser, quindi non ci sono librerie di terze parti e nulla lascia la tua macchina. Gli algoritmi HMAC accettano un segreto testuale o Base64; le famiglie RSA ed ECDSA accettano una chiave privata PEM PKCS8.
Come imposto l'attestazione exp (scadenza)?
Aggiungi un'attestazione exp al payload come timestamp Unix in secondi — per esempio "exp": 1999999999. Il modo più rapido è il chip exp +1h sotto il payload, che inserisce una scadenza a un'ora da adesso. Puoi anche aggiungere iat (issued-at) e nbf (not-before) allo stesso modo. Ricorda che exp è in secondi, non millisecondi, e che i verificatori lo confrontano con il proprio orologio, quindi mantieni sincronizzati gli orari dei server per evitare rifiuti prematuri. Per convertire una data leggibile in un timestamp Unix, usa il nostro convertitore di timestamp Unix.
Come ottengo una chiave privata PEM PKCS8 per RS256 o ES256?
Per RSA: openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out private.pem. Per ECDSA P-256: openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -out ec-private.pem. Entrambi i comandi emettono un blocco PEM PKCS8 che inizia con -----BEGIN PRIVATE KEY-----, che è esattamente ciò che questo strumento si aspetta. Incolla l'intero blocco, incluse le righe di intestazione e di chiusura. La chiave pubblica corrispondente — usata per verificare il token — può essere derivata con openssl pkey -in private.pem -pubout.
Come verifico il token che ho appena generato?
Incollalo nel nostro decodificatore JWT per confermare che intestazione e payload si decodifichino come previsto. Per verificare la firma, usa il tuo server o un SDK con la chiave corretta: jwt.verify(token, secretOrPublicKey, { algorithms: ['HS256'] }) in Node.js, PyJWT.decode(token, key, algorithms=['RS256']) in Python o jwt.Parse(token, keyFunc) in Go. Non verificare mai con una lista di algoritmi vuota o con verify_signature=False in produzione — fissa sempre l'algoritmo esatto che ti aspetti.
Cosa dovrei mettere nel payload?
Mantienilo essenziale. Le attestazioni registrate dalla RFC 7519 sono iss (issuer), sub (subject — di solito un ID utente), aud (audience), exp (scadenza), nbf (not before), iat (issued at) e jti (ID token). Accanto a queste puoi aggiungere attestazioni applicative come role, scope o email. Non mettere segreti nel payload — un JWT è codificato, non cifrato, quindi chiunque abbia il token può leggere ogni attestazione. Mantieni i token sotto circa 4 KB così entrano negli header Authorization e nei cookie.
Un JWT è cifrato?
No. Un JWT firmato standard (un JWS) è codificato in Base64URL, non cifrato. La firma dimostra che il token non è stato manomesso ed è stato emesso da qualcuno in possesso della chiave, ma l'intestazione e il payload sono pienamente leggibili da chiunque abbia il token. Se hai bisogno che il payload stesso sia riservato, ti serve un JWE (JWT cifrato), che è un formato diverso. Questo strumento produce token JWS firmati, il tipo usato per la stragrande maggioranza dei flussi di autenticazione e autorizzazione.
Perché la mia firma RS256 o ES256 fallisce?
Le cause più comuni sono: (1) la chiave non è in formato PKCS8 — converti una chiave tradizionale -----BEGIN RSA PRIVATE KEY----- (PKCS1) con openssl pkcs8 -topk8 -nocrypt -in old.pem -out pkcs8.pem; (2) la curva non corrisponde all'algoritmo — ES256 richiede una chiave P-256, ES384 richiede P-384, ES512 richiede P-521; (3) hai incollato una chiave pubblica o un certificato invece della chiave privata; oppure (4) la chiave è cifrata con una passphrase, che la Web Crypto API non può importare direttamente. Decifrala prima con openssl pkey e incolla il blocco PKCS8 non cifrato.
Questo strumento supporta il token non firmato alg:none?
No, e deliberatamente. Un token alg:none non ha firma, il che significa che chiunque può falsificarne uno — è la radice di una classica vulnerabilità di bypass dell'autenticazione JWT. Poiché lo scopo stesso di un codificatore è produrre un token firmato, questo strumento offre solo algoritmi di firma reali. Se stai studiando alg:none per ricerca sulla sicurezza, puoi costruirne uno a mano codificando in Base64URL l'intestazione e il payload e lasciando vuoto il segmento della firma — il token termina comunque con un punto finale (header.payload.) — ma non dovresti mai accettare un token del genere in produzione.
Posso generare un JWT nel codice invece?
Sì. In Node.js: jsonwebtoken.sign(payload, secret, { algorithm: 'HS256', expiresIn: '1h' }). In Python: jwt.encode(payload, key, algorithm='RS256') con PyJWT. In Go: jwt.NewWithClaims(jwt.SigningMethodES256, claims).SignedString(privateKey). Questo strumento è il modo più veloce per produrre un token per un test rapido, una richiesta curl o una fixture — ma nel codice applicativo dovresti generare i token lato server con una libreria mantenuta e una chiave caricata dal tuo gestore di segreti, mai hard-coded.

Strumenti correlati

Vedi tutti gli strumenti →

Decodificatore JWT

Strumenti di sicurezza

Decodifica token JWT online con il nostro decodificatore JWT gratis. Ispeziona intestazione, payload, firma, scadenza e attestazioni. 100% browser — token mai fuori dal dispositivo. Nessuna registrazione, nessun tracciamento.

Generatore Hash MD5 e Strumento Checksum File

Strumenti di sicurezza

Genera hash MD5, SHA-256, SHA-1 e SHA-512 online gratis. Calcola l'hash di testo o file nel browser, verifica checksum e copia i risultati. Senza registrazione.

Generatore di Password Casuali — Personalizzabile e Sicuro

Strumenti di sicurezza

Genera password casuali sicure all'istante — gratis, 100% nel tuo browser. Personalizza lunghezza e caratteri, batch fino a 50 con analisi entropia.

Generatore Hash SHA-1 (Legacy 160-bit)

Strumenti di sicurezza

Genera hash SHA-1 nel browser — output hex a 40 caratteri, senza upload. Strumento legacy per impronte Git, verifica di vecchi certificati e audit di migrazione. I dati non lasciano mai il tuo dispositivo.

Generatore Hash SHA-256 e Strumento Checksum

Strumenti di sicurezza

Genera hash SHA-256 online gratis. Calcola l'hash di testo o file nel browser, verifica checksum e copia l'output hex a 64 caratteri. Senza registrazione; i dati non lasciano mai la pagina.

Generatore Hash SHA-3 (Keccak SHA3-256)

Strumenti di sicurezza

Genera hash SHA-3 online gratis. Costruzione a spugna NIST FIPS 202 — lo standard post-SHA-2. Output SHA3-256 in 64 caratteri hex. Solo browser tramite js-sha3 caricato in modo lazy; zero upload.