Truncar texto: longitud máxima con puntos suspensivos, gratis
Con un límite de 20, The quick brown fox jumps over the lazy dog queda como The quick brown f..., justo 20 caracteres con los puntos incluidos. Un texto que ya cabe se devuelve sin cambios. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Texto
- The quick brown fox jumps over the lazy dog
- Longitud
- 20
- Entrada
- The quick brown fox jumps over the lazy dog
- Texto
- The quick brown f...
- Longitud original
- 43
- Longitud resultante
- 20
Un truncador de texto acorta una cadena hasta una longitud máxima de visualización y añade puntos suspensivos cuando el original no cabe. Introduzca el texto plano y la longitud entera que debe respetar el resultado; la herramienta devuelve la cadena acortada, si se aplicó el truncado, las longitudes original y final, y un mensaje breve. Opcionalmente active el modo de límite de palabra para que el corte prefiera el último espacio antes del límite en lugar de partir una palabra por la mitad. Las vistas previas, las celdas de tablas, los títulos de tarjetas, los fragmentos SEO, los bocadillos de chat y los textos de notificaciones necesitan esa misma regla estricta de longitud sin abrir un editor completo ni llamar a un modelo de reescritura.
Qué significa truncar con puntos suspensivos frente a reescribir o recortar
El truncado es una restricción estricta de visualización: conservar un prefijo de la cadena de origen y, cuando el origen supera la longitud permitida, marcar la omisión con un sufijo de puntos suspensivos. Es distinto de recortar espacios en blanco, que solo limpia los extremos, y distinto del acortamiento con IA, que reescribe el significado en menos palabras. Aquí la longitud máxima es la longitud máxima del resultado completo, incluidos los puntos suspensivos cuando se requiere un corte.
Si su texto ya cabe, la herramienta lo devuelve sin cambios y establece truncated en false, de modo que quien la invoca puede omitir los elementos de interfaz que implican contenido oculto. Las longitudes inferiores a uno nunca se aceptan: una vista previa de ancho cero no es un contrato útil para tarjetas, tablas o notificaciones, y los límites negativos son siempre errores del cliente.
El texto vacío con una longitud válida está permitido y se devuelve vacío sin puntos suspensivos, lo que evita que los flujos que pasan campos opcionales fallen solo porque un título está en blanco.
Qué puede hacer con ella
Títulos de tarjetas y vistas previas en celdas
Limite nombres de productos y filas de listas a un presupuesto fijo de caracteres con puntos suspensivos visibles, para que las interfaces densas se mantengan alineadas sin desbordamientos.
Preguntas frecuentes
¿La longitud incluye los puntos suspensivos?
Sí. Cuando se aplica el truncado, la cadena devuelta tiene como máximo length caracteres, incluido el sufijo de puntos suspensivos. Si el original ya cabe, se devuelve sin cambios y sin añadir puntos suspensivos.
¿Qué ocurre si la longitud es cero o negativa?
La longitud debe ser un entero de al menos uno; los límites inferiores a uno se rechazan y nunca se cobran.
¿Es lo mismo que el acortamiento de texto con IA?
No. Esta capacidad es un corte determinista de prefijo con puntos suspensivos. No reescribe el significado. Use una herramienta de acortamiento con LLM cuando necesite una paráfrasis comprimida en lugar de un límite estricto de visualización.
¿Es gratis la herramienta de truncar texto?
La herramienta del navegador es gratuita y se ejecuta en local.
¿Puedo evitar que se corte una palabra por la mitad?
Sí. Active la opción de límite de palabra y el corte retrocede hasta el último espacio antes del límite, de modo que el resultado termina en una palabra completa. Si no hay ningún espacio, se corta en el límite.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
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)Ejemplo de solicitud
{
"text": "The quick brown fox jumps over the lazy dog",
"length": 20
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.truncate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_chars | 100000 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Una longitud inferior a uno se rechaza con un claro error invalid_input, de modo que la validación de formularios y la integración continua nunca traten un tope de cero o negativo como un éxito. El proceso es lógica de cadenas puramente determinista (sin red, sin semillas aleatorias, sin dependencia del reloj), así que el ejecutor gratuito del navegador y la API de prepago devuelven el mismo JSON en cada llamada.
Qué significa truncar con puntos suspensivos frente a reescribir o recortar
Si no cabe, el resolvedor calcula un presupuesto de contenido igual a la longitud menos la longitud de los puntos suspensivos, toma un prefijo hasta ese presupuesto, retrocede opcionalmente hasta el espacio en blanco anterior cuando word_boundary es true, elimina los espacios finales del prefijo conservado para que los puntos suspensivos no queden tras un hueco suelto, y concatena los puntos suspensivos.
Cómo llamar a la API y qué contiene la respuesta
Envíe un cuerpo JSON con el campo obligatorio text (alias input, value, string, s, content y body) y el obligatorio length (alias max_length, max, n, limit y max_len). La longitud debe ser un entero entre uno y cien mil inclusive; los valores inferiores a uno, los no enteros y los límites excesivos son invalid_input. El campo opcional word_boundary (alias word, soft, on_word) vale false por defecto y acepta los booleanos true o false. El campo opcional ellipsis (alias suffix, ending, marker) vale por defecto tres puntos ASCII y puede ser cualquier cadena de hasta treinta y dos caracteres; cuando se requiere truncado, los puntos suspensivos no pueden ser más largos que length o la solicitud falla en lugar de inventar un marcador recortado. El texto debe mantenerse dentro de cien mil caracteres para que una sola solicitud no agote la memoria del Worker ni del navegador. En caso de éxito, la respuesta devuelve input como la cadena original, text como la cadena final a mostrar, length como el máximo solicitado, original_length y result_length como recuentos de caracteres, truncated como booleano, word_boundary como el indicador enviado (o el valor por defecto), ellipsis como el sufijo utilizado, used_word_boundary cuando se aplicó un corte suave, y message como un breve resumen en inglés. Una validación fallida (falta text o length, un text que no es cadena, una length no entera o inferior a uno, una carga excesiva o unos puntos suspensivos que no caben bajo el límite cuando se necesita un corte) devuelve invalid_input y nunca se cobra. El precio es una tarifa plana de $0.002 por solicitud exitosa, con unidad item y precio marginal unitario cero.
Consejos prácticos, límites y búsquedas relacionadas
Utilice esta capacidad cuando la intención de búsqueda sea truncar texto, añadir puntos suspensivos en una longitud máxima o cortar suavemente en un límite de palabra online. Unos puntos suspensivos personalizados, como un único carácter Unicode de elipsis horizontal o una etiqueta «más» entre corchetes, funcionan cuando su longitud aún cabe dentro del presupuesto. Esta página no es un resumidor con IA, ni un contador de párrafos o palabras, ni un conversor a mayúsculas de título, ni un recortador solo de bordes de línea. Las comprobaciones de ida y vuelta para pruebas son sencillas: envíe una frase larga con longitud veinte y espere truncated true y result_length de veinte como máximo; active word_boundary en una frase de varias palabras y espere que el último carácter conservado no quede dentro de una palabra cuando antes existía un espacio; envíe longitud cero o un entero negativo y espere invalid_input mencionando longitud inferior a uno. Prefiera un corte duro cuando necesite una cuadrícula fija de caracteres, como los registros monoespaciados; prefiera word_boundary para títulos y vistas previas orientados a personas, donde los cortes a mitad de palabra parecen rotos. Prefiera text.shorten cuando necesite compresión que preserve el significado bajo un presupuesto de palabras con un modelo de lenguaje; prefiera str.trim_lines cuando solo necesite limpieza de espacios por línea; prefiera esta capacidad cuando el producto ya decidió una longitud máxima estricta de visualización y debe mostrar un prefijo fiel. Las tareas fallidas que devuelven invalid_input no consumen saldo prepagado, lo que mantiene baratas la validación de formularios y las pruebas negativas de CI. Al enseñar a los revisores, muestre la misma frase en modo duro y suave para que vean que solo cambian la posición del corte y el indicador used_word_boundary, mientras la regla de los puntos suspensivos permanece igual.
Casos de integración
Límites en notificaciones y fragmentos de chat
Acorte mensajes push y dentro de la aplicación a los topes de longitud de cada plataforma, evitando opcionalmente cortes a mitad de palabra con el modo word_boundary.
Pruebas unitarias para formateadores
Genere truncados duros y suaves conocidos, además de rechazos por longitud inferior a uno, para auxiliares de frontend y flujos de vista previa de un CMS.
Preguntas técnicas
¿Qué hace word_boundary?
Cuando es true, el corte prefiere el último espacio en blanco antes del presupuesto de contenido, de modo que las palabras no se parten por la mitad. Si no existe un espacio adecuado, recurre a un corte duro por caracteres.