Contador de caracteres e palavras
O contador de caracteres mostra, enquanto você digita ou cola, quantos caracteres o texto tem, com e sem espaços, além de palavras, linhas, parágrafos e o tempo de leitura. Emojis e letras acentuadas contam como um caractere cada, como você vê na tela. Para quem programa, ele também mostra os bytes em UTF-8 e o valor de length no JavaScript.
- Caracteres
- 0
- Sem espaços
- 0
- Palavras
- 0
- Linhas
- 0
- Parágrafos
- 0
- Tempo de leitura
- 0
Bytes em UTF-8: 0 · length no JavaScript: 0
A contagem é feita no seu navegador e o texto não é enviado a nenhum servidor.
Achou um resultado errado ou tem uma sugestão? Avise por e-mail.
Como usar
- Digite ou cole o texto na caixa.
- Acompanhe os números, que atualizam a cada tecla.
- Para limites de banco de dados ou de API, confira também os bytes em UTF-8 e o length do JavaScript, logo abaixo.
Como funciona
Cada caractere é contado como uma pessoa contaria: a letra á, o emoji 👍🏽 e a bandeira 🇧🇷 valem 1 cada, mesmo sendo formados por mais de um código por dentro. A contagem segue a segmentação de texto do Unicode, a mesma usada pelos navegadores para mover o cursor.
Palavra é todo trecho entre espaços que tem ao menos uma letra ou um número, como no Word e no Google Docs: guarda-chuva conta como uma palavra, e um travessão solto não conta. Parágrafos são os blocos separados por uma linha em branco. O tempo de leitura considera 200 palavras por minuto.
Os bytes em UTF-8 mostram quanto espaço o texto ocupa ao ser salvo ou enviado: letras sem acento ocupam 1 byte, letras acentuadas 2 e emojis 4 ou mais. Já o length do JavaScript conta unidades UTF-16, e por isso um emoji costuma valer 2 ali.
Exemplo
Texto: Ação 👍🏽
Caracteres: 6 (a, ç, ã, o, espaço e o emoji)
Bytes em UTF-8: 15
length no JavaScript: 9
Fonte: Unicode UAX #29: segmentação de texto (o que conta como um caractere)
Em código
Em código, cada função de tamanho conta uma coisa diferente: bytes, unidades internas ou caracteres visíveis. Use bytes para limites de banco e de API, e caracteres visíveis para o que o usuário vê.
// Caracteres como aparecem na tela: emoji e letra acentuada valem 1.
function contarCaracteres(texto) {
const segmentos = new Intl.Segmenter('pt-BR', { granularity: 'grapheme' }).segment(texto);
return [...segmentos].length;
}
// Bytes em UTF-8: o que conta em limites de banco de dados e de API.
function contarBytes(texto) {
return new TextEncoder().encode(texto).length;
}
// Palavras: trechos entre espaços com ao menos uma letra ou um número.
function contarPalavras(texto) {
return texto.split(/\s+/).filter((p) => /[\p{L}\p{N}]/u.test(p)).length;
}
const texto = 'Ação 👍🏽';
console.log(texto.length); // 9: unidades UTF-16, o emoji com tom de pele vale 4
console.log(contarCaracteres(texto)); // 6
console.log(contarBytes(texto)); // 15 def contar_bytes(texto: str) -> int:
"""Bytes em UTF-8: o que conta em limites de banco de dados e de API."""
return len(texto.encode("utf-8"))
def contar_palavras(texto: str) -> int:
"""Palavras: trechos entre espaços com ao menos uma letra ou um número."""
return sum(1 for p in texto.split() if any(c.isalnum() for c in p))
texto = "Ação 👍🏽"
# len conta pontos de código: o emoji com tom de pele vale 2. Para contar como a tela
# mostra, use o padrão \X do pacote regex: len(regex.findall(r"\X", texto)) dá 6.
print(len(texto)) # 7
print(contar_bytes(texto)) # 15
print(contar_palavras(texto)) # 1: o emoji sozinho não é palavra <?php
$texto = 'Ação 👍🏽';
echo strlen($texto), PHP_EOL; // 15: bytes em UTF-8
echo mb_strlen($texto), PHP_EOL; // 7: pontos de código (o emoji com tom de pele vale 2)
echo grapheme_strlen($texto), PHP_EOL; // 6: como aparece na tela (extensão intl)
// Palavras: trechos entre espaços com ao menos uma letra ou um número.
function contarPalavras(string $texto): int
{
$partes = preg_split('/\s+/u', $texto, -1, PREG_SPLIT_NO_EMPTY);
return count(preg_grep('/[\p{L}\p{N}]/u', $partes));
}
echo contarPalavras($texto), PHP_EOL; // 1: o emoji sozinho não é palavra Perguntas frequentes
Os espaços contam como caracteres?
Sim, na contagem principal. Por isso a ferramenta mostra também o total sem espaços, que não conta espaços, tabulações nem quebras de linha. Confira qual dos dois o seu formulário ou a sua plataforma usa.
Por que o meu código diz que o texto é maior?
Porque muitas linguagens contam unidades internas, e não caracteres. O length do JavaScript conta unidades UTF-16, e um emoji vale 2. Em bancos de dados e APIs, o limite pode ser em bytes, e em UTF-8 uma letra acentuada ocupa 2 bytes. Os dois números aparecem abaixo da contagem.
Quantos caracteres cabem no título e na descrição para o Google?
Não há um número fixo, porque o Google corta pela largura em pixels. Como referência, títulos de até 60 caracteres e descrições de até 155 a 160 costumam aparecer inteiros.
O texto que eu colo fica salvo em algum lugar?
Não. A contagem é feita no seu navegador, e o texto não é enviado a nenhum servidor nem fica guardado depois que você fecha a página.
Outras ferramentas que podem ajudar
- Conversor de Maiúsculas e MinúsculasConverta texto para MAIÚSCULAS, minúsculas, Título ou Frase, e nomes para camelCase, snake_case e kebab-case
- Remover EspaçosRemova espaços duplos, espaços no começo e no fim das linhas, espaços invisíveis e linhas em branco
- Remover Quebra de LinhaJunte as linhas de um texto copiado de PDF ou e-mail, trocando as quebras por espaço, por nada ou por vírgula
- Remover Acentos do TextoTire acentos e cedilha de qualquer texto: ação vira acao, pão vira pao
- Colocar em Ordem AlfabéticaColoque listas em ordem alfabética, de A a Z ou de Z a A, com acentos no lugar certo e números em ordem numérica
- Contador de Ocorrência de PalavraVeja quantas vezes cada palavra aparece em um texto, da mais usada para a menos usada, ou conte uma palavra específica