Ferramentas para quem programa

São as tarefas pequenas que atravessam uma tarde: um JWT que precisa ser lido, um payload que precisa virar texto legível, uma string que tem que sobreviver a uma query. Cada ferramenta daqui faz a conta na própria página em que você está — e é disso que se trata, porque o que uma pessoa cola num formulário desses costuma ser exatamente o que nunca deveria ter saído da máquina dela.

19 ferramentas

  • Formatar JSONAlguém recebeu um paredão de JSON em uma linha só — resposta de API, campo de log, bloco de configuração — e precisa enxergar a estrutura antes de fazer qualquer coisa com ela.
  • Decodificar Base64Alguém está com uma string que parece embaralhada e precisa saber o que ela diz — um JWT, o valor de um secret do Kubernetes, uma linha de log — sem entregar isso a um desconhecido.
  • Converter timestamp UnixAlguém vê um número de dez ou treze dígitos num log, numa coluna de banco de dados ou num payload JSON e precisa saber que momento ele designa, e em qual fuso.
  • Validar JSONAlguma coisa está recusando o JSON de alguém sem dizer por quê, e essa pessoa precisa da linha e da coluna do primeiro ponto em que o parser trava.
  • Codificar em Base64Alguém precisa colocar uma string onde ela não é aceita como está: uma data URI, um cabeçalho de Basic Auth, um campo JSON que tem que sobreviver a um transporte com opinião própria sobre quais bytes valem.
  • Gerar hash SHA-256Alguém precisa do SHA-256 de um texto — um valor de integridade, uma impressão digital para comparar, um identificador determinístico — e quer a resposta atual e não quebrada.
  • Codificar URLAlguém está montando uma URL na mão — um parâmetro com espaço ou e comercial, um destino de redirecionamento que precisa sobreviver como valor dentro de outro endereço — e precisa saber quais caracteres têm que ser escapados e quais não.
  • Gerador de UUIDAlguém precisa de um ou de vários identificadores agora — para uma massa de teste, uma migração, um arquivo de configuração — e não quer abrir um terminal para isso.
  • Gerar hash MD5Alguém precisa do MD5 de um texto — para comparar com um valor gravado no banco, para reproduzir uma chave de cache, ou para uma integração antiga que ainda pede isso.
  • Decodificar URLAlguém está lendo uma URL tirada de um log, de uma exportação de estatística ou de uma mensagem de erro, e a parte interessante está enterrada debaixo de sequências de porcentagem.
  • Codificar entidades HTMLAlguém está colocando numa página um texto que não escreveu — um comentário, uma descrição de produto, um exemplo de marcação — e precisa que os caracteres que virariam tag continuem sendo caracteres.
  • Decodificar entidades HTMLAlguém está com um texto em que, no lugar dos caracteres, aparecem as formas escapadas deles — de um campo de banco, de um feed RSS, da exportação de um scraper — e quer ler o que está escrito de verdade.
  • Minificar JSONAlguém quer deixar um JSON formatado em uma linha só, porque ele tem que caber numa variável de configuração, num campo de banco de dados ou passar por um canal em que cada byte conta.
  • Gerar hash SHA-1Alguém tem que gerar um SHA-1 porque outra coisa exige — um objeto do Git, um esquema de assinatura antigo, uma integração anterior a 2017 — e não porque escolheu.
  • Analisar URLAlguém tem um endereço longo pela frente e precisa ver as partes separadas — host, porta, caminho, query, fragmento — em vez de contar de cabeça.
  • Codificar em hexadecimalAlguém precisa ver os bytes que estão por trás de um texto — para um protocolo, para comparar um dump, para um campo que espera hexadecimal — e com os separadores que a ferramenta dela lê.
  • Decodificar hexadecimalAlguém tem um dump hexadecimal de um log, de uma captura de rede ou de uma mensagem de erro e quer saber que texto está ali atrás.
  • Analisar query stringAlguém tem um query string cheio de parâmetros de rastreamento e quer uma linha por parâmetro, com os valores decodificados e sem que as chaves repetidas sumam.
  • Validar UUIDAlguém está com um identificador na mão e precisa saber se é um UUID bem formado, e qual versão e qual variante ele declara.

Por que rodar local não é questão de gosto aqui

O que as pessoas colam num decodificador de Base64, por ordem de frequência: um JWT, um cabeçalho de Basic Auth, o payload de um webhook, um arquivo de configuração. Três em cada quatro são credenciais ou contêm credenciais. Um site que decodifique isso num servidor já viu tudo, e tem tudo no log de requisições, independentemente de qualquer intenção.

A objeção não é teórica. É por isso que esse gênero inteiro de site está bloqueado no proxy de muita empresa, e por isso que, onde não está, existe uma política que ninguém lê. Tudo o que há nesta página é aritmética que o navegador sabe fazer sozinho; mandar essa conta para outro lugar é uma decisão, e é a errada.

O que fica no navegador, e o que não fica

A página é HTML estático servido por uma CDN. Na primeira tecla um módulo pequeno de JavaScript é carregado, uma vez e depois do cache, e o trabalho acontece na sua aba. Nenhuma requisição leva o que você escreveu, e isso se confere no painel de rede em vez de se acreditar.

Dois limites honestos. A página em si é uma requisição, então o fato de você ter estado aqui é visível para nós e para a sua rede. E o site tem publicidade e, se você aceitar, estatística: nenhuma das duas enxerga o conteúdo de um campo de texto, mas ambas são requisições a terceiros. A diferença é entre o que você digita e o fato de você estar aqui — o primeiro nunca se move, o segundo necessariamente sim.

O que isso quer dizer diante da LGPD

Se o dado não sai do aparelho, não há compartilhamento conosco e, portanto, não somos operador do que você cola. Esse é o ponto que decide na prática quando o campo contém um cadastro de cliente, uma mensagem de suporte ou um payload com dados pessoais dentro, e é a razão pela qual estas ferramentas podem ser usadas onde uma versão com servidor não poderia.

O que de fato acontece está na página de privacidade e não é maquiado aqui: a visita, as requisições de publicidade e de estatística, o consentimento. Uma ferramenta calcular localmente não deixa o site inteiro neutro — só tira dele a parte que pesa mais.

Uma pergunta por página, em vez de uma página com menu

Uma página única que resolvesse Base64, URL e HTML nos dois sentidos atrás de um seletor seria menos páginas e seria pior. Codificar e decodificar falham de jeitos diferentes, se explicam diferente e são procurados diferente: quem está com uma sequência de porcentagem quebrada na mão e quem está montando uma query não têm quase nada a dizer um ao outro.

Então cada sentido tem a sua página, com os erros que pertencem a ela: o que fazer quando o Base64 se desfaz em bytes que não são texto, por que o `encodeURIComponent` deixa passar o ponto de exclamação e o que isso faz com uma assinatura de OAuth. Daí sai uma página que vale a leitura, e ela só é possível porque não atende a seis públicos ao mesmo tempo.

Funcionam sem internet

Depois que a página de uma ferramenta carregou, tudo acontece local: funciona no ônibus, no avião e atrás de um proxy corporativo que bloqueie o domínio uma hora depois. Não há service worker instalado nem nada para configurar; uma página que nunca chama para fora simplesmente não tem o que perder quando a conexão cai.

Na prática isso quer dizer que estas ferramentas servem justamente nas situações em que uma ferramenta online seria a escolha errada: numa máquina que não é sua, numa rede em que você não confia, com dados que na verdade não deveriam se mover. É para esse caso que elas existem.

Sem cadastro, sem limite, sem marca d’água

Não há o que cadastrar porque não há o que administrar. As ferramentas não guardam nada entre duas visitas: fechar a aba apaga o que você escreveu, porque aquilo não existiu em nenhum outro lugar além daquela aba.

Também não há limite de quantidade, e não por generosidade: não pagamos nada pelo seu tempo de processamento, então não há o que racionar. O único teto é quanto texto o seu próprio navegador aguenta segurar num campo.

Por que os termos técnicos continuam em inglês

Nestas páginas está escrito payload, token, hash, query string e Base64 — não carga útil, ficha, resumo nem cadeia de consulta. Não é comodismo: é a língua em que se fala dessas coisas nos times brasileiros e em que se busca no Google.

Onde a palavra corrente é a portuguesa, ela é usada: arquivo, aba, requisição, cabeçalho, quebra de linha, acento. A regra não é «o máximo de português possível», e sim «a palavra que se diz na conversa»; qualquer outra coisa produz uma página corretamente traduzida que ninguém encontra.

O que falta aqui de propósito

Não há formatador de HTML, de CSS nem de JavaScript, e isso é uma decisão e não um buraco. Um formatador correto precisa de um parser de verdade; as bibliotecas usadas para isso pesam vários megabytes e seriam uma decisão de licença e de tempo de carregamento por si só, e uma versão caseira destrói entradas em silêncio. O formatador de JSON só é inofensivo porque esse parser já vem no navegador.

Falta também uma prévia de Markdown ou de HTML. As duas significariam renderizar marcação alheia dentro desta página, que é exatamente o que a página de decodificar entidades HTML recusa com argumento, porque um parser desses pode disparar requisição de rede. Um argumento que vale numa página não pode ser ignorado na seguinte.

Ferramentas para quem programa: perguntas frequentes

O que eu colo é enviado para um servidor?

Não. Cada ferramenta desta seção faz a conta na própria página, e o painel de rede é o jeito de conferir em vez de acreditar. A página vem de uma CDN e o site tem publicidade, então existem requisições: nenhuma delas leva o conteúdo de um campo de texto.

Existe limite de quanto texto dá para colar?

Só o que a sua própria máquina aguentar. Nada entra em fila, é contado ou limitado, porque não há servidor fazendo o trabalho que pudesse contar alguma coisa. Entradas muito grandes fazem a aba pensar um instante: esse é o único teto.

Preciso de cadastro?

Não, e também não há onde se cadastrar. As ferramentas não lembram de nada entre duas visitas: fechar a aba apaga o que você escreveu, porque aquilo não existiu em nenhum outro lugar.

Posso usar com dados da minha empresa?

Quem decide isso é a política de vocês, mas a resposta técnica é que o dado não sai do aparelho, que é justamente do que essas políticas costumam tratar. Se você precisa demonstrar em vez de afirmar, abra o painel de rede enquanto usa: não há o que mostrar.

Por que não tem um passo de download antes do resultado?

Porque não há arquivo. O resultado é texto na página, pronto para selecionar e copiar, e nada se ganharia obrigando você a apertar um botão antes. Onde uma ferramenta gera arquivo de verdade, o download fica no fim e não como barreira prévia.