Truncador de texto
Trunca un texto a un límite de caracteres o palabras con un sufijo personalizable.
Cómo funciona
- Pega tu texto: introduce o pega cualquier texto en el campo: artículos, descripciones, publicaciones sociales o cualquier contenido que quieras acortar.
- Define el límite: elige el límite de caracteres o palabras adecuado para tu plataforma de destino (ej.: 160 para meta descripciones, 280 para Twitter).
- Copia el resultado: el texto truncado aparece al instante. Haz clic en Copiar para obtener la versión acortada, lista para usar.
¿Por qué usar el truncador de texto?
Cada plataforma tiene límites de longitud: Twitter, meta descripciones, campos de base de datos, notificaciones y SMS imponen límites estrictos de caracteres. El truncado manual suele cortar incómodamente a mitad de palabra o dejar puntuación colgando. Esta herramienta trunca de forma inteligente respetando los límites de palabra y te permite previsualizar exactamente cómo queda dentro del límite, lo que ahorra tiempo y evita errores de formato.
Funcionalidades
- Truncado en los límites de palabras: corta en rupturas naturales para evitar palabras parciales en la salida.
- Contador de caracteres en directo: ve en tiempo real los caracteres restantes mientras escribes o pegas.
- Límite personalizado: define cualquier límite en caracteres o en palabras para encajar con los requisitos de tu plataforma.
- Vista previa instantánea: ve el resultado truncado de inmediato, sin pulsar ningún botón.
- Copia con un clic: copia el resultado al portapapeles con un solo clic.
Preguntas frecuentes
¿Corta en mitad de una palabra?
No. El truncador corta en el límite de palabra más cercano antes del límite, para que la salida termine siempre en una palabra completa. Esto mantiene tu texto truncado legible y cuidado.
¿Puedo usarlo para meta descripciones?
Sí. Ajusta el límite a 155-160 caracteres para las meta descripciones de Google, o a 120 caracteres para un truncado más ceñido. La herramienta muestra el contador de caracteres en tiempo real para afinar el resultado.
¿Qué pasa con los caracteres especiales y los emojis?
Los caracteres especiales y los emojis se conservan tal cual. Ten en cuenta que los emojis pueden contar como 2 caracteres en algunas plataformas; verifica el recuento final en tu plataforma de destino si la precisión es importante.
Qué significa realmente «un carácter»
Un usuario ve un «carácter» donde JavaScript ve tres valores. La cadena «👨👩👧👦» (emoji familia de cuatro) es un grupo de grafemas, siete puntos de código Unicode unidos por Zero-Width Joiners (U+200D), y once unidades de código UTF-16. Por eso "👨👩👧👦".length === 11 en JavaScript. La definición autoritaria vive en el Anexo Estándar Unicode #29 «Segmentación de Texto Unicode» (versión actual 15.0, septiembre de 2022), que especifica los límites de grupos de grafemas, límites de palabras y límites de oraciones. JavaScript moderno expone UAX #29 a través de Intl.Segmenter, estandarizado en ECMAScript 2022 y enviado en cada navegador desde Firefox 125 (abril de 2024); Chrome lo tiene desde la versión 87 (noviembre de 2020) y Safari desde 14.1 (abril de 2021). Use new Intl.Segmenter('es', { granularity: 'grapheme' }) para contar como cuentan los humanos.
Límites de caracteres en las plataformas a las que envía
- Meta descripción de Google Search: sin tope aplicado, pero el snippet SERP típicamente trunca a 155-160 caracteres en escritorio y aproximadamente 120 en móvil. Desde 2018, las propias directrices de Google enfatizan que el snippet puede extraerse de cualquier parte de la página, no solo de la etiqueta
<meta name="description">. - Twitter / X: 280 caracteres para cuentas gratuitas desde noviembre de 2017, 25 000 para X Premium desde mayo de 2023. Reglas especiales de conteo: cualquier URL cuenta como 23 caracteres independientemente de la longitud, y los caracteres CJK cuentan como 2 cada uno.
- SMS: 160 caracteres por mensaje en el alfabeto 7-bit GSM (3GPP TS 23.038), 70 caracteres en UCS-2 (UTF-16) para texto no GSM incluyendo la mayoría de emojis y scripts no latinos. SMS multi-parte usa 153 / 67 por parte porque el User Data Header consume 7 caracteres de carga.
- Descripción Open Graph (Facebook): recomendado 110-200 caracteres, truncamiento típicamente a 300.
- Descripción Twitter Card: 200 caracteres máximo, truncada con elipsis más allá.
- Publicación de LinkedIn: 3 000 caracteres en total, pero el truncamiento «ver más» se activa en aproximadamente 210 caracteres en escritorio.
- Cuerpo de notificación Web Push: sin límite formal, pero iOS trunca a aproximadamente 110 caracteres y Android muestra alrededor de 200.
- Base de datos
VARCHAR(N): en MySQL con colaciónutf8heredada,Nes bytes; conutf8mb4,Nes caracteres. PostgreSQLvarchar(N)es siempre caracteres.
Los límites de palabras no son solo split(' ')
El truncador ingenuo de límite de palabras divide la entrada en /\s+/ y corta antes de la primera palabra que lo pone por encima del límite. Eso funciona para inglés. Falla en chino, japonés, coreano y tailandés, ninguno usa espacios en blanco entre palabras: la entrada entera termina como una sola «palabra», así que el recortador o lo mantiene todo o lo corta todo. El árabe usa espacios pero une formas de letras de maneras que cambian las posiciones de límite. Intl.Segmenter con granularity: 'word' aplica el algoritmo de límite de palabras UAX #29 y produce cortes correctos para cada idioma. También distingue segmentos «similares a palabras» (devuelven isWordLike: true) de segmentos de puntuación y espacios, así que puede encontrar el último límite de palabra antes de su presupuesto de caracteres con una sola pasada sobre los segmentos.
Truncamiento CSS: text-overflow y line-clamp
Si el objetivo es truncar visualmente mientras se mantiene el texto completo en el DOM (para que permanezca disponible para lectores de pantalla, motores de búsqueda y copiar-pegar), use CSS. El truncamiento de una línea requiere tres propiedades juntas: overflow: hidden; white-space: nowrap; text-overflow: ellipsis;. text-overflow: ellipsis está definido en el Módulo CSS Basic User Interface Nivel 4 (Candidate Recommendation W3C agosto de 2021) y se ha enviado en cada navegador desde Firefox 7 (septiembre de 2011); Internet Explorer 6 lo tenía ya en agosto de 2001. El truncamiento multilínea usa display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden;. La propiedad -webkit-line-clamp data de WebKit 2009 y ahora está definida en el Módulo CSS Overflow Nivel 3 (Working Draft W3C). El line-clamp sin prefijo se envía en Safari 18 (septiembre de 2024) y Firefox 125 (abril de 2024); siempre incluya la forma -webkit- como respaldo. Limitación crítica: el truncamiento CSS es puramente presentacional. El texto completo todavía está en el código HTML, así que el snippet SEO, el resumen de correo electrónico y el índice de búsqueda impulsado por JS ven la cadena no truncada.
Errores comunes
- Usar
str.lengthpara los límites.String.prototype.lengthde JavaScript devuelve unidades de código UTF-16, no caracteres. Un estado con tres emojis de pulgar arriba «👍👍👍» reportalength === 6; Twitter lo cuenta como 3. - No restar la longitud del sufijo. Si su presupuesto es de 160 caracteres y agrega
…, su cuerpo de texto tiene 159 caracteres con los que trabajar. Muchas implementaciones ingenuas producen cadenas por encima del límite. - Dividir por espacios el CJK y tailandés. Los idiomas sin espacios entre palabras se vuelven indivisibles. Use
Intl.Segmentercongranularity: 'word'. - Cortar antes de eliminar la puntuación final. «¡Hola, mundo!» recortado a 8 caracteres se vuelve «¡Hola, m» ingenuamente, o «¡Hola,…» si es inteligente, o «¡Hola…» si es aún más inteligente y elimina la coma final.
- Truncar dentro de etiquetas HTML. Truncar
<a href="long-url">text</a>a 30 caracteres produce una cadena con una etiqueta sin cerrar. O elimine HTML primero o use un truncador consciente del DOM. - Tres puntos vs una elipsis. La elipsis Unicode
…(U+2026) es un carácter, tres puntos...son tres. Elija el correcto para el contador de caracteres de la plataforma. - Confiar en
<input maxlength>para validación del lado del cliente. El HTML Living Standard cuenta unidades de código UTF-16, así que un usuario pegando emojis ve un conteo diferente al de su validador backend consciente de Unicode. Valide del lado del servidor.
Más preguntas frecuentes
¿Por qué Twitter cuenta mi URL como 23 caracteres incluso cuando es mucho más larga?
Twitter envuelve cada URL a través de su acortador t.co para análisis y detección de abuso, así que factura cada URL por la longitud del peor caso del acortador: 23 caracteres para HTTPS. Si escribe una URL de 100 caracteres, cuenta como 23 en la interfaz de Twitter. La misma regla se aplica a los metadatos de Twitter Card. La biblioteca de código abierto twitter-text (Twitter, MIT) implementa la regla exacta si necesita simulación perfecta al carácter.
¿Esta herramienta respeta los idiomas RTL como el árabe y el hebreo?
El contenido de texto se preserva incluyendo sus marcadores bidi (bidireccionales). El truncamiento opera sobre caracteres en orden lógico, así que cortar una oración árabe en el carácter 100 corta en el carácter 100 lógico (el que un lector de pantalla anunciaría primero). El orden de visualización puede invertirse visualmente debido al flujo de derecha a izquierda, pero la cadena subyacente es consistente.
¿Por qué mi SMS truncado todavía se divide en tres partes a 161 caracteres?
SMS usa codificación 7-bit GSM para texto solo latino, encajando 160 caracteres en un segmento. Pero cualquier carácter fuera de GSM-7, incluyendo las comillas tipográficas «inteligentes» de la autocorrección (U+2018 / U+2019), la elipsis Unicode (U+2026), o emojis, fuerza todo el mensaje a codificación UCS-2 a 70 caracteres por segmento. Si su mensaje truncado de 160 caracteres contiene una comilla tipográfica, el operador lo divide en tres partes UCS-2 de 70 caracteres. Reemplace las comillas tipográficas por comillas ASCII para SMS.
¿Puedo truncar texto formateado en HTML sin romper las etiquetas?
No de forma segura con un corte que cuenta caracteres. O elimine las etiquetas HTML primero (vía DOMParser o un parser del lado del servidor), trunque el texto plano, luego opcionalmente reenvuelva; o use un truncador consciente del DOM que recorra el árbol de nodos y clone prefijos de nodos de texto enteros. El regex puro sobre la cadena HTML no es seguro (HTML no es un lenguaje regular).
¿Se envía algo a un servidor?
No. El texto que pega, el límite que elige, el sufijo que establece y la salida truncada se procesan en el JavaScript de su navegador. No se realiza ninguna llamada de red y no se almacena ninguna copia de su entrada. Abra la pestaña Red en DevTools para verificar.