Contador de caracteres do X (Twitter)
Introdução
O X conta as publicações com um sistema que quase ninguém conhece: caracteres ponderados. Os links colapsam para exatamente 23 caracteres não importando a sua extensão, os glifos chineses/japoneses/coreanos e os emoji pesam o dobro das letras inglesas, e um punhado de intervalos Unicode recebe tratamento especial. O resultado é um limite que surpreende regularmente – um rascunho que parece confortavelmente abaixo de 280 é rejeitado, e ninguém consegue ver porquê.
O Contador de caracteres do X (Twitter) da Toollect aplica as regras reais, não uma contagem ingénua de comprimento de cadeia. Cole um rascunho e seis contadores atualizam-se a cada batimento de tecla – total ponderado, contagem de hashtags, menções, URLs, quebras de linha e parágrafos – junto com listas de cada hashtag, menção e link que o parser deteta. As fronteiras de deteção foram verificadas caso a caso contra o comportamento do x.com ao vivo, incluindo os cantos estranhos.
Tudo corre localmente no seu navegador. Não há chave API, nem registo, nem pedido algum – o seu rascunho nunca sai do seu dispositivo, e os números são instantâneos porque nada espera pela rede.
Casos de uso
Gestores de redes sociais a verificar publicações agendadas
As ferramentas de agendamento frequentemente contam mal os rascunhos do X porque usam comprimento simples. Passe o texto por este contador antes de o colocar na fila – o total ponderado e a lista de URLs dizem-lhe exatamente o que o X aceitará, e o aviso de excesso aparece assim que o rascunho cruza a linha.
Escritores CJK contra o truncamento silencioso
Publicações japonesas, chinesas e coreanas cabem roughly 140 glifos no mesmo orçamento que uma publicação inglesa usa para 280. Ver o número ponderado junto ao seu rascunho torna a duplicação invisível planificável em vez de descobri-la depois de publicar.
Programadores de bots e automação
Se o seu bot compõe publicações programaticamente, este contador serve como referência de especificação – as tabelas de intervalos de peso, o custo fixo dos links e as regras de fronteira hashtag/menção documentam caso a caso o que o parser implementa.
Redatores multiplataforma
Adaptar uma mensagem entre plataformas significa respeitar limites e matemáticas diferentes. Emparelhe esta ferramenta com a sua irmã, o Analisador de Caption do Instagram, e verifique ambos os destinos sem adivinhar qual plataforma pesa o quê.
Como funciona
O contador corre quatro passos inteiramente no seu navegador, atualizando-se ao vivo a cada tecla:
- Normalizar o texto. A entrada é convertida primeiro para a forma Unicode NFC, para que um é decomposto (letra mais acento combinante) conte uma vez em vez de duas – tal como o próprio X normaliza antes de contar.
- Extrair e achatar links. Cada link que o X reconhece é retirado e substituído por um custo fixo de 23 caracteres – tanto endereços https:// e http:// como domínios sem protocolo como twitch.tv, cujo final figura nas listas oficiais de domínios de topo. A pontuação final como o ponto final da frase fica com o texto circundante, não com o link.
- Segmentar em clusters de grafemas. O texto restante é dividido com Intl.Segmenter em caracteres percecionados pelo utilizador – uma família de emoji construída a partir de sete pontos de código, uma bandeira construída a partir de dois, e um polegar com tom de pele formam cada um exatamente uma unidade.
- Ponderar cada cluster. Clusters contendo emoji pesam 2. Todo o resto soma os seus pontos de código contra os intervalos claros oficiais – 1 se dentro, 2 se fora. Hashtags e menções são extraídas separadamente do texto sem links usando as regras de fronteira do x.com documentadas abaixo.
Mudar qualquer opção volta a correr toda a cadeia instantaneamente. Não há opções a configurar nem modos à escolha – a ferramenta aplica sempre as mesmas regras do x.com ao vivo.
As regras de contagem ponderada
Esta é a tabela completa de pesos que o contador aplica, correspondente à configuração pública twitter-text sobre a qual o X se constrói.
| Caracteres | Exemplos | Peso |
|---|---|---|
| U+0000 – U+10FF | Latim, grego, cirílico, hebraico, árabe, hindi, tailandês, pontuação, dígitos | 1 |
| U+2000 – U+200D | Pontuação geral e o joiner de largura zero | 1 |
| U+2010 – U+201F | Travessões e aspas tipográficas | 1 |
| U+2032 – U+2037 | Marcas de primo | 1 |
| Todo o resto | Chinês/japonês/coreano, hangul, emoji, a maioria dos outros escritos | 2 |
Três regras especiais assentam sobre a tabela:
- Cada link custa 23. Qualquer endereço que o parser reconheça achata-se para exatamente 23 caracteres independentemente do seu comprimento real – URLs https:// e http:// mais domínios sem protocolo como twitch.tv. Uma imitação cujo final não é um domínio de topo real (foo.zzz) continua texto ordinário.
- Os clusters de emoji são atómicos. A deteção funciona por clusters de grafemas – 👨👩👧👦 conta como um cluster (peso 2), as bandeiras contam como um, e os modificadores de tom de pele fundem-se com a sua emoji base. Sem agrupamento, essa família somaria erradamente onze pontos de código.
- Os acentos colapsam antes da contagem. O texto é normalizado para NFC, assim café digitado com acento decomposto conta 4 caracteres, não 5.
Um exemplo trabalhado – o rascunho Mais sobre a missão 🚀 https://x.com/a/long/path :
| Parte | Cálculo | Custo |
|---|---|---|
Mais sobre a missão |
20 caracteres leves | 20 |
| 🚀 | um cluster de emoji | 2 |
| espaço | 1 | 1 |
https://x.com/a/long/path |
link achatado | 23 |
| Total | 46 |
Fronteiras de hashtags e menções
A deteção segue as fronteiras observadas no x.com ao vivo através de 36 casos de teste verificados – incluindo vários que contradizem suposições comuns. As tabelas listam os decisivos.
Hashtags
| Entrada | Resultado | Regra |
|---|---|---|
#Japan no início ou após espaço |
✓ | Caso padrão |
🇯🇵#Japan, !#Japan, .#Japan, ,#Japan, -#Japan |
✓ | Emoji e esta pontuação não bloqueiam o hash |
abc#Japan, 123#Japan |
✗ | Uma letra ou dígito colada logo antes cancela-a |
_#Japan |
✗ | O sublinhado também bloqueia |
&@mention, &#Japan |
✗ | O e comercial bloqueia (segurança de entidades HTML) |
@#Japan |
✓ | Uma arroba diretamente antes do hash não bloqueia |
##Japan, ##Japan, #Japan |
✓ | Hashes extra – meia ou larga largura – não bloqueiam |
#Japan#, #Japan#Japan, #Ja#pan |
✗ | Um hash colado imediatamente após a etiqueta mata-a, sem recuo parcial |
#123, #123, #🇯🇵 |
✗ | As etiquetas exigem pelo menos uma letra ou a sequência nunca se forma |
#1Direction, #日本語, #foo_bar |
✓ | Dígitos misturados com letras, etiquetas Unicode e underscores funcionam |
A família #Japan# surpreende a maioria das pessoas: o texto da etiqueta está correto, mas o X descarta todo o candidato quando outro hash fica colado diretamente ao seu fim – e o parser nunca tenta um recuo mais curto.
Menções
| Entrada | Resultado | Regra |
|---|---|---|
.@alice, ,@alice, ?@alice, :@alice, (@alice, /@alice, -@alice |
✓ | Esta pontuação permite a menção |
🇯🇵@alice |
✓ | O emoji também a permite |
!@alice |
✗ | Um ponto de exclamação bloqueia as menções – mais rigoroso que nas hashtags |
@@alice, #@alice, &@alice, abc@alice, 123@alice |
✗ | Arroba/hash/e comercial/caracteres de palavra bloqueiam todos |
@alice@bob |
✗ ambos | Handles seguidos de outra arroba imediatamente são descartados |
@alice's post |
✓ alice | O possessivo fica fora do handle |
@15chars_max_0000 (16 caracteres) |
✓ handle completo | O parser corresponde até 20 caracteres – a criação de conta para em 15, a deteção não |
@12345678901234567890123 (23 dígitos) |
✓ primeiros 20 | Além do teto o resto torna-se texto simples |
As menções são deliberadamente mais rígidas que as hashtags no lado esquerdo (! bloqueia aqui, ali não) e mais flexíveis no lado direito (@alice# mantém a sua menção onde #Japan# perde a sua etiqueta). Ambos os comportamentos foram confirmados no x.com ao vivo antes de serem codificados.
Mitos sobre o limite de caracteres
Quatro crenças sobrevivem de documentações antigas ou pura suposição. Cada uma falha contra o x.com atual.
«As respostas não contam as menções iniciais.» Verdadeiro em 2017, falso hoje. Digitar ou colar handles no início de uma resposta reduz os seus caracteres disponíveis exatamente como o corpo do texto – verificado no x.com ao vivo durante a construção desta ferramenta. Guias que repetem a isenção descrevem uma regra retirada.
«Todo texto não inglês pesa dobrado.» A duplicação começa acima de um ponto Unicode concreto. Árabe, hebraico, hindi e tailandês estão todos dentro da zona de peso um – uma publicação árabe carrega quase tanto texto quanto uma inglesa. O peso duplo pertence ao CJK, hangul, emoji e escritos para além dessa fronteira.
«Encurte os seus links antes de publicar.» Inútil desde 2010. O X substitui cada link pelo seu próprio encurtador e cobra um preço fixo de 23 – lhe dê 13 ou 300 caracteres. Encurtar antes não muda nada.
«Imagens e citações comem caracteres.» Os anexos não custam nada – até quatro fotos viajam grátis – e o texto da publicação citada não se soma à sua. Só conta o que realmente escreve.
Premium e publicações longas
Uma subscrição X Premium eleva o teto de 280 para 25.000 caracteres em todos os níveis pagos, transformando uma publicação em algo próximo de um artigo. Duas ressalvas importam mais do que o número de manchete.
Primeira, o X documenta as regras ponderadas para o limite de 280 mas nunca publicou como esse teto de 25.000 trata links, emoji ou texto CJK. Qualquer contador de terceiros que afirme paridade exata com o limite longo está a adivinhar. Esta ferramenta modela deliberadamente apenas as regras de 280 bem documentadas em vez de inventar outras inverificáveis.
Segunda, as cronologias dobram as publicações longas após cerca dos primeiros 280 caracteres atrás de um link Mostrar mais. O que quer que escreva além disso compete pela atenção sob as mesmas regras ponderadas que a publicação de qualquer outro. Para tudo o que tem de ser lido sem clique extra, 280 continua a ser o número que importa – razão pela qual este contador continua útil mesmo para contas Premium.
Uso
- Digite ou cole o seu rascunho na área de texto. Os seis contadores atualizam-se a cada batimento de tecla.
- Observe a carta Caracteres – fica vermelha assim que o total ponderado passa 280, e a mensagem acima explica o excesso.
- Leia as listas de detalhe – cada hashtag, menção e link detetado aparece abaixo, com duplicados recolhidos numa ficha marcada ×N.
- Copie o rascunho quando encaixa – o botão seleciona o texto e coloca-o na sua área de transferência, pronto para o x.com ou a sua ferramenta de agendamento.
- Limpar reinicia o texto e todas as contagens num passo.
Não há opções a configurar nem modos à escolha – a ferramenta aplica sempre as mesmas regras do x.com ao vivo.
Tutorial
Siga um rascunho realista por toda a canalização.
Passo 1 – Cole um rascunho misto.
Treinamento concluído ✅ Relatório completo https://x.com Mais detalhes em breve
Um contador genérico informa 79. A carta Caracteres mostra 90. A diferença é a aritmética invisível: o emoji de visto pesa 2 como cluster próprio (+1 sobre uma contagem simples), e o link achata-se de 13 para 23 caracteres (+10).
Passo 2 – Veja o link achatado. Substitua o endereço curto por outro muito mais longo:
Treinamento concluído ✅ Relatório completo https://defense.example.gov/news/2026/exercise-report Mais detalhes em breve
O link cresceu 40 caracteres, mas a carta Caracteres não se move de 90 – a lista URLs detetadas confirma que o novo endereço custa os mesmos 23 fixos. Um contador simples saltaria para 119; é por isso que encurtar links de antemão não poupa nada no X.
Passo 3 – Adicione hashtags como o x.com as interpreta. Junte #Japão #Treinamento. Ambas extraem-se limpas e somam respetivamente 6 e 12 caracteres ponderados, mais os dois espaços separadores – a carta marca 110.
Passo 4 – Quebre uma hashtag de propósito. Digite #Ja#pan. Nenhum fragmento aparece na lista – um hash colado ao fim da etiqueta invalida todo o candidato. Volte à versão funcional.
Passo 5 – Cruze a linha. Duplique a abertura CJK até a carta ficar vermelha e aparecer o aviso de excesso. Apare até voltar ao verde – ver o número cair torna instintiva a aritmética de 2-por-glifo.
Passo 6 – Copie e envie. Prima Copiar, cole numa página HTML simples. Abra-a – o composer aceita o rascunho à primeira. Mesmas regras, mesmo número.
Dicas de profissional
- Orce os links a 23 cada um antes de escrever. Um link deixa 257 caracteres; três deixam 211. Reserve o orçamento primeiro e o rascunho nunca precisará de cirurgia depois.
- Trate emoji complexos como despesa de luxo. Cada cluster custa 2, e as cadeias de reação somam rápido – três confetes pesam mais do que a palavra wow.
- Carregue o gancho para a frente. As cronologias truncam à volta da dobra; o que fica para lá do meio ponderado raramente ganha cliques. Ponha a conclusão cedo.
- Mantenha as hashtags num punhado limpo. O X não impõe penalização dura de hashtags, mas etiquetas a meio de palavras nunca interpretam – deixe um espaço ou início de linha antes de cada hash.
- Cole do Word sem medo. Aspas e travessões tipográficos estão nos intervalos de pontuação de peso um, e a normalização NFC dobra acentos decompostos em um.
- Emparelhe com o Analisador de URL do X para cross-posting. Mesmo rascunho, matemática de plataforma diferente – X pondera e achata links, IG segue totais contra 2200 flexíveis com uma diretriz de cinco hashtags.
- Confie na carta vermelha mais que nos seus olhos. Se Caracteres diz excesso, a publicação excede – a aritmética ponderada vê custos que contadores simples não podem ver.
Alternativas
| Opção | Regras ponderadas | Cobertura exata das fronteiras | Estatísticas ao vivo | Privado/offline |
|---|---|---|---|---|
| Este contador | Sim – verificado no x.com ao vivo | Sim – 36 casos testados | Seis contadores + listas de itens | Sim |
| Contador do composer do x.com | Sim | Sim | Apenas total, sem detalhe | N/A (na plataforma) |
| Contadores genéricos de caracteres | Não – comprimento simples | Não | Parcial | Normalmente |
| Verificações integradas nos schedulers | Raramente – comprimento simples | Não | Varia | Não |
| Biblioteca twitter-text | Sim – implementação de referência | Sim | Construa você mesmo | Depende do anfitrião |
O contador dentro do composer do x.com é autoritativo mas oferece um único número sem diagnóstico. Os contadores genéricos são a razão pela qual os rascunhos são rejeitados – ignoram completamente a ponderação. Os schedulers herdam o mesmo defeito. A biblioteca twitter-text é a fonte da verdade se quiser incorporar o motor completo – ao custo de uma dependência. Este contador ocupa o meio-termo prático – regras de referência com zero configuração.
Contra a biblioteca twitter-text
X publica uma biblioteca de código aberto, twitter-text, que define as regras canónicas de contagem e extração – este contador implementa a mesma especificação pública em vez de chamar qualquer API.
| Capacidade | Biblioteca twitter-text | Este contador |
|---|---|---|
| Comprimento ponderado | Exato – implementação de referência | Mesmos pesos e intervalos |
| Deteção de links | Gramática exaustiva com centenas de domínios de topo válidos | Domínios sem protocolo verificados contra as mesmas listas oficiais de sufixos – os links https dispensam essa verificação |
| Agrupamento de emoji | Parsing guiado por configuração | Segmentação por grafemas com a heurística padrão dos blocos emoji |
| Fronteiras hashtag/menção | Regexes de referência | Fronteiras transcritas de testes no x.com ao vivo (36 casos) |
| Integração | Uma dependência incluída no seu build | Nenhuma – abra a página e digite |
A deteção de domínios sem protocolo partilha agora a base da biblioteca – este contador incorpora as mesmas listas oficiais de sufixos gTLD/ccTLD, por isso twitch.tv conta como link enquanto foo.zzz continua texto, exatamente como a biblioteca decide. Duas lacunas honestas permanecem – os links https:// são aceites em qualquer forma plausível sem a verificação de sufixos, e as listas incorporadas congelam na versão open source, pelo que um domínio de topo introduzido depois pode faltar. Para publicações ordinárias os números coincidem; todo o resto – pesos, agrupamento, fronteiras – segue a mesma especificação, e as tabelas de fronteiras vêm de testes na plataforma viva em vez de transcrição de biblioteca.
O contador contra o analisador de captions
A Toollect entrega duas ferramentas irmãs para as duas maiores plataformas sociais, e as suas diferenças ilustram porque um contador nunca serve para tudo:
| Pergunta | Analisador de Caption (Instagram) | Este contador (X) |
|---|---|---|
| Limite | 2.200 caracteres | 280 caracteres ponderados |
| Base de contagem | Comprimento UTF-16 | Clusters de grafemas ponderados |
| Emoji simples | 2 (unidades astrais) | 2 (regra de cluster) |
| Famílias de emoji complexas | Pesa cada unidade de código – uma família custa mais de 2 | Sempre exatamente 2 por cluster |
| Links | Texto ordinário – sem achatamento | 23 fixos cada um |
| Limites específicos da plataforma | Diretriz de cinco hashtags | As menções de resposta contam; fronteiras conforme as tabelas acima |
Nenhuma abordagem está errada – cada uma espelha a sua plataforma. O limite mais generoso do Instagram tolera uma contagem mais simples, enquanto que o apertado orçamento do X exige precisão ponderada. Uma nota honesta sobre a irmã: uma família de emoji ZWJ colada no analisador de captions conta as suas unidades de código cruas (uma família custa mais de 2), porque o Instagram nunca documentou o seu método exato e UTF-16 era a escolha pragmática. Se publicar a mesma família em ambas as plataformas, espere que o X a cobre 2 e o analisador reporte mais.
O que ele não faz
- Não modela posts longos Premium. O nível de 25.000 caracteres existe, mas o X nunca documentou como ele conta – inventar regras quebraria a garantia de precisão. Veja Premium e publicações longas acima.
- Não divide threads. Passar do limite significa aparar ou fazer thread manualmente; a ferramenta reporta, não reescreve.
- Não garante paridade bit a bit com os servidores do X. Os domínios sem protocolo são verificados contra as listas oficiais de sufixos, os links https dispensam essa verificação e as listas incorporadas congelam na versão open source – endereços patológicos poderiam teoricamente ser classificados de forma diferente. Publicações ordinárias concordam.
- Não verifica se as handles existem. @nonexistent_account_12345 continua a ser processado como menção – a validade é uma consulta da plataforma, não uma questão gramatical.
- Não verifica os limites de bio, DM nem nome. Esses campos usam tetos diferentes (160, 10.000 e 50) fora do âmbito de propósito único deste contador.
- Não estiliza o widget. Cores, tipos de letra e chrome dentro do cartão renderizado são assunto do X. Só a colocação (alinhamento, largura) e a presença (conversa, mídia) são suas.
- Não é afiliado ao X. As regras foram transcritas da documentação pública e observação ao vivo, sem qualquer endosso implícito.
Solução de problemas
| Problema | Causa | Solução |
|---|---|---|
| Meu rascunho parece abaixo de 280 mas a carta está vermelha | Custos ponderados – links a 23, CJK/emoji a 2 | Confira as listas de detalhe; substitua o link ou apare texto de peso duplo até passar |
| A lista URLs mostra um link que eu não queria publicar | Links reconhecidos contam – incluindo domínios sem protocolo como twitch.tv | Reformule para que o endereço não faça parte do rascunho, ou aceite o seu custo de 23 |
| #123 não aparece sob Hashtags | Etiquetas puramente numéricas não são hashtags no X | Adicione uma letra à etiqueta, ou descarte-a |
| Falta uma hashtag depois de um emoji | Não deveria acontecer – prefixos emoji são válidos | Confirme que nenhuma letra/dígito/sublinhado está colado imediatamente antes do hash; reporte a entrada exata se ainda falhar |
| A contagem difere ligeiramente de outro site | A maioria dos concorrentes usa comprimento simples | Este contador aplica as ponderações oficiais; confie na carta vermelha em vez de totais genéricos |
| Palavras acentuadas contam diferente noutro lugar | Outras ferramentas omitem a normalização NFC | Este contador normaliza primeiro – o seu número corresponde ao X |
| Copiar não fez nada | Permissão da área de transferência negada pelo navegador | Conceda acesso à área de transferência ou selecione manualmente e copie com Ctrl/Cmd+C |
Privacidade e tratamento de dados
Esta ferramenta é honesta quanto ao seu tráfego – membro da família de zero pedidos do site, a classe de privacidade mais rigorosa que a Toollect entrega.
- Nada sai do seu dispositivo. Rascunhos, hashtags, menções e contagens existem apenas na aba do seu navegador. Nenhum servidor Toollect, nenhum endpoint de terceiros, nenhuma analítica toca o texto que escreve.
- Sem conta, sem armazenamento, sem cookies de rastreio. Feche a aba e todo o rasto desaparece – não há histórico para limpar porque nenhum foi escrito.
- O contador funciona offline. Uma vez carregada a página pode cortar a ligação e continuar a contar.
- O uso da área de transferência é explícito. O texto chega à área de transferência apenas quando prime Copiar – nunca automaticamente.
Se precisar da mesma filosofia de privacidade aplicada à análise de links, o Analisador de URL do X (Twitter) deste site executa todo o seu trabalho com zero pedidos de rede também.
Especificações técnicas
Detalhes:
- Limite – 280 caracteres ponderados; cada link achata-se para 23; todas as outras unidades pesam 1 ou 2 conforme a tabela de intervalos
- Intervalos leves – U+0000–U+10FF, U+2000–U+200D, U+2010–U+201F, U+2032–U+2037 (peso 1); todos os outros pontos de código pesam 2
- Normalização – entrada convertida para Unicode NFC antes da contagem
- Segmentação – Intl.Segmenter em modo grafema; clusters contendo marcadores emoji (VS16, ZWJ, keycap, U+1F000+, U+2600–27BF) pesam 2 atomicamente; fallback para iteração por pontos de código onde o Segmenter não está disponível
- Gramática de links – um endereço https:// ou http:// (fronteira inicial no início/espaço/parêntese aberto) ou um domínio sem protocolo cujo TLD figura nas listas oficiais gTLD/ccTLD; um domínio colado logo após hífen/sublinhado/ponto/barra não é parseado; pontuação final excluída do link e contada como texto
- Gramática de hashtags – #/# mais pelo menos uma letra dentro de [\p{L}\p{N}_]+; o caractere anterior não deve ser letra, dígito, sublinhado ou e comercial; o caractere seguinte não deve ser símbolo de hash; símbolos de largura inteira aceites
- Gramática de menções – @/@ mais 1–20 caracteres de [A-Za-z0-9_]; o caractere anterior não deve ser caractere de palavra, exclamação, arroba, hash nem e comercial (equivalentes de largura inteira incluídos); uma arroba seguinte descarta o candidato
- Estatísticas – total ponderado, contagens de hashtags/menções/URLs/quebras de linha/quebras de parágrafo, além de tallies deduplicadas com distintivos ×N
- Tráfego de rede – zero; todo o cálculo é JavaScript local
- Suporte de navegadores – todos os navegadores modernos (Clipboard API; runtime ES5 exigido pela própria contagem ponderada)
Recursos
- Conta segundo as regras ponderadas reais do X – as URLs custam exatamente 23 caracteres, CJK e emoji pesam 2, verificado contra o x.com ao vivo
- Deteção de hashtags e menções precisa nas fronteiras – 36 casos limite testados no x.com real, desde prefixos emoji até hashes duplicados e fragmentos colados
- Seis estatísticas em direto enquanto escreve – caracteres, hashtags, menções, URLs, quebras de linha e quebras de parágrafo
- Correto em Unicode por conceção – famílias de emoji contam como um só cluster, acentos decompostos são normalizados antes da contagem, árabe pesa 1
- Reflete o X de hoje, não o folclore de 2017 – as menções iniciais em respostas contam, exatamente como a plataforma se comporta agora
- Grátis, privado e instantâneo – tudo corre no seu navegador sem pedidos, sem chave API, sem registo