Normaliser les fins de ligne
Normalisez les fins de ligne lorsqu’un fichier, un texte collé, un document généré ou du code mélange LF sous Unix, CRLF sous Windows et d’anciens CR isolés.
Lancer gratuitement
Vous choisissez LF ou CRLF comme cible ; chaque caractère visible est conservé et toutes les limites de ligne deviennent cohérentes. La réponse fournit le texte normalisé, la cible retenue et le nombre exact de terminateurs convertis, afin de faciliter le contrôle et l’automatisation.
Pourquoi uniformiser les fins de ligne
Un texte peut sembler identique dans un éditeur tout en contenant des séquences d’octets différentes entre ses lignes. Unix et macOS récent utilisent généralement un saut de ligne unique, LF, tandis que Windows emploie souvent un retour chariot suivi d’un saut de ligne, CRLF. Les anciens fichiers peuvent aussi contenir des CR isolés. Ces mélanges apparaissent après une copie entre applications, l’assemblage de contenus, l’extraction d’archives ou des contributions provenant de plusieurs systèmes. Ils produisent des différences inutiles dans le contrôle de versions, perturbent les outils en ligne de commande, bloquent certains importateurs et modifient les sommes de contrôle. Cette capacité reconnaît CRLF comme un seul terminateur, ainsi que LF et CR isolés, puis convertit les trois formes vers le style demandé. Elle ne modifie ni lettres, ni espaces, ni tabulations, ni aucun autre caractère.
Fonctionnement de la conversion et du comptage
Saisissez le texte complet dans text et sélectionnez exactement LF ou CRLF dans target. Le convertisseur parcourt le contenu dans l’ordre et reconnaît chaque paire CRLF avant les caractères isolés ; une fin de ligne Windows n’est donc jamais comptée deux fois. Avec LF comme cible, chaque CRLF et chaque CR isolé valent une modification, tandis qu’un LF existant reste intact. Avec CRLF, les LF et CR isolés changent, mais les paires CRLF existantes restent identiques. changed compte les terminateurs convertis, non les caractères ajoutés ou retirés. Remplacer CRLF par LF constitue une seule modification, même si la sortie est plus courte. Un texte sans fin de ligne, déjà conforme ou vide revient inchangé avec zéro. Le traitement est déterministe : une entrée identique donne toujours une sortie identique.
Employer le résultat en toute sécurité
Utilisez le texte renvoyé comme valeur canonique pour écrire un fichier, calculer une empreinte, comparer des versions, alimenter un analyseur ou appeler une autre capacité. Conservez changed dans les journaux de migration si vous devez prouver la normalisation : zéro confirme que l’entrée respectait déjà la convention, tandis qu’une valeur positive indique combien de limites ont été réécrites. target est répété dans le résultat afin que les étapes suivantes ne dépendent pas d’une configuration externe. L’outil ne devine pas la convention d’après le nom du fichier ou le système, car une supposition silencieuse complique les audits. Choisissez LF pour les dépôts et traitements Unix qui l’exigent, ou CRLF pour les logiciels et formats Windows. Une cible non prise en charge provoque une erreur. Les espaces finaux, tabulations, encodages, formes Unicode et l’éventuel saut final ne sont pas modifiés.
Cas d’usage
Nettoyer un fichier source avant validation
Convertissez les fins mixtes selon la convention du dépôt afin qu’une petite modification ne semble pas réécrire tout le fichier.
Préparer un texte pour un importateur strict
Produisez des enregistrements cohérents avant de les transmettre à un logiciel qui exige exclusivement LF ou CRLF.
Canoniser le contenu avant son hachage
Uniformisez les limites avant de calculer une somme de contrôle pour neutraliser les différences entre systèmes.
Questions fréquentes
Quels styles de fin de ligne puis-je choisir ?
Les cibles acceptées sont LF et CRLF. Toute autre valeur déclenche une erreur de saisie.
Une paire CRLF compte-t-elle pour une ou deux modifications ?
Elle représente une seule fin de ligne et au maximum une modification. La paire est reconnue avant les caractères isolés.
La normalisation ajoute-t-elle un saut final ?
Non. Elle convertit uniquement les fins existantes, sans ajouter ni supprimer la dernière limite de ligne.
Que deviennent les caractères CR isolés ?
Chaque CR isolé est traité comme une ancienne fin de ligne et converti vers le style choisi.
Quel est le prix d’une requête API ?
Chaque requête API coûte $0.002. La même conversion déterministe peut aussi s’exécuter dans le navigateur.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/data/normalize-line-endings \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"first line\r\nsecond line\nthird line\rfourth line","target":"LF"}'const res = await fetch("https://api.kit.forhosting.com/data/normalize-line-endings", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "first line\r\nsecond line\nthird line\rfourth line",
"target": "LF"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/data/normalize-line-endings",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "first line\r\nsecond line\nthird line\rfourth line",
"target": "LF"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/data/normalize-line-endings", 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\\nthird line\\rfourth line","target":"LF"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"first line\r\nsecond line\nthird line\rfourth line","target":"LF"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/data/normalize-line-endings", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"text": "first line\r\nsecond line\nthird line\rfourth line",
"target": "LF"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.normalize_line_endings",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_mb | 25 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |