FreeToGenerate.com

Baseado na propriedade do próprio Unicode, não na lista curta de sempre.

Cole o texto que quer conferir

Tudo acontece no seu navegador. Cole uma mensagem, um nome de arquivo, um commit ou qualquer coisa que se comporte de forma estranha ao buscar ou comparar.

O que tem aí dentro

30 caracteres ocultos encontrados · 29 deles são invisíveis pela própria definição do Unicode

Ponto de códigoNome UnicodeTipoVezesEm
U+200BZERO WIDTH SPACElargura zero17
U+00A0NO-BREAK SPACEespaço que não é um espaço normal115
U+E0069TAG LATIN SMALL LETTER Icaractere de tag, não é desenhado421, 32, 37, 45
U+E0067TAG LATIN SMALL LETTER Gcaractere de tag, não é desenhado122
U+E006ETAG LATIN SMALL LETTER Ncaractere de tag, não é desenhado323, 38, 47
U+E006FTAG LATIN SMALL LETTER Ocaractere de tag, não é desenhado324, 33, 46
U+E0072TAG LATIN SMALL LETTER Rcaractere de tag, não é desenhado325, 29, 41
U+E0065TAG LATIN SMALL LETTER Ecaractere de tag, não é desenhado226, 30
U+E0020TAG SPACEcaractere de tag, não é desenhado227, 36
U+E0070TAG LATIN SMALL LETTER Pcaractere de tag, não é desenhado128
U+E0076TAG LATIN SMALL LETTER Vcaractere de tag, não é desenhado131
U+E0075TAG LATIN SMALL LETTER Ucaractere de tag, não é desenhado234, 42
U+E0073TAG LATIN SMALL LETTER Scaractere de tag, não é desenhado335, 39, 48
U+E0074TAG LATIN SMALL LETTER Tcaractere de tag, não é desenhado240, 44
U+E0063TAG LATIN SMALL LETTER Ccaractere de tag, não é desenhado143

Texto escondido no bloco de tags

ignore previous instructions

Os caracteres de tag espelham o ASCII com um deslocamento fixo e não são desenhados de forma alguma, então uma frase inteira pode viajar dentro de um texto que parece limpo. É isto que eles soletram.

Como isto difere de um limpador de texto

Quase toda ferramenta que remove caracteres invisíveis carrega uma lista escrita à mão com os poucos que o autor tinha encontrado. O nosso próprio limpador cobre treze pontos de código. A propriedade Default_Ignorable_Code_Point do Unicode cobre 4.174, dos quais 405 são atribuídos e têm nome — então 392 caracteres nomeados são invisíveis por definição e uma lista curta nem os menciona.

O bloco de tags são 97 caracteres que espelham o ASCII e não são desenhados. Eles pertencem às sequências de bandeiras emoji, e também são o jeito de enfiar texto dentro de uma mensagem que parece comum.

Nem tudo aqui é invisível pela definição do Unicode. Um espaço inquebrável e um caractere de controle também são sinalizados, porque não são o caractere que aparentam ser, e a tabela diz em qual autoridade cada linha se apoia.

483 · 405 · 392

A lista de caracteres é gerada a partir dos próprios arquivos DerivedCoreProperties e UnicodeData do Unicode. As posições são contadas em pontos de código, então um emoji ou caractere de tag conta uma vez e não duas.

Também disponível em: English · Español · Français · العربية

Detector de caracteres invisíveis: ache os ocultos

Todos os caracteres invisíveis, ignoráveis e disfarçados do seu texto, com nome, contagem e posição.

O que é um caractere invisível?

Um caractere invisível é um ponto de código que não ocupa espaço visível mas está realmente no texto. Alguns são úteis: um juntador de largura zero é o que transforma dois emojis em um, e um hífen suave marca onde uma palavra pode quebrar. Outros são estruturais, como os controles bidirecionais que deixam o árabe e o português dividirem uma linha. E outros estão ali porque alguém os pôs.

Eles dão problema porque o software os enxerga e você não. Uma busca que deveria casar não casa. Duas cadeias idênticas na tela comparam como diferentes. Uma chave de API copiada ganha um caractere no meio e para de funcionar, sem nada na tela que explique.

