Skip to content
Codifica / Decodifica URL
Tools

Codifica / Decodifica URL

Novità

Codifica o decodifica testo in percent-encoding e analizza le query string, tutto nel tuo browser.

Special characters reference
Character Encoded (%XX) Notes
space %20 Also encoded as + in HTML form query strings
& %26 Query param separator — encode in values
= %3D Key-value separator in query strings
? %3F Marks the start of a query string
# %23 Fragment identifier
/ %2F Path separator
: %3A Protocol / port separator
@ %40 Username delimiter in URLs
+ %2B Literal plus sign (+ in query string = space)
% %25 Percent itself — encode to avoid ambiguity
%E2%82%AC UTF-8 multi-byte (3 bytes)
© %C2%A9 UTF-8 multi-byte (2 bytes)
Per-language code snippets

Copy-ready snippets for JavaScript, Python, C#, PowerShell, Java and Go.

JavaScript / Node.js
// Encode a single query value (recommended)
const encoded = encodeURIComponent('hello world & co.');
// → 'hello%20world%20%26%20co.'

// Decode
const decoded = decodeURIComponent('hello%20world%20%26%20co.');
// → 'hello world & co.'

// Encode a full URL (leaves : / ? & # intact)
const safeUrl = encodeURI('https://example.com/search?q=hello world');
// → 'https://example.com/search?q=hello%20world'
Python
from urllib.parse import quote, unquote, urlencode

# Encode a single value (%20 for spaces)
encoded = quote('hello world & co.')
# → 'hello%20world%20%26%20co.'

# Decode
decoded = unquote('hello%20world%20%26%20co.')
# → 'hello world & co.'

# Encode a query dict (uses + for spaces — form encoding)
qs = urlencode({'q': 'hello world', 'page': '2'})
# → 'q=hello+world&page=2'

# quote_plus encodes spaces as + (match HTML form encoding)
plus = quote_plus('hello world')
# → 'hello+world'
C# / .NET
// Encode a single value (spaces → %20)
string encoded = Uri.EscapeDataString("hello world & co.");
// → "hello%20world%20%26%20co."

// Decode
string decoded = Uri.UnescapeDataString("hello%20world%20%26%20co.");
// → "hello world & co."

// Older System.Web API (spaces → +, form encoding):
// HttpUtility.UrlEncode("hello world") → "hello+world"
PowerShell
# .NET method — works in PS 5+ and PowerShell Core
$encoded = [Uri]::EscapeDataString('hello world & co.')
# → 'hello%20world%20%26%20co.'

$decoded = [Uri]::UnescapeDataString('hello%20world%20%26%20co.')
# → 'hello world & co.'

# Alternate via System.Web (Desktop PS only):
Add-Type -AssemblyName System.Web
$enc2 = [System.Web.HttpUtility]::UrlEncode('hello world')
# → 'hello+world'
Java
import java.net.URLEncoder;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;

// Encode (URLEncoder uses + for spaces — form encoding)
String encoded = URLEncoder.encode("hello world & co.", StandardCharsets.UTF_8);
// → "hello+world+%26+co."

// Decode
String decoded = URLDecoder.decode("hello+world+%26+co.", StandardCharsets.UTF_8);
// → "hello world & co."
Go
import "net/url"

// QueryEscape: spaces become +
encoded := url.QueryEscape("hello world & co.")
// → "hello+world+%26+co."

decoded, err := url.QueryUnescape("hello+world+%26+co.")
// → "hello world & co.", nil

// PathEscape: spaces become %20
pathSafe := url.PathEscape("hello world & co.")
// → "hello%20world%20&%20co."

Runs entirely in your browser. Nothing is uploaded.

Codificatore e decodificatore URL gratuito online

Questo codificatore e decodificatore URL converte testo in formato percent-encoded — o inverte il processo — direttamente nel tuo browser. Incolla il testo, scegli Codifica o Decodifica, seleziona le regole Componente o URI completo, e il risultato si aggiorna in tempo reale. Nulla viene caricato; ogni operazione viene eseguita interamente nel tuo browser usando le stesse funzioni JavaScript integrate che usa il tuo codice.

