Cosa fa questo JWT decoder
Un token JWT (JSON Web Token, definito nell'RFC 7519) è composto da tre parti separate da punti: header, payload e firma, ognuna codificata in Base64URL. Questo decodificatore JWT online legge quelle tre sezioni e le presenta in formato leggibile, evidenziando i claims standard — iss, sub, aud, exp, iat, nbf, jti — e mostrando subito se il token è scaduto o ancora valido. Puoi incollare un access token, un bearer token o qualsiasi token JWT direttamente nel campo di testo. Lo strumento accetta sia il token nudo che il formato completo con prefisso Bearer. 100% lato client — i tuoi dati non lasciano mai il browser. Nessun upload, nessun tracciamento, nessun log sul server. Questa versione italiana è pensata per chi lavora in ambienti dove la riservatezza dei token è critica: ricorda che decodificare non equivale a verificare. La firma rimane opaca a meno che tu non disponga del secret o della chiave pubblica, e quella verifica non deve mai avvenire su uno strumento di terze parti online.
Funzionalità
- Decodifica istantanea header e payload. Separa automaticamente le tre parti del token e mostra header e payload come JSON formattato e indentato, senza bisogno di installare nulla.
- Stato di scadenza in evidenza. Legge il claim exp e confronta il timestamp con l'ora corrente: vedi subito se il token è valido o scaduto, con data e ora esatte.
- Claims standard evidenziati. Riconosce e mette in risalto iss (issuer), sub (subject), aud (audience), iat (issued at), nbf (not before) e jti (JWT ID) per un'ispezione rapida.
- Supporto algoritmi comuni. Mostra l'algoritmo dichiarato nell'header (HS256, RS256, ES256 e altri) senza tentare la verifica — che richiederebbe la chiave segreta.
- Copia con un click. Ogni sezione decodificata ha il proprio pulsante Copia per incollare header o payload direttamente in un editor o in un ticket di debug.
- Avviso di sicurezza integrato. Un banner permanente ricorda che la decodifica non sostituisce la verifica della firma, guidando chi è alle prime armi con i flussi OAuth.
Come usare il JWT decoder
Bastano pochi secondi: incolla il token, e il risultato appare immediatamente senza premere nessun tasto.
- Incolla il token. Copia il token JWT dal log, dal DevTools o dalla risposta API e incollalo nel campo di testo. Il prefisso Bearer viene rimosso automaticamente.
- Leggi header e payload. Le due sezioni appaiono come JSON formattato. Nell'header trovi alg e typ; nel payload i tuoi claims. Se vuoi fare la stessa cosa in JavaScript puoi usare
JSON.parse(atob(token.split('.')[1])), oppure da terminale:echo $token | cut -d. -f2 | base64 -d | jq . - Controlla la scadenza. Guarda il badge accanto al campo exp: verde significa che il token è ancora valido, rosso che è scaduto con timestamp preciso. Utile per debuggare errori 401 nei flussi OAuth.
- Analizza i claims personalizzati. Oltre ai claims standard, il payload mostra qualsiasi campo aggiunto dal tuo provider — ruoli, tenant, scope — pronti da ispezionare senza strumenti aggiuntivi.
Casi d'uso comuni
- Debug di errori 401 in produzione. Quando un'API restituisce 401 Unauthorized, decodificare l'access token permette di verificare in secondi se il problema è una scadenza (exp), un audience errato (aud) o un issuer non riconosciuto (iss).
- Verifica dell'integrazione con provider OAuth. Durante lo sviluppo con provider come Auth0, Keycloak o Azure AD, il decoder ti consente di controllare che i claims configurati (ruoli, scope, tenant) siano effettivamente presenti nel token emesso.
- Ispezione di bearer token nelle API REST. Nei team backend che espongono API REST, il decoder aiuta a leggere rapidamente il bearer token ricevuto e a confrontarlo con i valori attesi senza toccare il codice.
- Validazione del formato prima dei test di integrazione. Prima di caricare un token in una test suite, verificare che header e payload siano JSON validi e che i campi obbligatori (sub, iat, exp) siano presenti evita errori difficili da tracciare.
- Formazione e onboarding degli sviluppatori. Per chi si avvicina ai flussi di autenticazione JWT per la prima volta, vedere la struttura Base64URL decodificata in tempo reale accelera la comprensione del protocollo molto più di qualsiasi documentazione statica.
Domande frequenti
Questo strumento invia il mio token a un server?
No. Tutta la decodifica avviene nel tuo browser tramite JavaScript puro. Nessun dato viene trasmesso a server esterni, nessun log viene scritto. Puoi anche usarlo offline dopo aver caricato la pagina.
Qual è la differenza tra decodificare e verificare un JWT?
Decodificare significa leggere il contenuto di header e payload, che sono semplicemente codificati in Base64URL — non cifrati. Verificare significa controllare che la firma sia valida usando il secret (HMAC) o la chiave pubblica (RSA/EC). Senza verifica, non puoi fidarti dei claims per scopi di autenticazione: un attaccante potrebbe modificare il payload e ricalcolare una firma con alg=none, un vettore noto documentato nella specifica RFC 7519.
Perché vedo 'alg: none' nell'header e dovrei preoccuparmi?
L'algoritmo none indica un token non firmato. Alcune librerie vulnerabili accettano questi token come validi, bypassando completamente il controllo di autenticità. Se nel tuo sistema ricevi token con alg=none, trattali come non autenticati e rifiutali a livello di middleware.
Posso decodificare un token JWE (cifrato) con questo strumento?
No. I token JWE (JSON Web Encryption) hanno payload cifrato, non solo codificato. Per leggerli serve la chiave privata di decifratura. Questo decoder gestisce solo JWT firmati (JWS), dove il payload è Base64URL e leggibile senza chiavi. Per operazioni crittografiche nel browser puoi usare la Web Crypto API nativa.
Come faccio a decodificare un JWT in Python senza verificare la firma?
Usa la libreria PyJWT con le opzioni di verifica disabilitate: import jwt; jwt.decode(token, options={'verify_signature': False}). Utile per script di debug, ma non usare mai questa modalità in codice di produzione dove la validazione è necessaria.
La codifica Base64URL è uguale al Base64 standard?
Quasi, ma non del tutto. Base64URL sostituisce + con - e / con _ per rendere il token sicuro da usare nelle URL senza percent-encoding, come specificato nell'RFC 4648. Questo è il motivo per cui non puoi decodificare direttamente un JWT con atob() senza prima rimpiazzare quei caratteri — il decoder gestisce questo passaggio automaticamente.