Che cos'è questo strumento?
Un JWT (JSON Web Token) è una stringa compatta e "URL-safe" utilizzata per trasmettere i claim tra due parti — più comunemente come token di autenticazione dopo il login. È composto da tre parti separate da punti: un'intestazione (algoritmo e tipo di token), un payload (le informazioni effettive: ID utente, ruoli, scadenza, ecc.) e una firma (utilizzata dal server per verificare che il token non sia stato manomesso).
L'intestazione e il payload sono semplicemente JSON codificato in Base64URL — non crittografato — quindi chiunque può decodificarli e leggerli senza una chiave segreta. Solo la firma richiede una chiave segreta per essere verificata. È esattamente ciò che fa questo strumento: decodifica le parti leggibili e le mostra come JSON formattato, senza tentare di verificare la firma.
Perché usarlo?
- Intestazione e payload immediatamente leggibili, formattati in JSON: non è più necessario suddividere manualmente la stringa e decodificarla da Base64 a mano.
- Controllo automatico della scadenza: se il payload contiene un claim "exp", questo viene convertito in una data leggibile e contrassegnato come scaduto o valido.
- Copia con un solo clic, separatamente per l'intestazione o il contenuto.
- Al 100% lato client: il token viene decodificato localmente e non viene mai trasmesso, quindi è sicuro da utilizzare anche con token provenienti da un sistema di produzione.
- Non è stata eseguita né dichiarata alcuna verifica della firma: si tratta di uno strumento di debug/ispezione, non di un validatore.
Come si usa
- Incolla il tuo JWT nella casella (la stringa completa, comprese tutte e tre le parti separate da punti).
- L'intestazione e il payload vengono decodificati automaticamente man mano che si digita.
- Se il token presenta un claim "exp", controlla la riga relativa alla scadenza: lì troverai la data esatta e se il token è scaduto.
- Fai clic su "Copia" sotto una delle due caselle per copiare quella sezione in formato JSON.
Esempio
Input
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0IiwibmFtZSI6IkpvaG4gRG9lIiwiZXhwIjoxNzAwMDAwMDAwfQ.dQw4w9WgXcQRisultato
Header: {"alg": "HS256"}
Payload: {"sub": "1234", "name": "John Doe", "exp": 1700000000}La firma (terza parte) non viene mai decodificata né verificata: si tratta di un hash opaco utilizzato lato server per verificare l'autenticità.
Consigli pratici
- Risoluzione degli errori "token non valido": decodificare prima il payload per verificare il claim "exp" — un token scaduto è la causa più comune, e non sempre è evidente solo dal messaggio di errore.
- Verifica del contenuto effettivo del token di un'API di terze parti: molte API restituiscono un JWT dall'aspetto poco chiaro come token di accesso — decodificalo qui per vedere gli ambiti, l'ID utente o la scadenza che la tua integrazione sta effettivamente ricevendo.
- Non dare mai per scontato che un JWT sia crittografato: se durante lo sviluppo noti la presenza di dati sensibili (e-mail, ID interni) in un payload decodificato, è il segnale che devi trasferire tali dati sul lato server, anziché affidarti al fatto che il client non li legga.
Affermazioni comuni che si trovano in un payload
| Richiesta | Significato |
|---|---|
| sub | Oggetto — solitamente l'ID utente rappresentato dal token |
| exp | Ora di scadenza (timestamp Unix) — il token non sarà più valido dopo tale data |
| iat | Data di emissione (timestamp Unix) — al momento della creazione del token |
| iss | Emittente — quale servizio/server ha emesso il token |
| aud | Destinatari — a quale servizio è destinato il token |
| ruolo / ruoli / ambito | Claim personalizzati — autorizzazioni o ruoli concessi all'utente (non fanno parte dello standard JWT, ma sono estremamente comuni) |
Domande frequenti
Questo strumento verifica la firma del JWT?
No. Per verificare una firma è necessaria la chiave segreta o la chiave pubblica utilizzata per firmare il token, di cui dispone solo il server emittente. Questo strumento si limita a decodificare l'intestazione e il payload — le parti leggibili dall'utente — in modo da poter controllare i claim e la data di scadenza senza bisogno di alcuna chiave.
È sicuro incollare qui un JWT di produzione reale?
La decodifica avviene interamente nel browser tramite JavaScript: il token non viene mai inviato a nessun server, compreso il nostro. Detto questo, tratta i token come se fossero password: non incollarli in strumenti di cui non ti fidi ed evita di condividere screenshot di token decodificati che contengono informazioni sensibili.
Perché chiunque può leggere il payload del mio JWT senza una password?
Per come è progettato, l'intestazione e il payload di un JWT sono codificati in Base64URL, non crittografati. La codifica non garantisce la sicurezza; serve solo a rendere il JSON sicuro per la trasmissione via URL. Non inserire mai dati sensibili (password, numeri di carte di credito) direttamente nel payload di un JWT: si deve presumere che chiunque possieda il token possa leggerne il contenuto.
Cosa significa l'indicazione "exp" e perché è importante?
"exp" è il tempo di scadenza del token, espresso come timestamp Unix (secondi dal 1970). I server rifiutano un JWT una volta trascorso questo tempo, costringendo il client a effettuare nuovamente l'autenticazione. Questo strumento lo converte in una data leggibile e segnala se è già scaduto, il che è utile per risolvere i problemi del tipo "perché la mia sessione si è disconnessa?".
Il mio token mostra un errore di analisi JSON: perché?
O la stringa non è un JWT valido (dovrebbe essere composta esattamente da tre parti separate da punti), oppure è stata troncata o alterata — una causa comune è che il token sia stato accidentalmente suddiviso su più righe o che manchino dei caratteri finali durante la copia.