My Dev Tools
Texto

Contador de caracteres e palavras

Cole o texto: caracteres com e sem espaço, palavras, linhas, parágrafos e tempo de leitura, e quanto cabe no X, Instagram, SMS e YouTube, pela regra de cada um.Roda no seu navegador: nada é enviado

Selecione um trecho para contar só ele.

Aguardando texto.

Como usar

  1. Digite ou cole o texto no painel Entrada, use o botão Colar, abra ou solte um arquivo de texto (.txt, .md ou .csv) ou toque em Exemplo. A contagem acompanha enquanto você digita.
  2. Em Contagens, veja caracteres com e sem espaço, palavras, linhas, parágrafos, tempo de leitura e em voz alta, e as 4 unidades que o código usa: grafemas, pontos de código, unidades UTF-16 e bytes UTF-8.
  3. Em Limites, veja quanto cabe no X, Bluesky, Threads, Instagram, LinkedIn, TikTok e YouTube, cada um pela regra dele, quantos SMS a mensagem ocupa e um limite seu, contado na unidade que você escolher.
  4. Selecione um trecho para contar só ele. O status, embaixo da Entrada, avisa quando há caractere invisível, espaço especial, acento separado ou quebra de linha do Windows, que mudam a contagem sem aparecer na tela.
  5. Copie as contagens ou os limites como texto no rodapé do Resultado. A vista, o limite e a unidade ficam salvos neste navegador; o texto, não.

Exemplos

Emoji e bandeira em cada unidade

texto
Olá 👍🏽 🇧🇷
contagens
7 caracteres na tela · 9 pontos de código · 13 unidades UTF-16 · 22 bytes

Post com link no X

post · 63 caracteres na tela
Veja a nova versão: https://exemplo.com.br/novidades/versao-2 🚀
limite do X
peso no X: 46 de 280 (o link vale 23 e o emoji 2)

Um acento muda o SMS

SMS
Seu código de acesso é 123456
codificação
1 SMS em UCS-2 (até 70 caracteres) por causa do “ó”; sem acento, GSM-7 (até 160)

Qual caractere? Grafema, ponto de código, UTF-16 e byte

“Caractere” tem pelo menos quatro sentidos, e cada programa usa um. O que aparece na tela é o grafema: “Olá 👍🏽 🇧🇷” tem 7 caracteres na tela, 9 pontos de código, 13 unidades UTF-16 e 22 bytes. A família 👨‍👩‍👧‍👦 é 1 grafema feito de 7 pontos de código (4 pessoas unidas por 3 junções invisíveis), 11 unidades UTF-16 e 25 bytes.

Cada linguagem conta uma dessas unidades. Pontos de código: Python len, PHP mb_strlen, Java codePointCount, Go utf8.RuneCountInString e o char_length do PostgreSQL, que é o que limita um VARCHAR(n). Unidades UTF-16: o .length do JavaScript, o length() do Java e o maxlength do HTML. Bytes UTF-8: Go len, PHP strlen, Ruby bytesize e o octet_length do PostgreSQL. Grafemas, só com função própria: grapheme_strlen no PHP e grapheme_clusters no Ruby.

No Exemplo desta página são 226 caracteres na tela, mas o Python len dá 227, o .length do JavaScript 230 e o wc -c 242. Um campo HTML com maxlength="3" que recebe “👍🏽ab” guarda só o 👍: o corte cai no meio do tom de pele, que ocupa 2 unidades UTF-16, e o navegador não parte o par.

A mesma letra pode vir de dois jeitos. Em NFC, “é” é 1 ponto de código (2 bytes); em NFD, comum em nomes de arquivo vindos do macOS, é um “e” seguido do acento combinante: 2 pontos de código e 3 bytes, mas o mesmo 1 caractere na tela. O status avisa quando o texto tem acento separado.

Como cada rede conta

O X conta pelo peso, não por caractere. Cada ponto de código nas faixas 0–4351, 8192–8205, 8208–8223 e 8242–8247 vale 1 (letras com acento, grego, cirílico, hebraico, árabe, travessão e aspas curvas); o resto vale 2, como chinês, japonês e as reticências “…”. Emoji vale 2 mesmo quando é feito de vários pontos de código (👍🏽, 🇧🇷 ou a família), e todo link vale 23, com ou sem http, por mais longo que seja. O texto é normalizado em NFC antes, então acento separado não pesa a mais. Diferenças conhecidas: o X reconhece link sem http em qualquer domínio, e aqui só nos mais comuns (.com, .br, .io, .dev e outros), então “README.md” vale 23 no X e 9 aqui; parêntese ou travessão no caminho do link pode mudar o peso em 1 ou 2.

Bluesky: 300 caracteres como aparecem e, pela API, 3.000 bytes. Threads: 500, e a Meta não diz como conta emoji. Instagram: 2.200 na legenda, com até 30 hashtags e 20 menções. LinkedIn: 3.000 no post. YouTube: 100 caracteres no título e 5.000 bytes na descrição (acento vale 2 bytes e emoji 4 ou mais), e nenhum dos dois aceita < nem >. TikTok: 2.200 unidades UTF-16 na legenda pela API de publicação; o app não publica um limite oficial, então não usamos outro número.

O Google não fixa limite para o título nem para a meta description: o trecho é cortado pela largura da tela. Os 60 caracteres do título e os 160 da descrição são só sugestão. Limites conferidos em 18/10/2026 na documentação oficial de cada serviço.

SMS: GSM-7 ou UCS-2