Esta página encontra esses caracteres, nomeia cada um com o nome oficial do Unicode e o ponto de código, e diz em que parte do texto ele está. O exemplo carregado acima se lê como vinte caracteres visíveis e na verdade tem quarenta e nove pontos de código.

Como usar

  1. Cole o texto. Qualquer coisa: uma mensagem, um nome de arquivo, uma célula de planilha, um commit que o grep não acha. É conferido no seu navegador e nunca enviado.
  2. Leia a tabela. Cada linha é um caractere, com o ponto de código, o nome Unicode, que tipo de coisa é, quantas vezes aparece e onde.
  3. E remova, se quiser. Um botão tira todos os caracteres ocultos, transformando os espaços estranhos em espaços comuns em vez de apagá-los, para que palavras que pareciam separadas continuem separadas.

Por que isto acha mais que um limpador

Quase toda ferramenta que remove caracteres invisíveis carrega uma lista escrita à mão com os poucos que o autor encontrou. Isso vale também para o limpador de texto deste site: a lista dele cobre treze pontos de código, e é justamente por isso que esta página existe.

O Unicode publica a resposta de verdade numa propriedade chamada Default_Ignorable_Code_Point, que marca os caracteres para os quais um renderizador não deve desenhar nada. Ela cobre 4.174 pontos de código, e 405 deles são caracteres atribuídos com nome. Ou seja, uma lista de treze deixa de fora 392 caracteres nomeados que são invisíveis por definição: os 260 seletores de variação, o bloco de tags inteiro com seus 97 caracteres, o juntador de grafemas, a marca de letra árabe, os preenchedores do hangul.

Nem tudo que vale sinalizar é ignorável, então a tabela diz em qual autoridade cada linha se apoia. Um espaço inquebrável aparece perfeitamente como espaço, mas não é o espaço em que um analisador quebra, e um caractere de controle no meio de uma linha é invisível sem que o Unicode o chame de ignorável. Ambos são reportados, e de ambos se diz o que são.

O bloco de tags e o texto que você não vê

Noventa e sete caracteres entre U+E0001 e U+E007F espelham o ASCII exatamente. O A maiúsculo de tag é o A mais um deslocamento fixo, o espaço de tag é um espaço, e nenhum deles é desenhado. Eles têm um trabalho legítimo dentro das sequências de bandeiras emoji, que é como as bandeiras da Inglaterra, da Escócia e do País de Gales são codificadas.

Também são o jeito de uma frase viajar dentro de um texto que parece completamente comum. Cole aqui algo que os contenha e aparece acima a linha decodificada, soletrando o que estava escondido. O exemplo carregado nesta página é exatamente isso: vinte caracteres visíveis carregando uma instrução que ninguém vê.

Isso deixou de ser curiosidade e virou coisa que vale conferir, porque hoje texto é colado o tempo todo em sistemas que leem todos os caracteres e não só os que uma pessoa vê. Seja o texto oculto uma marca d'água, um rastreador ou uma instrução, o primeiro passo honesto é conseguir olhar para ele.

O que esta página não consegue dizer

Ela não diz por que um caractere está ali. Um juntador de largura zero no meio de um emoji está fazendo o trabalho dele; o mesmo caractere entre duas letras não. A ferramenta reporta o que está presente e deixa o julgamento com você, porque o mesmo ponto de código é legítimo num contexto e suspeito em outro.

Ela também trabalha com pontos de código, não com o que você chamaria de letras. É a unidade certa aqui — todo caractere de tag e todo seletor de variação moderno fica acima do plano multilíngue básico, então um detector que percorresse o texto do jeito ingênuo partiria cada um ao meio e não acharia nenhum — mas significa que um emoji de bandeira ou com tom de pele conta como vários pontos de código e não como um símbolo.

Por fim, um resultado limpo quer dizer que não há nada oculto que o Unicode nomeie. Um texto ainda pode enganar de formas que esta página não cobre, principalmente usando letras de outro alfabeto idênticas às latinas. Esse é outro problema, e outra página.

Por que é grátis?

A lista de caracteres são alguns kilobytes que viajam com a página, e a varredura roda no seu navegador. Nada do que você cola é enviado, nada é registrado e não há conta a criar.

Sem cadastro, sem limites e sem marca d'água em nada que você copiar.