Ajustar texto a un ancho de línea
Fije un ancho de 40 y una frase larga vuelve en 3 líneas, ninguna de más de 40 caracteres y sin cortar ninguna palabra por la mitad. Sus propios saltos de línea se quedan donde están. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Ancho
- 40
- Número de líneas
- 3
- Palabra más larga
- 6
Es el clásico algoritmo de ajuste de línea hecho correctamente: voraz, determinista, respetuoso con las palabras y lo bastante honesto como para rechazar el trabajo cuando una sola palabra es más larga que el ancho solicitado. Usted envía una cadena y un entero, y recibe el texto ajustado, las líneas individuales y algunos recuentos útiles.
Por qué importa un ajuste que respeta las palabras
La mayoría de las superficies de visualización imponen un límite estricto de columnas: una terminal a ochenta columnas, un correo de texto plano a setenta y dos, un bloque de comentarios de código a cien, una factura impresa a cuarenta. Redistribuir el texto a mano es tedioso y propenso a errores, y el enfoque ingenuo —cortar la cadena cada N caracteres— destruye la legibilidad porque parte las palabras por la mitad.
La capacidad de ajustar texto a un ancho de línea hace el trabajo correctamente con un algoritmo voraz: recorre las palabras en orden, añade cada una a la línea actual mientras quepa y abre una línea nueva cuando la siguiente palabra se desbordaría. Las palabras nunca se rompen, nunca se inventa un guionado y el resultado es estable: la misma entrada y el mismo ancho producen siempre una salida idéntica byte a byte, lo que la hace segura en pruebas, en documentos generados y en cualquier canalización que compare texto.
Los saltos de línea existentes se conservan y cada línea de origen se ajusta de forma independiente, de modo que los párrafos ya formateados mantienen su estructura.
Cómo se comporta el algoritmo en los bordes
El contrato es estricto donde la rigurosidad protege al usuario. El ancho debe ser un entero positivo y al menos tan largo como la palabra más larga del texto. Ese rechazo es deliberado: un documento ajustado que supera en secreto su presupuesto de columnas rompe los diseños aguas abajo, y conviene detectarlo en el origen.
Las secuencias de espacios se reducen a espacios simples, las líneas en blanco sobreviven como líneas en blanco y la salida informa del ancho utilizado, del número de líneas producidas y de la longitud de la palabra más larga encontrada, de modo que pueda registrar exactamente lo ocurrido. El algoritmo mide la longitud en caracteres tal como los cuenta JavaScript, la unidad adecuada para contextos de terminal y de código de ancho fijo.
Qué puede hacer con ella
Ajuste de mensajes de confirmación y registros de cambios
Redistribuya los cuerpos en prosa al límite convencional de 72 columnas antes de escribirlos en un repositorio o archivo de versión.
Formateo de correos de texto plano
Mantenga los correos generados dentro del clásico sobre de 78 columnas para que se representen limpiamente en cualquier cliente de correo.
Maquetación de salida de terminal y CLI
Ajuste la ayuda y las descripciones al ancho detectado de la terminal sin partir nunca una opción o una URL a mitad de palabra.
Preguntas frecuentes
¿Cuánto cuesta?
También es gratuita en su navegador en esta página: el mismo código se ejecuta en ambos lugares.
¿Qué ocurre si una palabra es más larga que el ancho?
La capacidad nunca rompe una palabra para hacerla caber.
¿Se conservan los saltos de línea existentes?
Sí. La entrada se divide primero en líneas y cada línea se ajusta de forma independiente, de modo que la estructura de los párrafos sobrevive.
¿Guiona las palabras largas?
No. Nunca se inventa un guionado; las palabras se mantienen enteras y la línea simplemente se corta antes.
¿Es determinista la salida?
Sí. El algoritmo voraz no tiene aleatoriedad, ni reloj ni dependencia de la configuración regional, de modo que una entrada idéntica produce siempre una salida idéntica.
¿Cuánto texto puedo enviar?
Divida los documentos mayores en los límites de párrafo antes de enviarlos.
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/text/wrap-width \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"The quick brown fox jumps over the lazy dog while the sun rises slowly over the quiet hills.","width":40}'const res = await fetch("https://api.kit.forhosting.com/text/wrap-width", {
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 while the sun rises slowly over the quiet hills.",
"width": 40
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/wrap-width",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "The quick brown fox jumps over the lazy dog while the sun rises slowly over the quiet hills.",
"width": 40
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/wrap-width", 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 while the sun rises slowly over the quiet hills.","width":40}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"The quick brown fox jumps over the lazy dog while the sun rises slowly over the quiet hills.","width":40}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/wrap-width", 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 while the sun rises slowly over the quiet hills.",
"width": 40
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.wrap_width",
"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_mb | 1 |
max_chars | 500000 |
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
La API de ajuste de texto toma cualquier texto plano y un ancho máximo de línea, y devuelve el texto redistribuido en líneas que nunca superan ese ancho y nunca dividen una palabra. Sin conjeturas, sin guionado oculto, sin sorpresas entre entornos: el mismo código se ejecuta gratis en su navegador y detrás de la API de pago.
Cómo se comporta el algoritmo en los bordes
Si una sola palabra —por ejemplo, una URL, un número de serie o un compuesto largo— supera el ancho, la capacidad lo rechaza con un error invalid_input claro que nombra la palabra infractora y su longitud, en lugar de emitir en silencio una línea que viola su límite.
Dónde encaja en una canalización
Los equipos la llaman allí donde se genera texto de ancho fijo: al formatear notas de versión para un archivo de cambios, al ajustar los cuerpos de los mensajes de confirmación a las convencionales setenta y dos columnas, al preparar plantillas de correo de texto plano, al maquetar la ayuda de una terminal o al encajar descripciones en el presupuesto de columnas de un PDF o una factura generados. Y como la salida incluye también las líneas como un array, los pasos posteriores pueden unirlas con su propio separador, numerarlas o comparar dos ajustes sin volver a dividir el texto. Al ser una capacidad de análisis pura, sin red y sin modelo, es rápida, barata a $0.002 por solicitud y lo bastante determinista para formar parte de una suite de pruebas. Las entradas están limitadas a 500000 caracteres por solicitud, lo que cubre con holgura cualquier documento realista; los corpus mayores deben dividirse en límites naturales, como los párrafos, antes de enviarse.