Truncar texto
Com limite 20, The quick brown fox jumps over the lazy dog vira The quick brown f..., exatamente 20 caracteres já contando os pontos. Um texto que já cabe volta sem mudanças. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Texto
- The quick brown fox jumps over the lazy dog
- Comprimento
- 20
- Entrada
- The quick brown fox jumps over the lazy dog
- Texto
- The quick brown f...
- Comprimento original
- 43
- Comprimento do resultado
- 20
Um truncador de texto encurta uma string para um comprimento máximo de exibição e adiciona reticências quando o original não cabe. Informe o texto simples e o comprimento inteiro que o resultado deve respeitar; a ferramenta devolve a string encurtada, se houve truncamento, os comprimentos original e final e uma mensagem curta. Opcionalmente, ative o modo de limite de palavra para que o corte prefira o último espaço antes do limite, em vez de dividir uma palavra no meio. Pré-visualizações, células de tabela, títulos de cartões, trechos de SEO, balões de chat e textos de notificação precisam dessa mesma regra rígida de comprimento sem abrir um editor completo nem chamar um modelo de reescrita.
O que significa truncar com reticências em comparação com reescrever ou aparar
O truncamento é uma restrição rígida de exibição: mantém-se um prefixo da string de origem e, quando a origem é maior que o comprimento permitido, a omissão é marcada com um sufixo de reticências. Isso é diferente de aparar espaços em branco, que apenas limpa as bordas, e diferente de encurtamento por IA, que reescreve o significado em menos palavras. Aqui, o comprimento máximo é o comprimento máximo de todo o resultado, incluindo as reticências quando o corte é necessário.
Se o seu texto já cabe, a ferramenta o devolve inalterado e define truncated como false, para que os chamadores possam pular recursos de interface que implicam conteúdo oculto. Comprimentos abaixo de um nunca são aceitos: uma pré-visualização de largura zero não é um contrato útil para cartões, tabelas ou notificações, e limites negativos são sempre bugs do cliente. Texto vazio com comprimento válido é permitido e devolvido como vazio, sem reticências, o que evita que pipelines que passam campos opcionais falhem só porque um título está em branco.
Casos de uso
Títulos de cartões e prévias de células de tabela
Limite nomes de produtos e linhas de listas a um orçamento fixo de caracteres com reticências visíveis, para que interfaces densas fiquem alinhadas sem estouro de layout.
Testes unitários para formatadores de exibição
Gere truncamentos rígidos e suaves conhecidos, além de rejeições de comprimento abaixo de um, para helpers de frontend e pipelines de pré-visualização de CMS.
Perguntas frequentes
O comprimento inclui as reticências?
Se o original já cabe, ele é devolvido inalterado, sem adicionar reticências.
O que acontece se o comprimento for zero ou negativo?
O comprimento deve ser um inteiro de pelo menos um; limites abaixo de um são rejeitados e nunca cobrados.
Isso é o mesmo que encurtar texto com IA?
Não. Esta capacidade é um corte determinístico de prefixo com reticências. Ela não reescreve o significado. Use uma ferramenta de encurtamento com LLM quando precisar de paráfrase comprimida em vez de um limite rígido de exibição.
A ferramenta de truncar texto é grátis?
A ferramenta no navegador é grátis e roda localmente.
Dá para não cortar uma palavra no meio?
Dá. Ative a opção de limite de palavra e o corte recua até o último espaço antes do limite, então o resultado termina numa palavra inteira. Se não houver espaço, o texto é cortado no limite.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/str/truncate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"The quick brown fox jumps over the lazy dog","length":20}'const res = await fetch("https://api.kit.forhosting.com/str/truncate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "The quick brown fox jumps over the lazy dog",
"length": 20
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/truncate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "The quick brown fox jumps over the lazy dog",
"length": 20
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/truncate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"The quick brown fox jumps over the lazy dog","length":20}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"The quick brown fox jumps over the lazy dog","length":20}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/truncate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"text": "The quick brown fox jumps over the lazy dog",
"length": 20
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.truncate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_chars | 100000 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Um comprimento menor que um é rejeitado com um erro claro de invalid_input, para que a validação de formulários e o CI nunca tratem um teto zero ou negativo como sucesso. O caminho é pura lógica determinística de strings — sem rede, sem sementes aleatórias, sem dependência de relógio — então o executor gratuito no navegador e a API pré-paga retornam o mesmo JSON a cada chamada.
O que significa truncar com reticências em comparação com reescrever ou aparar
Se não cabe, o resolvedor calcula um orçamento de conteúdo igual ao comprimento menos o tamanho das reticências, pega um prefixo até esse orçamento, opcionalmente recua até o espaço em branco anterior quando word_boundary é true, remove espaços finais do prefixo mantido para que as reticências não fiquem após uma lacuna solta e concatena as reticências.
Como chamar a API e o que a resposta contém
Envie um corpo JSON com o campo obrigatório text (aliases input, value, string, s, content e body) e o obrigatório length (aliases max_length, max, n, limit e max_len). O comprimento deve ser um inteiro de um a cem mil, inclusive; valores abaixo de um, não inteiros e limites excessivos são invalid_input. O opcional word_boundary (aliases word, soft, on_word) tem false como padrão e aceita booleano true ou false. O opcional ellipsis (aliases suffix, ending, marker) tem como padrão três pontos ASCII e pode ser qualquer string de até trinta e dois caracteres; quando o truncamento é necessário, as reticências não podem ser maiores que length, senão a requisição falha em vez de inventar um marcador cortado. O texto deve ficar dentro de cem mil caracteres para que uma única requisição não esgote a memória do Worker ou do navegador. Em caso de sucesso, a resposta ecoa input como a string original, text como a string final a exibir, length como o máximo solicitado, original_length e result_length como contagens de caracteres, truncated como booleano, word_boundary como o flag enviado (ou o padrão), ellipsis como o sufixo usado, used_word_boundary quando um corte suave foi aplicado, e message como um resumo curto em inglês. Uma validação malsucedida — falta de text ou length, um text que não é string, um length não inteiro ou menor que um, um payload grande demais ou reticências que não cabem no limite quando o corte é necessário — retorna invalid_input e nunca é cobrada. O preço é um valor fixo de US$ 0,002 por requisição bem-sucedida, com item unitário e preço unitário marginal zero.
Dicas práticas, limites e buscas relacionadas
Use esta capacidade quando a intenção de busca for truncar texto, adicionar reticências no comprimento máximo ou fazer corte suave no limite de palavra online. Reticências personalizadas, como um único caractere Unicode de reticências horizontais ou um rótulo «mais» entre colchetes, funcionam quando seu tamanho ainda cabe no orçamento. Esta landing não é um resumidor de IA, não é um contador de parágrafos ou palavras, não é um conversor para caixa de título e não é um aparador apenas das bordas das linhas. Verificações de ida e volta para testes são fáceis: forneça uma frase longa com comprimento vinte e espere truncated true e result_length no máximo vinte; ative word_boundary em uma frase de várias palavras e espere que o último caractere mantido não fique dentro de uma palavra quando havia um espaço anterior; envie comprimento zero ou um inteiro negativo e espere invalid_input mencionando comprimento abaixo de um. Prefira o corte rígido quando precisar de uma grade fixa de caracteres, como logs monoespaçados; prefira word_boundary para títulos e pré-visualizações voltados a pessoas, onde quebras no meio da palavra parecem erradas. Prefira text.shorten quando precisar de compressão que preserve o significado sob um orçamento de palavras com um modelo de linguagem; prefira str.trim_lines quando precisar apenas de limpeza de espaços por linha; prefira esta capacidade quando o produto já decidiu um comprimento máximo rígido de exibição e precisa mostrar um prefixo fiel. Tarefas malsucedidas que retornam invalid_input não consomem saldo pré-pago, o que mantém baratos a validação de formulários e os testes negativos de CI. Ao ensinar revisores, mostre a mesma frase nos modos rígido e suave para que vejam que apenas a posição do corte e o flag used_word_boundary mudam, enquanto a regra das reticências permanece a mesma.
Casos de integração
Limites de trechos de notificações e chats
Encurte mensagens push e no aplicativo aos tetos de comprimento da plataforma, evitando opcionalmente cortes no meio da palavra no modo word_boundary.
Perguntas técnicas
O que o word_boundary faz?
Quando true, o corte prefere o último espaço em branco antes do orçamento de conteúdo, para que as palavras não sejam divididas no meio. Se não houver espaço adequado, ele recorre a um corte rígido de caracteres.