Il percent-encoding è inevitabile nello sviluppo web. Spazi, e commerciali, segni di uguale e caratteri non ASCII devono essere tutti codificati prima di poter esistere in sicurezza in un URL. Che tu stia costruendo una richiesta API, debugging un link di tracciamento o leggendo un log del server, questo strumento gestisce tutti i casi limite — inclusi caratteri UTF-8 multibyte, sequenze malformate e l'ambiguità dello spazio tra + e %20.

encodeURIComponent vs encodeURI — quale regola usare?

encodeURIComponent è la scelta giusta per valori di query individuali, segmenti di percorso o qualsiasi stringa che stai inserendo in un URL. Codifica quasi tutti i caratteri speciali — inclusi ?, &, =, /, # e : — in modo che il valore non possa rompere la struttura dell'URL. Esempio: 'hello world & page=2' diventa 'hello%20world%20%26%20page%3D2'.

encodeURI è progettato per codificare un URL completo senza romperlo. Lascia intatti i caratteri strutturali (: / ? # &) in modo che l'URL continui a funzionare, codificando comunque spazi e caratteri non ASCII. In caso di dubbio, preferisci le regole Componente per qualsiasi cosa inserisci come valore — è il default sicuro in quasi ogni framework web.

Spazi come %20 vs + — la distinzione della codifica dei moduli

Esistono due modi validi per codificare uno spazio in un URL. Nei percorsi URL (la parte prima di ?), RFC 3986 richiede %20. Nelle stringhe di query dei moduli HTML, il vecchio formato application/x-www-form-urlencoded codifica gli spazi come + per compattezza storica — ed è ancora ciò che i browser inviano quando si invia un modulo tramite GET.

Entrambi significano 'spazio', ma solo nel proprio contesto. Un + in un percorso URL è un segno più letterale; un + in una stringa di query è uno spazio. Un segno più letterale in un valore di query deve essere codificato come %2B altrimenti verrà letto erroneamente. Il toggle + come spazio della modalità decodifica gestisce l'input codificato nel modulo sostituendo + con uno spazio prima di eseguire decodeURIComponent.

Confronto con CyberChef e altri strumenti di codifica URL

CyberChef (di GCHQ) è potente ma progettato attorno al concetto di pipeline 'ricette' — si concatenano più operazioni. Per la pura codifica o decodifica URL, bisogna comunque cercare l'operazione, trascinarla nella ricetta e poi elaborare l'input. È eccellente per trasformazioni complesse; è più lento del necessario per una codifica/decodifica rapida.

Altri strumenti online come urldecoder.org sono semplici ma mostrano annunci, richiedono ricarichi completi della pagina ad ogni operazione e non offrono snippet di codice per singolo linguaggio. Questo strumento aggiorna il risultato istantaneamente ad ogni pressione di tasto, gestisce le regole Componente e URI completo, include una tabella di riferimento dei caratteri codificati comuni e mostra codice pronto da copiare in JavaScript, Python, C#, PowerShell, Java e Go.

Riferimento rapido caratteri speciali

I caratteri più comunemente codificati nello sviluppo web: spazio → %20 (o + nelle stringhe di query), & → %26, = → %3D, ? → %3F, # → %23, / → %2F, : → %3A, @ → %40, + → %2B, % → %25. I caratteri UTF-8 multibyte si espandono in più sequenze: € → %E2%82%AC, é → %C3%A9.

I caratteri che non vengono mai codificati sono il set non riservato: lettere A–Z e a–z, cifre 0–9 e i quattro simboli - _ . ~. Tutto il resto — incluso ogni carattere non ASCII — deve essere percent-encoded in un URL conforme agli standard.

Codifica URL in JavaScript, Python, C#, PowerShell e Java

Ogni linguaggio principale ha una funzione integrata per questo. In JavaScript / Node.js: encodeURIComponent(str) e decodeURIComponent(str) — nessun import necessario. In Python: urllib.parse.quote(str) e unquote(str); urlencode(dict) per una stringa di query completa. In C#: Uri.EscapeDataString(str) e Uri.UnescapeDataString(str) dal namespace System. In PowerShell: [Uri]::EscapeDataString(str), disponibile in PS 5+ e PowerShell Core. In Java: URLEncoder.encode(str, StandardCharsets.UTF_8).

Il pannello degli snippet per linguaggio include codice pronto da copiare in JavaScript, Python, C#, PowerShell, Java e Go così puoi aggiungere la chiamata giusta al tuo progetto immediatamente — con note sul comportamento dello spazio + vs %20 per la libreria standard di ciascun linguaggio.

100% privato — funziona anche offline

Ogni operazione di codifica e decodifica utilizza solo le funzioni integrate del tuo browser: encodeURIComponent, decodeURIComponent, encodeURI e decodeURI. Nessun testo viene mai inviato a un server, memorizzato o registrato — nemmeno i nomi di dominio negli URL che incolli. Una volta caricata la pagina, porta il dispositivo offline e continua a funzionare perfettamente. Aggiungi ai preferiti e usalo ogni volta che hai bisogno di codificare, decodificare o ispezionare un URL.

Frequently asked questions

Che cos'è la codifica URL?

La codifica URL (detta anche percent-encoding) converte i caratteri non sicuri in un URL in un segno % seguito da due cifre esadecimali. Ad esempio, uno spazio diventa %20, una e commerciale diventa %26 e un cancelletto diventa %23. Garantisce che ogni URL sia valido in qualsiasi browser, intestazione HTTP o server, indipendentemente dal set di caratteri.

Cosa significa %20 nella codifica URL?

%20 è la rappresentazione percent-encoded di un carattere spazio. Il 20 è il valore esadecimale di ASCII 32 (lo spazio). Quindi l'URL 'hello%20world' si decodifica in 'hello world'. Nelle stringhe di query dei moduli HTML a volte si vede + invece di %20 per gli spazi — entrambi significano la stessa cosa nelle stringhe di query ma non nei percorsi URL.

Qual è la differenza tra encodeURI e encodeURIComponent?

encodeURIComponent è per valori di query individuali o segmenti di percorso — codifica quasi tutto inclusi : / ? # & = affinché il valore non possa rompere la struttura dell'URL. encodeURI è per un URL completo — lascia intatti i caratteri strutturali come : / ? & # in modo che l'URL continui a funzionare. Come regola, usa sempre encodeURIComponent per i valori individuali che inserisci in un link.

Come si codifica un URL in JavaScript?

Usa encodeURIComponent() per valori individuali: encodeURIComponent('hello world & co.') restituisce 'hello%20world%20%26%20co.'. Per invertire usa decodeURIComponent(). Per un URL completo usa encodeURI() / decodeURI() — saltano i caratteri strutturali. Entrambe sono integrate in ogni browser e Node.js senza import necessari.

Perché uno spazio è a volte %20 e a volte +?

Nei percorsi URL (prima del ?) gli spazi devono essere %20 secondo RFC 3986. Nelle stringhe di query, il vecchio formato application/x-www-form-urlencoded usato dai moduli HTML codifica gli spazi come + per brevità storica. Entrambi significano 'spazio' ma solo nel proprio contesto — un + letterale in un valore di query deve essere codificato come %2B altrimenti verrà interpretato erroneamente come spazio.

È sicuro codificare/decodificare online?

Sì — questo strumento è 100% locale. Ogni operazione viene eseguita nel tuo browser usando funzioni JavaScript integrate. Il tuo testo non viene mai inviato a nessun server, memorizzato o registrato. Puoi anche andare offline dopo aver caricato la pagina e continuerà a funzionare. Questo è particolarmente importante quando si codificano chiavi API, credenziali o token.

Come si codifica un URL in Python?

Usa urllib.parse.quote() per un singolo valore: from urllib.parse import quote; quote('hello world & co.') → 'hello%20world%20%26%20co.'. Per decodificare: unquote('hello%20world%20%26%20co.'). Per un dizionario di stringa di query completo: urlencode({'q': 'hello world', 'page': '2'}) → 'q=hello+world&page=2'. quote_plus() usa + per gli spazi per corrispondere alla codifica dei moduli HTML.