Codificador e Decodificador de URL

Codifique caracteres especiais em URLs para o formato %XX ou decodifique strings percent-encoded de volta ao texto legível. Essencial para trabalhar com APIs e query strings.

Codificador / Decodificador de URL

Por que URLs não aceitam qualquer caractere

Uma URL é composta por partes com funções bem definidas: protocolo, domínio, caminho, query string e fragmento. Cada parte usa caracteres específicos como delimitadores — /, ?, &, # e outros. Quando dados do usuário contêm esses mesmos caracteres, é necessário escapá-los para que o servidor interprete a URL corretamente.

O percent-encoding, definido pela RFC 3986, resolve esse problema convertendo qualquer caractere problemático em sua representação hexadecimal precedida por %. Isso garante que um & dentro de um valor de parâmetro não seja confundido com um separador de parâmetros, e que acentos e caracteres Unicode funcionem em qualquer servidor.

Caracteres reservados e não reservados na RFC 3986

A RFC 3986 divide os caracteres de URL em duas categorias. Caracteres não reservados (letras, dígitos, -, _, ., ~) podem aparecer em URLs sem encoding. Caracteres reservados (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) têm significado especial na estrutura da URL e só devem ser usados sem encoding quando exercendo essa função estrutural. Todos os outros caracteres, incluindo os do português, devem ser percent-encoded.

Na prática, ao construir uma query string com parâmetros dinâmicos, use sempre encodeURIComponent para cada valor. Isso garante que qualquer caractere especial no valor seja corretamente escaped sem afetar a estrutura da URL ao redor.

encodeURI vs encodeURIComponent: qual usar?

encodeURI é adequado quando você tem uma URL completa e quer apenas garantir que caracteres não-ASCII sejam codificados, preservando a estrutura. encodeURIComponent é a escolha certa para codificar valores individuais — especialmente valores de parâmetros de query string — porque também codifica os delimitadores estruturais como &, = e ?.

Exemplo prático: ao montar a URL de uma busca com o termo "café com leite & bolo", o valor deve ser codificado com encodeURIComponent antes de concatenar com a URL base. O resultado seria busca=caf%C3%A9%20com%20leite%20%26%20bolo, garantindo que o servidor receba o termo exato sem ambiguidade.

Problemas comuns com URLs não codificadas

Links de compartilhamento que quebram ao ser copiados, parâmetros de campanha UTM com valores incorretos, formulários que enviam dados corrompidos para APIs externas e erros 404 misteriosos são frequentemente causados por falta de encoding adequado. Outro caso comum é ao gerar links de redirecionamento: a URL de destino precisa ser encoded para não confundir o servidor com a URL base do redirecionador.

Ferramentas de análise como Google Analytics e plataformas de anúncios são particularmente sensíveis a encoding incorreto nos parâmetros UTM. Um & não-encoded em utm_content pode fazer com que parâmetros subsequentes não sejam rastreados.

Decodificando URLs em logs e analytics

Logs de acesso de servidores web armazenam as URLs exatamente como foram recebidas, geralmente com percent-encoding. Ao analisar esses logs para entender o comportamento dos usuários, a leitura de queries como busca%3Dproduto%26categoria%3Deletr%C3%B4nicos é impraticável sem decodificação. Use esta ferramenta para converter URLs de logs em texto legível rapidamente.

Em plataformas de analytics como o Google Search Console, as URLs de pesquisa que chegam ao seu site também aparecem encoded. Decodificá-las é essencial para identificar as palavras-chave reais que os usuários estão usando para encontrar seu conteúdo.

Perguntas frequentes

O que é URL encoding?

URL encoding (também chamado de percent-encoding) é o processo de substituir caracteres que não são permitidos ou têm significado especial em URLs por uma representação segura: o sinal % seguido de dois dígitos hexadecimais que representam o byte do caractere na codificação UTF-8. Por exemplo, o espaço vira %20, o símbolo & vira %26 e a letra ã vira %C3%A3.

Qual a diferença entre encodeURI e encodeURIComponent?

encodeURI codifica uma URL completa, preservando os caracteres que fazem parte da estrutura da URL como /, ?, # e &. encodeURIComponent codifica um componente isolado — como um valor de parâmetro — e também converte esses caracteres estruturais. Use encodeURIComponent para codificar valores de query string; use encodeURI somente quando estiver codificando uma URL inteira que já tem sua estrutura formada.

Por que o espaço vira %20 e não simplesmente um +?

Existem duas convenções. O percent-encoding da RFC 3986 converte espaço em %20. O formato application/x-www-form-urlencoded (usado em formulários HTML) converte espaço em +. Ambas são válidas em contextos diferentes. APIs REST modernas geralmente esperam %20, enquanto formulários HTML tradicionais usam +. Para evitar ambiguidade em APIs, prefira sempre %20.

Quando uma URL pode quebrar sem encoding?

Uma URL quebra sem encoding quando contém caracteres com significado reservado no contexto errado. Por exemplo, um & em um valor de parâmetro seria interpretado como separador de parâmetros. Um # seria interpretado como início de fragmento. Caracteres não-ASCII como letras acentuadas podem ser mal interpretados por servidores ou bibliotecas que não suportam Unicode em URLs.

Como decodifico URLs em logs de servidor?

Logs de servidores web como Nginx e Apache registram URLs com percent-encoding. Para tornar esses logs legíveis, você pode colar a URL encoded nesta ferramenta e obter a versão decodificada. Isso é especialmente útil para depurar parâmetros de busca, rastrear campanhas de marketing e analisar erros 404 causados por URLs malformadas.

Caracteres especiais do português precisam de encoding em URLs?

Sim, tecnicamente sim. Caracteres como ã, é, ç, ü e outros fora do ASCII precisam ser codificados em URLs para máxima compatibilidade. A RFC 3987 introduziu IRIs (Internationalized Resource Identifiers) que permitem Unicode diretamente, e browsers modernos fazem a conversão automaticamente. Porém, ao construir URLs programaticamente em APIs ou scripts, sempre encode explicitamente para garantir compatibilidade universal.