Como analisar um data URI
- Cole o URI na caixa. Ele também pode estar dentro de código: uma regra CSS com
url("data:..."), uma tag<img src="data:...">ou uma imagem em Markdown. O primeiro URIdata:é extraído, e a linha de status avisa. - Leia o resultado: Tipo MIME, Parâmetros, Codificação (Base64 ou codificação percentual), comprimento da Parte de dados em caracteres, Tamanho decodificado e com o que O conteúdo parece.
- Abaixo, o payload aparece em prévia com o SHA-256 e um dump hex: imagens, SVG, PDF, áudio, vídeo, fontes, texto, JSON, arquivos ZIP e mais.
- Use Codificação de saída para manter o URI como está ou convertê-lo para Base64 ou para codificação de URL, escolha um Formato de saída como
url()de CSS ou uma tag HTML e copie o resultado. Baixar arquivo salva o payload.
O que o analisador aceita
O analisador segue as regras de data URL do padrão Fetch, que os navegadores implementam e que são mais tolerantes que a RFC 2397 original, então ele aceita o que um navegador aceita:
| Entrada | Resultado |
|---|---|
data:,A%20brief%20note | text/plain (implícito), charset US-ASCII, 12 bytes: A brief note |
DATA:Image/PNG ; Base64 ,iVBORw0KGgo= | image/png, Base64, 8 bytes: a assinatura PNG |
data:text/plain;charset=iso-8859-7,%e1%e2%e3 | 3 bytes, exibidos como αβγ usando o charset declarado |
data:;base64,SGk= | text/plain (implícito), 2 bytes: Hi |
data:text/plain;base64,SGVsbG8gV29ybGQ | preenchimento ausente não é problema: Hello World |
data:image/png;name=logo.png;base64,iVBOR... | parâmetro name=logo.png, usado como nome do download |
data:image/png;base64 | erro: sem vírgula, então não há parte de dados |
Quebras de linha e tabulações dentro do URI são removidas antes da análise, como fazem os navegadores, então um URI quebrado em várias linhas em uma folha de estilo continua sendo analisado. ;base64 não diferencia maiúsculas de minúsculas, valores de parâmetros entre aspas perdem as aspas, e Base64 URL-safe é aceito. Escapes percentuais são decodificados em bytes primeiro, então até um corpo Base64 escrito como %2B%2F funciona.
Tipo declarado versus conteúdo real
O tipo MIME em um data URI é só um rótulo. O analisador confere os bytes decodificados com assinaturas de arquivo conhecidas e avisa quando eles não batem:
data:image/jpeg;base64,iVBORw0KGgo...gera “Declarado image/jpeg, mas o conteúdo parece ser PNG.” Navegadores detectam o formato de imagens raster, então muitas vezes a imagem ainda aparece, mas softwares mais rígidos a rejeitam.- Um tipo que não é um tipo MIME válido, como
image pngcom espaço, gera um aviso separado.
Para corrigir um rótulo, decodifique o arquivo com Baixar arquivo e monte um URI limpo no gerador de data URI, ou cole a parte Base64 em Base64 para arquivo, que oferece a extensão e o tipo MIME corretos.
Como inspecionar links data: suspeitos
URIs data:text/html já foram usados em phishing, porque a página falsa inteira viaja dentro do link, sem servidor por trás que possa ser bloqueado. O Chrome e o Firefox hoje se recusam a navegar uma aba até eles a partir de um link, mas eles continuam aparecendo em e-mails, QR codes, documentos e mensagens de chat.
Colar um link desses aqui é um jeito seguro de ver o que ele mostraria. Um documento HTML completo é renderizado em um frame em sandbox que bloqueia scripts, formulários e recursos externos, com o código-fonte completo abaixo. Qualquer outro HTML ou script aparece só como texto. Payloads SVG são desenhados como imagens, que não executam scripts, e a marcação é listada para você procurar elementos <script> ou handlers on.... A Content Security Policy da página não deixa os scripts se conectarem a nada além do contador de visitas da Cloudflare e só carrega imagens do próprio site ou de URLs data: e blob:, então um pixel de rastreamento ou um script remoto no payload nunca é buscado.
Recodificação e conversão
Codificação de saída passa um URI para a outra codificação sem mexer no payload:
- Manter como está devolve o URI sem as quebras de linha.
- Base64 serve para dados binários e para contextos em que caracteres especiais dão problema.
- Codificado para URL é mais curto para texto ASCII simples e SVG, e fica legível no código-fonte.
Payload, Comprimento do URI e Overhead, abaixo da saída, mostram qual codificação fica mais curta para os seus dados. Especificamente para SVG, SVG para data URI também oferece uma codificação otimizada e compara as três, com gzip incluído.
Perguntas frequentes
Como extrair o arquivo de um data URI?
Cole o URI e clique em Baixar arquivo. O payload é salvo com a extensão que corresponde ao conteúdo, ou com o nome indicado em um parâmetro name= ou filename=, se o URI tiver um.
O que significa um data URI sem tipo MIME?
data:,text e data:;base64,... são válidos. O tipo passa a ser, por padrão, text/plain;charset=US-ASCII, que o analisador mostra como (implícito).
;utf8 é um charset válido em um data URI de SVG?
Não. data:image/svg+xml;utf8,... é um hábito muito difundido, mas ali utf8 é um parâmetro sem valor, não um charset. Os navegadores o ignoram. A forma correta é ;charset=utf-8, ou nada.
É seguro inspecionar um link data: de um e-mail suspeito?
Aqui, sim. O HTML é exibido em um frame em sandbox, com scripts, formulários e recursos externos bloqueados, o SVG é desenhado como imagem, e a Content Security Policy da página impede que o payload carregue qualquer coisa de outros servidores. Não abra o link em uma aba do navegador para descobrir.