Um SMS sem acento usa o alfabeto GSM-7: 160 caracteres numa mensagem, ou 153 por parte quando ela é dividida (o resto vai para o cabeçalho que junta as partes). Os caracteres da extensão da tabela, como € { } [ ] ~ ^ \ e |, valem 2. Basta um caractere fora da tabela para a mensagem inteira passar para UCS-2: 70 por mensagem, ou 67 por parte, e cada emoji vale 2.

A tabela GSM 03.38 tem é, à, ü e ñ, mas não tem ã, õ, á, ó nem ú. O ç é um caso à parte: a posição 0x09 da norma é Ç, mas a tabela de conversão do Unicode a lê como ç. Como cada operadora pode seguir uma, contamos o caso mais caro: ç e Ç levam o SMS para UCS-2.

Ao dividir, nenhum caractere é partido: o de 2 unidades vai inteiro para a parte seguinte. Por isso 152 letras, um € e mais 152 letras somam 306 unidades e saem em 3 SMS, não em 2.

Palavras, linhas, parágrafos e tempo de leitura

Palavra é um trecho entre espaços com pelo menos uma letra ou um número: “guarda-chuva”, “d'água”, “e-mail” e “R$” valem 1 cada, e “—”, “...” e “👍” sozinhos não contam. Em chinês e japonês, que não usam espaço, cada caractere Han, Hiragana ou Katakana conta como uma palavra: “日本語のテキスト” são 8.

Linhas são as quebras de linha mais 1; uma quebra no fim do texto não abre linha nova, e a quebra do Windows (CRLF) vale 1. Parágrafos são blocos de linhas separados por linha em branco, mesmo que ela tenha espaços. No Exemplo, o contador acha 34 palavras e 5 linhas; o wc -w dá 36, porque conta os 2 emoji soltos como palavras, e o wc -l dá 4, porque conta só os caracteres de quebra e o Exemplo não termina em quebra.

Os tempos usam as médias de Brysbaert (2019): 238 palavras por minuto em leitura silenciosa e 183 em voz alta, medidas em inglês, com adultos lendo não ficção. O estudo não tem número para o português; o espanhol, o idioma mais próximo da tabela, fica em 278 por minuto na leitura silenciosa. Por isso 238 e 183 servem como referência geral, não como medida do português.

Perguntas frequentes

Espaço e quebra de linha contam como caractere?
Sim. Caracteres conta tudo o que ocupa lugar no texto, inclusive espaço, tab e quebra de linha; a quebra do Windows (CRLF) vale 1 caractere na tela, mas 2 bytes. Sem espaços tira espaço, tab e quebra de linha, e também os espaços especiais, como o espaço sem quebra (U+00A0) que vem de páginas web e planilhas.
Quantos caracteres conta um emoji?
Depende de quem conta. O 👍🏽 (polegar com tom de pele) aparece como 1 caractere na tela, vale 2 no X, tem 2 pontos de código (o polegar e o tom de pele), 4 unidades UTF-16 no .length do JavaScript e 8 bytes em UTF-8. Emoji compostos somam ainda mais: a família 👨‍👩‍👧‍👦 tem 25 bytes.
Quantos caracteres cabem no X, Instagram, LinkedIn, YouTube, TikTok, Threads e Bluesky?
X: 280, pelo peso do X. Instagram: 2.200 na legenda. LinkedIn: 3.000 no post. YouTube: 100 no título e 5.000 bytes na descrição. TikTok: 2.200 unidades UTF-16 na legenda, pela API. Threads: 500. Bluesky: 300 caracteres e 3.000 bytes. A vista Limites mostra quanto falta em cada um, contado pela regra de cada rede.
Por que meu SMS com acento saiu em duas mensagens?
Sem acento, o SMS usa o alfabeto GSM-7: 160 caracteres numa mensagem, ou 153 por parte. Um único caractere fora dele (como ã, õ, ó ou ç) ou um emoji faz a mensagem inteira passar para UCS-2, que cabe 70 caracteres, ou 67 por parte. Por isso um texto de 100 caracteres com um “ã” sai em 2 SMS. A vista Limites mostra a codificação e quais caracteres forçaram o UCS-2.
Por que o número é diferente do Word, do Excel, do wc e do .length?
Cada um conta uma unidade. Word e Excel têm regra própria, e um emoji ou um acento separado pode valer mais de 1 neles. No Excel, a contagem com espaços é =NÚM.CARACT(A1) e sem espaços =NÚM.CARACT(SUBSTITUIR(A1;" ";"")), que só tira o espaço comum, não o tab nem a quebra de linha. O wc -m conta pontos de código (227 no Exemplo), o wc -c conta bytes (242) e o wc -w separa só por espaço, então conta emoji solto como palavra (36 contra 34 aqui). O .length do JavaScript conta unidades UTF-16 (230), e o maxlength do HTML também.
Quanto tempo leva para ler um texto?
Em média, 238 palavras por minuto em leitura silenciosa e 183 em voz alta (Brysbaert, 2019). Um texto de 1.000 palavras leva cerca de 4 min 12 s para ler e 5 min 28 s em voz alta. Texto técnico e leitura com atenção demoram mais: use o número como referência, não como regra.

Ferramentas relacionadas

  • Cole o texto: ele vira MAIÚSCULAS, minúsculas, Título ou Frase com as regras do português, ou camelCase, snake_case e kebab-case, um identificador por linha.

  • Cole texto ou uma URL codificada: o sentido é detectado sozinho, a função equivalente (encodeURIComponent, encodeURI…) aparece e o erro mostra onde está o % inválido.

  • Cole texto ou Base64: o sentido é detectado sozinho, acentos e emoji saem certos e o erro mostra a posição exata.

Atualizado em .