Cosa significano « encoder » e « decoder » per una URL?
Codificare una URL (« url encode », « urlencode ») trasforma ogni carattere non consentito in un indirizzo — spazio, accento, e commerciale, segno più — in una sequenza composta da un simbolo percentuale seguito dalle due cifre esadecimali del suo byte. Decodificare una URL (« url decode », « decoder url ») legge queste sequenze al contrario: i byte vengono ricostruiti e poi convertiti in caratteri secondo la codifica dichiarata, nella maggior parte dei casi UTF-8. È esattamente questa la coppia che le persone cercano quando digitano « encoder decoder url » o « percent encoding online ».
Il percent-encoding non è né compressione né cifratura: una parola accentata diventa due volte più lunga, e chiunque può leggerla a occhio. Il suo unico scopo è far passare qualsiasi byte in una URL, che di default ammette solo un sottoinsieme di ASCII. Viceversa, il Base64 serve a trasportare byte su canali interamente testuali — i due si assomigliano visivamente ma non sono intercambiabili.
Come codificare una URL in percent-encoding
Passo 1: il testo viene convertito in byte secondo il set di caratteri scelto, UTF-8 per impostazione predefinita. Passo 2: per ogni byte si verifica se il carattere corrispondente appartiene all'elenco dei caratteri ammessi per l'ambito selezionato. Passo 3: se ne fa parte viene copiato così com'è; altrimenti diventa %XX, con XX le due cifre esadecimali del byte. Passo 4: se l'opzione spazio in + è attiva, il byte 32 viene sostituito da un segno più invece di %20.
Esempio concreto: « café & été » in ambito componente produce caf%C3%A9%20%26%20%C3%A9t%C3%A9. Digita semplicemente questo testo nel codificatore: il risultato, la dimensione in input, la dimensione in output e il sovracosto appaiono prima ancora di rilasciare il tasto.
I quattro ambiti di codifica
L' ambito componente conserva solo lettere, cifre e - _ . ! ~ * ' ( ) : è quello del valore di un parametro e corrisponde a encodeURIComponent. La stringa di query conserva inoltre l'e commerciale e i segni di uguaglianza, per ricostruire una query string intera. Il segmento di percorso ammette / : @ & = + $ , ; per non rompere le barre inclinate. L'URL completo aggiunge ancora ?, #, [ e ] : quasi nulla viene fatto scappare, solo spazi e caratteri non ASCII diventano %XX.
Come decodificare una URL codificata
La decodifica scansiona la stringa da sinistra a destra: un simbolo percentuale seguito da due cifre esadecimali dà un byte, ogni altro carattere viene copiato dopo la conversione con la codifica scelta. I byte vengono poi raggruppati e trasformati in caratteri — due byte per « é », tre per « 日 », quattro per un emoji. La scheda « Decodifica » mostra ogni sequenza trovata, la sua posizione nella stringa, i suoi byte e il testo corrispondente.
Se il simbolo percentuale non è seguito da due cifre valide, l'errore è esplicito: sequenza incompleta o carattere esadecimale non valido. Il pulsante « Correggi i % » trasforma i percentuali isolati in %25, il che rende la stringa decodificabile senza perdere informazioni — l'opzione più sicura per gestire una URL parzialmente escapata.
Spazio: %20 o + — la regola dei moduli
%20 è lo spazio in percent-encoding rigoroso: funziona nel percorso, nella query, nel fragment e negli header. Il simbolo +, invece, è uno spazio solo nel formato application/x-www-form-urlencoded usato dai moduli HTML e storicamente dalle query string. Altrove resta un segno più letterale — e poiché è molto facile confonderlo, va fatto scappare in %2B appena si codifica un valore.
Nella pratica: per riempire un campo di un modulo o riprodurre il comportamento di un <form>, spunta « Spazio in + ». Per una URL di reindirizzamento, una canonical o un link condiviso, preferisci sempre %20. Il decodificatore, invece, tratta + come uno spazio per impostazione predefinita e puoi disattivare questo comportamento con un clic.
RFC 3986: unreserved, sub-delims e gen-delims
La RFC 3986 divide i caratteri ASCII in tre categorie. I caratteri non riservati — lettere, cifre, - _ . ~ — vengono sempre conservati così come sono. I sotto-delimitatori ! $ & ' ( ) * + , ; = e i delimitatori generici : / ? # [ ] @ hanno un significato strutturale: separano l'autorità, il percorso, la query e il fragment. Tutto il resto — spazio, virgolette, parentesi angolari, graffe, simbolo percentuale — va codificato.
Sono esattamente le categorie che la scheda « RFC 3986 & riferimento » mostra carattere per carattere: clicca su una tessera per vedere il suo codice esadecimale, la sua categoria e gli ambiti che lo conservano. È il riferimento più veloce per rispondere alla domanda « devo far scappare questo carattere? ».
Caratteri accentuati, emoji e UTF-8
Una URL trasporta solo byte ASCII sicuri, quindi ogni carattere oltre U+007F va codificato. In UTF-8, « é » vale C3 A9 e diventa %C3%A9, « 日 » vale tre byte e produce tre sequenze, un emoji ne occupa quattro e si declina in otto caratteri codificati. Se il risultato ti sembra lungo, non è un bug: è il prezzo della compatibilità con tutti i protocolli. Attenzione infine al set di caratteri di origine: decodificare in UTF-8 una stringa codificata in Latin-1 produce caratteri aberranti, da cui le quattro opzioni proposte nella scheda « Decodifica ».
Perché encodeURIComponent non basta sempre
encodeURIComponent codifica tutto tranne A-Z a-z 0-9 - _ . ! ~ * ' ( ), il che conviene per il valore di un parametro ma rompe una URL completa, perché fa scappare anche le barre inclinate, i due-punti e l'e commerciale. encodeURI fa l'opposto: preserva la struttura dell'URL ma lascia passare spazi e accenti, quindi fallisce su un testo grezzo. Entrambi i comportamenti sono coperti qui — e molto altro, dato che l'ambito « Stringa di query » e l'ambito « Segmento di percorso » colmano il divario tra i due.
Percent-encoding e Base64: due strumenti diversi
Il percent-encoding sostituisce byte per byte e preserva la leggibilità del testo originale, al costo di una stringa molto più lunga. Il Base64 raggruppa i byte a tre e li riscrive in un alfabeto di 64 caratteri: compatto ma totalmente illeggibile, e inutilizzabile così com'è in una URL senza la variante URL-safe. La scheda « Codifiche incrociate » presenta entrambi a colpo d'occhio, con in più i byte esadecimali, le entità HTML e la stringa JSON escapata — per scegliere la rappresentazione giusta prima di copiare qualsiasi cosa.
Errori frequenti: doppia codifica e % isolato
L'errore più comune è far scappare due volte la stessa stringa: uno spazio diventa %20, poi %2520, e il server riceve letteralmente « %20 ». Il secondo è dimenticare il simbolo percentuale stesso, che deve diventare %25 — altrimenti il decodificatore lo legge come l'inizio di una sequenza e va in errore o tronca. Infine, conservare un + non escapato in un parametro di un modulo equivale a inserire uno spazio che non avevi chiesto. Il decodificatore segnala le sequenze malformate, e il pulsante « Correggi i % » ripara il secondo caso senza perdite.
Dove si nascondono le URL codificate
Nelle query string di tracciamento UTM, nelle redirect_uri e negli stati OAuth, nelle webhook la cui URL di destinazione contiene parametri annidati, nelle URL di callback firmate, nei log del server, nei sitemap e nelle canonical, nei <a href> generati lato client, nei JWT il cui payload è in Base64URL, nei data: e negli header Location, e in ogni modulo HTML inviato via GET. Saper codificare e decodificare in un secondo evita di aprire un terminale per una sola stringa.
Prestazioni e buone pratiche
Nel browser, la codifica e la decodifica sono lineari e non costano nulla di significativo, anche su diversi megabyte: ogni carattere viene trattato una sola volta, senza ricorsioni né allocazioni per carattere. Gli unici trabocchetti sono la doppia codifica — verifica sempre il round-trip prima di salvare — e le URL di diversi kilobyte, spesso troncate dai proxy oltre i 2 000 caratteri. Documenta l'ambito usato accanto alla stringa prodotta: « componente » e « URL completo » non danno lo stesso risultato sullo stesso testo.
Consigliato per
Sviluppatori back-end e front-end (query string, reindirizzamenti, OAuth), integratori e redattori tecnici (link UTM, canonical, tracking), amministratori e DevOps (webhook, URL firmate, log), tester e pentester (fuzzing di parametri, bypass di filtri), studenti (capire UTF-8, ASCII e RFC 3986) e chiunque abbia bisogno di un codificatore decodificatore URL online veloce, completo e riservato — con in più l'codificatore decodificatore Base64 e il formattatore JSON.