Detecte saltos de línea de archivos: LF, CRLF o mixtos
Sepa qué saltos de línea usa de verdad un archivo: alpha, beta y gamma terminadas en CRLF dan el estilo CRLF con 3 saltos y 0 LF sueltos, y un solo salto distinto basta para marcar el archivo como mixto. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Texto
- alpha beta gamma
- Total
- 3
- Estilo
- CRLF
Examine el texto sin procesar de un archivo e identifique su convención de saltos de línea sin alterar el contenido. El detector cuenta los LF aislados y los pares CRLF propios de Windows, y después indica si el archivo usa LF, CRLF o una combinación de ambos. Es determinista, independiente del lenguaje y útil para código fuente, configuraciones, registros, exportaciones y texto generado. Si no encuentra saltos reconocidos, devuelve un error de entrada claro en vez de inventar una clasificación, por lo que el resultado es fiable para validaciones y automatizaciones.
Envíe el texto sin procesar tal como aparece
Envíe el contenido completo del archivo en el campo text. Los saltos de línea son invisibles en la mayoría de los editores, y una aplicación que normalice los saltos al copiar puede cambiar lo que observa el detector. Para obtener el resultado más fiable, lea el archivo como texto conservando sus caracteres originales y remita directamente esa cadena.
No hace falta proporcionar el nombre, el lenguaje, la codificación ni el sistema operativo, porque la capacidad examina los propios caracteres de salto. Un salto de Windows es la secuencia de dos caracteres retorno de carro y avance de línea, denominada CRLF. Un salto de estilo Unix es un avance de línea aislado, denominado LF.
El analizador considera cada par CRLF como un único salto y no vuelve a contar el LF incluido. También cuenta el salto final cuando existe, pues forma parte del archivo enviado. Una cadena vacía o un texto de una sola línea sin LF ni CRLF produce un error: no hay una convención que se pueda deducir.
Interprete el estilo y los recuentos
La respuesta contiene style, un objeto de recuentos y el total de saltos reconocidos. El objeto separa lf de crlf, de modo que la evidencia de la clasificación queda explícita. Si aparece al menos un LF y ningún par CRLF, el estilo es LF.
Si aparece al menos un CRLF y ningún LF aislado, el estilo es CRLF. Cuando ambos contadores son mayores que cero, el estilo es mixto, incluso si una convención domina ampliamente. Esta definición estricta es deliberada: un solo salto incoherente puede afectar a formateadores, parches, analizadores, instantáneas y políticas de repositorio, y una mera etiqueta de mayoría ocultaría información útil.
El total es la suma de ambos contadores; puede usarlo como comprobación rápida o como denominador para calcular porcentajes. Los contadores describen secuencias de salto, no líneas lógicas. Según exista o no un salto final, el archivo puede contener una línea lógica más que el total indicado.
Detecte antes de normalizar o validar
La detección aporta más valor antes de que otra herramienta reescriba el archivo. Una comprobación previa a una confirmación puede rechazar finales mixtos, un script de migración puede elegir una regla de normalización y una canalización de compilación puede explicar por qué un artefacto cambió entre sistemas operativos. El detector solo informa de lo que existe: no convierte CRLF en LF, no añade un salto final, no edita contenido, no abre repositorios ni escribe archivos.
Este alcance limitado mantiene el resultado reproducible y permite que usted elija la política adecuada. Un proyecto multiplataforma podría aceptar cualquiera de los dos estilos si es uniforme, mientras que un paquete para Linux podría exigir únicamente LF. Si el origen puede contener retornos de carro aislados antiguos, conviértalos o valídelos aparte.
Qué puede hacer con ella
Aplique una política de saltos en el repositorio
Compruebe código y configuraciones para detectar LF, CRLF o una mezcla antes de aceptar un cambio generado.
Diagnostique diferencias de archivo innecesarias
Confirme si saltos incoherentes hacen que contenido sin cambios parezca modificado entre sistemas operativos.
Valide exportaciones generadas
Cuente las secuencias de fin de fila y verifique que el productor haya emitido una convención uniforme.
Preguntas frecuentes
¿Cuánto cuesta una detección?
En el navegador puede ejecutar localmente la misma lógica determinista.
¿Cómo se cuenta CRLF?
Cada par de retorno de carro y avance de línea cuenta como un salto CRLF, y su carácter LF no se vuelve a contar.
¿Cuándo se informa que un archivo es mixto?
El estilo es mixto cuando la entrada contiene al menos un LF aislado y al menos un par CRLF.
¿Esta herramienta cambia o normaliza el texto?
No. Solo examina la cadena y devuelve recuentos; nunca modifica ni devuelve un archivo reescrito.
¿Por qué un texto sin saltos de línea da error?
Un texto vacío o de una sola línea no tiene ningún estilo de salto que detectar, así que recibe un mensaje claro en lugar de una suposición. Pegue el archivo completo con sus saltos originales, incluido el último, para obtener una respuesta fiable.
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/dev2/line-ending-detect \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"first line\r\nsecond line\r\nthird line\r\n"}'const res = await fetch("https://api.kit.forhosting.com/dev2/line-ending-detect", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "first line\r\nsecond line\r\nthird line\r\n"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev2/line-ending-detect",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "first line\r\nsecond line\r\nthird line\r\n"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev2/line-ending-detect", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"first line\\r\\nsecond line\\r\\nthird line\\r\\n"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"first line\r\nsecond line\r\nthird line\r\n"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev2/line-ending-detect", 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": "first line\r\nsecond line\r\nthird line\r\n"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.line_ending_detect",
"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.
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
Detecte antes de normalizar o validar
La implementación realiza una sola pasada determinista y usa contadores de tamaño constante; por ello, entradas idénticas producen siempre el mismo JSON sin depender de redes, configuraciones regionales, relojes ni valores del sistema.
Preguntas técnicas
¿Qué ocurre con un archivo de una sola línea?
Si no contiene LF ni CRLF, la capacidad devuelve invalid_input porque no puede detectar una convención.