URL encoder e decoder
Per un singolo valore di query o un segmento di percorso. Codifica tutto tranne lettere, cifre e - _ . ! ~ * ' ( ), come encodeURIComponent.
Incolla un URL qui sopra. Le sue parti e i suoi parametri compaiono qui, pronti da modificare.
Parametri della query
Questo URL non ha parametri di query.
Parametri del frammento
Tutto avviene nel tuo browser e nulla di ciò che incolli viene caricato. Conta, perché gli URL portano spesso token e ID di sessione.
Con questo strumento puoi fare URL encode e decode online mentre scrivi: trasforma spazi, lettere accentate e simboli come & o ? in sequenze con codifica percentuale come %20, e le riporta a testo leggibile. La seconda scheda è un parser di URL. Divide qualsiasi indirizzo in protocollo, host, percorso e parametri della query, che puoi modificare, disattivare o ripulire dai tag di tracciamento, e riscrive per te l’URL codificato correttamente. Tutto avviene nel tuo browser.
Come fare URL encode e decode di un testo
- Scrivi o incolla nel campo della scheda Codifica / Decodifica. Il Risultato si aggiorna a ogni tasto.
- Scegli la Direzione. Codifica rende il testo sicuro per un URL, Decodifica riporta
caf%C3%A9%20au%20laitacafé au lait. Se incolli nel campo vuoto un testo con sequenze come%20, lo strumento passa da solo a Decodifica (Codifica invece torna indietro). Allo stesso modo, un testo semplice da codificare incollato in modalità Decodifica fa passare a Codifica, con Decodifica invece. - Quando codifichi, scegli sotto Codifica come che cosa è il testo (vedi la sezione successiva). L’opzione predefinita, Valore del parametro, va bene per un singolo valore di una query.
- Copia mette il risultato negli appunti. Scambia sposta il risultato nel campo di input e inverte la direzione. È un controllo rapido di andata e ritorno: decodificando ciò che hai appena codificato devi riavere il testo originale.
Ogni carattere modificato dallo strumento è evidenziato nel risultato. Passaci sopra con il mouse per vedere il carattere, il suo punto di codice Unicode e i suoi byte, per esempio é U+00E9 %C3%A9. Sotto i campi trovi il numero di Caratteri, di Byte UTF-8 e di Caratteri codificati (o Caratteri decodificati). Prova un esempio carica la frase Sconto del 50 % su caffè & tè, è già finito? Sì!, che ha 48 caratteri ma 53 byte UTF-8, perché ogni lettera accentata occupa due byte.
Quando codifichi, Ogni riga separata codifica ogni riga per conto suo e mantiene gli a capo, ed è comodo per un elenco di valori o di link. Senza questa opzione anche l’a capo viene codificato e diventa %0A. Se il testo è un URL con parametri, lo strumento propone Dividi in parti, che apre l’indirizzo nella scheda del parser.
Codifica di un parametro URL, di un URL completo o di dati di un modulo
Non tutti i caratteri vanno codificati in ogni punto. Una barra separa le cartelle in un percorso, ma dentro il valore di un parametro è un semplice dato, quindi il risultato giusto dipende da ciò che codifichi. Codifica come offre quattro modalità:
- Valore del parametro funziona come
encodeURIComponentdi JavaScript e va bene per un valore di query o un segmento di percorso. Codifica tutto tranne lettere, cifre e- _ . ! ~ * ' ( ), quindi un&,=,/o?dentro al valore non può rompere l’URL. Codificandocafé & crèmesi ottienecaf%C3%A9%20%26%20cr%C3%A8me, pronto da mettere dopoq=. - URL completo serve per un indirizzo intero che va solo ripulito. Codifica spazi, caratteri non ASCII, caratteri di controllo, l’apice inverso e
" < > \ ^ { | }, e mantiene tutto ciò che dà struttura a un URL:: / ? # [ ] @ ! $ & ' ( ) * + , ; =. Cosìhttps://example.com/search?q=café au lait&lang=frdiventahttps://example.com/search?q=caf%C3%A9%20au%20lait&lang=fr. Le sequenze già codificate restano come sono e un%isolato diventa%25. Qui sta la differenza daencodeURIdi JavaScript, che trasforma un%20esistente in%2520e codifica le parentesi quadre di un indirizzo IPv6 comehttp://[2001:db8::1]:8080/. - Dati del modulo segue il formato application/x-www-form-urlencoded (in inglese) prodotto dai moduli HTML e da
URLSearchParams. Uno spazio diventa+e restano non codificati solo lettere, cifre e* - . _, quindi anche! ' ( ) ~vengono codificati. - RFC 3986 rigoroso lascia non codificati solo i caratteri non riservati della RFC 3986 (in inglese): lettere, cifre e
- . _ ~. OAuth 1.0 (RFC 5849) e AWS Signature Version 4 richiedono esattamente questa forma, perché una firma coincide solo se entrambe le parti codificano!o*allo stesso modo.
Gli stessi caratteri in ogni modalità:
| Carattere | Valore del parametro | URL completo | Dati del modulo | RFC 3986 rigoroso |
|---|---|---|---|---|
| spazio | %20 | %20 | + | %20 |
& | %26 | & | %26 | %26 |
/ | %2F | / | %2F | %2F |
+ | %2B | + | %2B | %2B |
~ | ~ | ~ | %7E | ~ |
! | ! | ! | %21 | %21 |
* | * | * | * | %2A |
é | %C3%A9 | %C3%A9 | %C3%A9 | %C3%A9 |
Il testo è sempre codificato in UTF-8 e le cifre esadecimali sono sempre maiuscole. Se l’input contiene già sequenze come %20, una nota lo segnala e propone Decodifica invece, così non codifichi due volte il testo per errore.
Per passare un JSON in un parametro di query, minimizzalo nel JSON formatter e codificalo come Valore del parametro: {"id":7,"tags":["a","b"]} diventa %7B%22id%22%3A7%2C%22tags%22%3A%5B%22a%22%2C%22b%22%5D%7D. Funziona anche al contrario: decodifica qui il parametro, poi formattalo là.
Problemi di URL decode: segni più, %2520 e sequenze errate
La decodifica di solito funziona senza storie, ma quattro situazioni fanno inciampare. Lo strumento le gestisce tutte invece di fermarsi con un errore:
- Un segno più sta per uno spazio nei dati dei moduli e nella maggior parte delle query. Decodifica + come spazio è attiva per impostazione predefinita, quindi
caf%C3%A9+au+laitdiventacafé au lait. In un URL completo contano come spazi solo i segni più dopo il?, perché in un percorso il più è un carattere normale. Disattiva l’opzione quando il segno più è da intendere alla lettera. Un più codificato come%2Bresta sempre un più. - La doppia codifica avviene quando due livelli di codice codificano lo stesso valore, cosa che la RFC 3986 sconsiglia espressamente. Ogni
%diventa%25, quindi uno spazio passa da%20a%2520. Se il risultato decodificato contiene ancora sequenze come%20, lo strumento avvisa che il testo è stato probabilmente codificato due volte e propone Decodifica di nuovo. - Una sequenza non valida, cioè un
%non seguito da due cifre esadecimali come in100%o%G1, fa lanciare adecodeURIComponentdi JavaScript un URIError. Qui queste sequenze restano come sono, vengono segnate in rosso e contate, e il resto del testo viene decodificato. - I vecchi link Latin-1 risalgono a prima di UTF-8, quando alcuni siti codificavano
écome singolo byte%E9.caf%E9non è UTF-8 valido, quindidecodeURIComponentfallisce eunquotedi Python restituiscecafseguito dal carattere di sostituzione U+FFFD. Lo strumento legge quei byte come Windows-1252, decodificacaf%E9incafée aggiunge una nota che lo spiega.
I caratteri di controllo nel testo decodificato, come una tabulazione o un byte nullo, sono mostrati come simboli visibili come ␉ e ␀, ma Copia copia il testo reale.
Parser di URL: dividere un URL e modificarne i parametri
Incolla un indirizzo nel campo URL della scheda Analizza e modifica URL e viene diviso in Protocollo, Host, Porta, Percorso e Frammento, più Nome utente e Password se l’URL li contiene. I valori sono mostrati decodificati, quindi la scheda è anche il modo più rapido per decodificare i parametri di un URL: leggi caffè macinato invece di caff%C3%A8+macinato. La modifica funziona nei due sensi, come la barra degli indirizzi e la tabella dei parametri in Postman. Cambi un campo e l’URL viene riscritto subito, codificato correttamente; cambi l’URL e tutte le parti vengono rilette. Le parti che non tocchi restano esattamente come erano, carattere per carattere.
La tabella Parametri della query elenca ogni parametro con il suo Nome e il suo Valore. Togli la spunta da Includi nell’URL per escludere un parametro senza cancellarlo, utile quando cerchi quello che rompe una richiesta. Aggiungi parametro, Rimuovi parametro e Ordina dalla A alla Z fanno quello che dicono. I nomi ripetuti come tag=a&tag=b e i nomi senza valore come ?debug vengono mantenuti. Spazi nei parametri decide se gli spazi si scrivono come %20 o +; per impostazione predefinita segue l’URL che hai incollato.
I link di accesso e di pagamento portano spesso un secondo URL dentro un parametro, codificato in modo che i suoi ? e & non si mescolino con quelli esterni:
https://auth.example.com/authorize?client_id=abc&redirect_uri=https%3A%2F%2Fapp.example.com%2Fcallback%3Ftab%3D2
Un valore che è a sua volta un URL, tipicamente in redirect_uri, return, url o next, ottiene un pulsante Modifica l’URL interno. L’indirizzo interno https://app.example.com/callback?tab=2 si apre come livello a sé con le sue parti e i suoi parametri, un percorso di navigazione (URL principale › redirect_uri) riporta indietro e ogni modifica viene codificata di nuovo nell’URL esterno. Copia URL principale copia il risultato. Funziona anche su più livelli.
Quando la parte dopo # assomiglia a dei parametri, come #access_token=...&state=... nell’OAuth implicit flow o #/search?q=shoes nei percorsi delle single page application, una seconda tabella, Parametri del frammento, li elenca allo stesso modo.
Il parser segnala anche i problemi: un URL senza protocollo, che i browser trattano come link relativo; una porta fuori dall’intervallo da 0 a 65535; e caratteri che vanno codificati, come spazi, lettere accentate, " o <, che Codificali sistema in un solo passaggio. Un testo senza indirizzo, come a=1&b=2, viene letto come stringa di query. Per un nome di dominio internazionalizzato lo strumento mostra la forma Punycode usata da DNS e browser, quindi münchen.de diventa xn--mnchen-3ya.de, e un dominio che inizia con xn-- ottiene la sua forma leggibile.
Copia URL copia l’indirizzo finito, Apri lo apre in una nuova scheda (solo link http e https) e Copia come JSON ti dà i parametri come oggetto JSON, con i nomi ripetuti raccolti in un array.
Rimuovere UTM e altri parametri di tracciamento da un URL
I link di newsletter, annunci e social network portano parametri che servono solo a dire al sito da dove arriva il visitatore. I parametri UTM (in inglese) utm_source, utm_medium, utm_campaign, utm_term e utm_content risalgono a Urchin, il predecessore di Google Analytics. Gli ID dei clic come fbclid (Facebook), gclid (Google Ads) e msclkid (Microsoft Advertising) sono aggiunti dalle piattaforme stesse.
Il parser li contrassegna con un tag tracking e Rimuovi tracciamento (n) li elimina tutti in una volta. Oltre a ogni parametro utm_* ne riconosce più di 20 altri, come ttclid (TikTok), mc_cid (Mailchimp) e _hsenc (HubSpot). I parametri che servono alla pagina restano al loro posto: nel link del negozio di Prova un esempio, Rimuovi tracciamento (4) rimuove utm_source, utm_medium, utm_campaign e fbclid e mantiene q, size, return e il frammento #reviews.
Un link destinato a un codice QR conviene pulirlo prima qui. Senza parametri di tracciamento è più corto, e un link più corto dà un codice meno denso e più facile da scansionare.
Che cos’è la codifica percentuale e come i caratteri diventano %XX
La codifica percentuale, detta anche URL encoding, scrive un carattere come % seguito da due cifre esadecimali. Un URL può contenere solo un insieme limitato di caratteri ASCII, e alcuni hanno un compito: ? inizia la query, & separa i parametri, # inizia il frammento. La RFC 3986 li chiama caratteri riservati (: / ? # [ ] @ e ! $ & ' ( ) * + , ; =). Lettere, cifre e - . _ ~ sono non riservati e non vanno mai codificati. Tutto il resto, e ogni carattere riservato usato come semplice dato, viene codificato.
I caratteri fuori da ASCII vengono prima trasformati in byte UTF-8, e ogni byte riceve il suo %XX:
éè U+00E9, che UTF-8 memorizza come i due byte C3 A9, quindi diventa%C3%A9.€è U+20AC, tre byte:%E2%82%AC.- Un’emoji come U+1F600 (faccina sorridente) occupa quattro byte:
%F0%9F%98%80.
%c3%a9 e %C3%A9 significano la stessa cosa, ma la RFC 3986 raccomanda le maiuscole, che è ciò che scrive lo strumento. Una tabella della codifica percentuale dei caratteri che incontri più spesso:
| Carattere | Codificato | Carattere | Codificato |
|---|---|---|---|
| spazio | %20 | + | %2B |
! | %21 | , | %2C |
" | %22 | / | %2F |
# | %23 | : | %3A |
$ | %24 | ; | %3B |
% | %25 | = | %3D |
& | %26 | ? | %3F |
' | %27 | @ | %40 |
( | %28 | [ | %5B |
) | %29 | ] | %5D |
* | %2A | a capo | %0A |
URL encoding in JavaScript, Python e PHP
Ogni linguaggio ha le sue funzioni, e differiscono soprattutto nel trattamento di spazi, barre e ! ' ( ) * ~.
JavaScript ha encodeURIComponent (in inglese) per un valore, encodeURI per un indirizzo intero e URLSearchParams per la codifica dei moduli:
encodeURIComponent("café & crème") // "caf%C3%A9%20%26%20cr%C3%A8me"
encodeURI("https://example.com/a b?q=café") // "https://example.com/a%20b?q=caf%C3%A9"
new URLSearchParams({ q: "café & crème" }).toString() // "q=caf%C3%A9+%26+cr%C3%A8me"
decodeURIComponent("caf%C3%A9") // "café"
decodeURIComponent non trasforma + in uno spazio e lancia un URIError davanti a una sequenza non valida come 100%.
In Python le funzioni stanno in urllib.parse. quote mantiene / per impostazione predefinita (safe='/') e per il resto codifica tutto tranne i caratteri non riservati della RFC 3986. quote_plus scrive gli spazi come + e codifica anche /:
from urllib.parse import quote, quote_plus, urlencode, unquote_plus
quote("café & crème/brûlée") # 'caf%C3%A9%20%26%20cr%C3%A8me/br%C3%BBl%C3%A9e'
quote("a b/c", safe="") # 'a%20b%2Fc'
quote_plus("café & crème/brûlée") # 'caf%C3%A9+%26+cr%C3%A8me%2Fbr%C3%BBl%C3%A9e'
urlencode({"q": "café & crème", "page": 2}) # 'q=caf%C3%A9+%26+cr%C3%A8me&page=2'
unquote_plus("caf%C3%A9+au+lait") # 'café au lait'
In PHP, urlencode codifica come un modulo HTML e scrive lo spazio come +, mentre rawurlencode segue la RFC 3986 e scrive %20:
urlencode("café & crème"); // "caf%C3%A9+%26+cr%C3%A8me"
rawurlencode("café & crème"); // "caf%C3%A9%20%26%20cr%C3%A8me"
rawurlencode dà lo stesso risultato di RFC 3986 rigoroso. urlencode corrisponde a Dati del modulo tranne che per *, che codifica come %2A.
Domande frequenti
Lo spazio va codificato come %20 o come +?
%20 funziona ovunque in un URL. Un + significa spazio solo nella stringa di query e nei dati dei moduli, il formato inviato dai moduli HTML. In un percorso + è un normale segno più, quindi /a+b resta /a+b. Quando un valore di query richiede un vero segno più, scrivilo come %2B. Nello strumento, Dati del modulo scrive gli spazi come + e le altre tre modalità come %20.
Che cosa significano %20, %2F e %3D in un URL?
Sono caratteri codificati: %20 è uno spazio, %2F una barra e %3D un segno di uguale. Altri che vedi spesso sono %26 (&), %3F (?), %3A (:), %2C (virgola) e %27 (apostrofo). Le due cifre sono il codice del carattere in esadecimale. Le lettere accentate e gli altri caratteri non ASCII richiedono da due a quattro coppie di questo tipo, come %C3%A9 per é. Incolla l'intera stringa nel decodificatore per leggerla.
Qual è la differenza tra encodeURI e encodeURIComponent?
encodeURI è pensata per un indirizzo intero e lascia stare i caratteri che lo strutturano, come : / ? # & =. encodeURIComponent è pensata per una sola parte, un valore di parametro o un segmento di percorso, e codifica anche quei caratteri, quindi https://example.com/?a=1&b=2 diventa https%3A%2F%2Fexample.com%2F%3Fa%3D1%26b%3D2. In questo strumento, Valore del parametro corrisponde a encodeURIComponent, mentre URL completo è simile a encodeURI ma mantiene le sequenze esistenti come %20 invece di trasformarle in %2520.
Come si rimuovono i parametri UTM da un URL?
Incolla il link nella scheda Analizza e modifica URL e premi Rimuovi tracciamento (n). Elimina in una volta ogni tag utm_* e gli ID dei clic come fbclid e gclid. Poi premi Copia URL. Per eliminarne solo alcuni, usa Rimuovi parametro sulle righe che non vuoi.
La codifica URL è la stessa cosa della crittografia o di Base64?
No. La codifica URL non nasconde nulla: chiunque può decodificare caf%C3%A9 in café, quindi non protegge mai una password o un token. Rende solo i caratteri sicuri da usare in un indirizzo. Base64 è un'altra codifica che trasforma qualsiasi dato, anche i file binari, in una stringa di 64 caratteri. Una stringa Base64 in un URL richiede comunque di codificare +, / e =, a meno che tu non usi la variante URL safe, che l'encoder e decoder Base64 sa produrre.
Gli URL che incollo vengono caricati o salvati?
No. Codifica, decodifica e analisi avvengono nel tuo browser e nulla di ciò che incolli viene inviato a un server. Conta, perché gli URL portano spesso token di accesso, ID di sessione o codici per reimpostare la password. Il browser ricorda solo la scheda e le opzioni scelte, mai i testi. L'unica azione che carica l'indirizzo è Apri, che lo apre in una nuova scheda proprio come cliccare sul link.
Altri strumenti per chi programma sono nella categoria Sviluppatori, e gli strumenti che trasformano un formato in un altro sono raccolti in Convertitori. Per trovare le differenze tra due URL lunghi, per esempio una chiamata API che funziona e una che fallisce, incollali nello strumento per confrontare testi e confronta per caratteri.