Ajouter des numéros de ligne
Placez un numéro devant chaque ligne de code, de journal, de chanson ou de notes : alpha, beta et gamma deviennent 1. alpha, 2. beta et 3. gamma. Choisissez votre séparateur ou votre premier numéro pour prolonger une liste. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Texte
- alpha beta gamma
- Entrée
- alpha beta gamma
- Séparateur
- .
- Début
- 1
- Nombre de lignes
- 3
Un outil d'ajout de numéros de ligne transforme un collage brut de code, journaux, paroles ou notes en une liste numérotée stable que vous pouvez partager dans des tickets, devoirs et revues. Saisissez toute chaîne non vide mono ou multi-lignes ; l'outil normalise les sauts Windows et Mac classiques, découpe à chaque saut de ligne et préfixe chaque segment d'un entier séquentiel plus le séparateur choisi—par défaut un point et un espace pour que le style familier 1. apparaisse sans réglage supplémentaire. Le start optionnel permet de continuer une liste depuis zéro, un ou tout entier dans la plage publiée. Développeurs, enseignants, agents support et pipelines de contenu ont besoin de cette même numérotation déterministe sans ouvrir un IDE complet.
Comment fonctionne la numérotation séquentielle des lignes
La numérotation de lignes est l'une des plus anciennes aides à la lisibilité en programmation et rédaction technique : chaque ligne visuelle reçoit une étiquette entière pour que l'on puisse pointer « ligne 17 » sans citer la moitié du document. Cette capacité applique cette règle quotidienne au texte brut plutôt qu'aux pages PDF ou paragraphes de traitement de texte. D'abord l'entrée est vérifiée : text manquant, valeur non chaîne, ou chaîne vide après trim des espaces est rejetée pour que les collages blancs ne paraissent jamais un succès.
Les sauts sont normalisés pour que Windows CRLF, ancien Mac CR et Unix LF deviennent une seule forme LF avant découpage. Le découpeur casse ensuite la chaîne sur chaque LF ; chaque segment résultant—y compris les segments vides entre sauts consécutifs—est une ligne et reçoit son propre numéro. Le premier numéro est la valeur entière start (défaut un), et chaque ligne suivante s'incrémente d'un.
Entre le numéro et le contenu d'origine de la ligne l'outil insère la chaîne separator, qui par défaut est un point suivi d'un espace pour que la sortie se lise comme une liste numérotée classique. Vous pouvez passer un séparateur différent tel qu'un deux-points et espace, une parenthèse fermante, un pipe ou un marqueur type tabulation, tant que le séparateur reste dans la limite de caractères publiée.
Lorsque vous avez besoin de totaux de paragraphes plutôt que d'étiquettes par ligne, utilisez un compteur de paragraphes par lignes vides ; lorsque vous avez besoin de tampons de page PDF, utilisez une capacité de numérotation de pages PDF. Cette page ne concerne que le préfixage de numéros séquentiels sur des lignes de texte brut.
Conseils pratiques, limites et quand utiliser cet outil
Utilisez cette capacité lorsque l'intention de recherche est ajouter des numéros de ligne, numéroter les lignes en ligne, ou numérotation séquentielle de lignes pour texte brut. Collez un extrait de code, un extrait de journal, un poème ou une checklist, convertissez une fois et placez le bloc numéroté dans un ticket, e-mail ou formulaire de retour étudiant.
Gardez à l'esprit les sauts finaux intentionnels : un LF final crée un dernier segment vide qui reçoit encore un numéro, ce qui correspond à la façon dont de nombreux éditeurs traitent les sauts de fin de fichier. Les lignes individuelles extrêmement longues comptent toujours comme une ligne chacune ; l'outil ne coupe pas par largeur de caractères. Les sources HTML et Markdown sont numérotées comme chaînes brutes ; supprimez le balisage d'abord si vous ne voulez que des lignes de prose visibles.
Cette page n'est pas un tampon de page PDF, ni un compteur de paragraphes, ni un compteur de mots ou de caractères, ni un outil de diff qui invente des hunks. Préférez la numérotation de pages PDF lorsque le document est un PDF binaire multi-pages ; préférez un compteur de paragraphes lorsque des humains ont séparé des idées par des lignes vides et que vous n'avez besoin que du total ; préférez cette capacité lorsque les relecteurs doivent citer des indices de ligne exacts dans du texte brut.
En enseignant la revue de code, numérotez le même extrait deux fois avec des séparateurs différents pour que les apprenants voient comment les étiquettes restent stables tandis que la présentation change.
Cas d’usage
Revue de code et rapports de bugs
Collez une stack trace ou un extrait, ajoutez des numéros de ligne stables et citez « ligne 12 » dans des tickets sans partager un dépôt entier.
Préparation de devoirs et fiches
Les enseignants numérotent des vers de poèmes ou listes d'exercices pour que les élèves répondent par numéro de ligne aux quiz et fiches.
Extraits de journal pour transferts support
Les agents support numérotent des collages de journal multi-lignes avant d'escalader pour que les ingénieurs pointent la ligne exacte en échec.
Questions fréquentes
Comment les lignes sont-elles définies ?
Après normalisation de CRLF et CR en LF, le texte est découpé sur chaque LF. Chaque segment—y compris les vides entre sauts consécutifs—reçoit un numéro séquentiel.
Puis-je changer le séparateur ou le numéro de départ ?
Start doit être un entier de 0 à 1,000,000 ; separator est limité à 32 caractères.
Cela numérote-t-il des pages PDF ?
Non. Il ne numérote que des lignes de texte brut. Utilisez un outil de numérotation de pages PDF lorsque vous avez besoin de tampons sur des pages PDF.
L'outil de numéros de ligne est-il gratuit ?
L'outil navigateur est gratuit et s'exécute en local.
Les lignes vides reçoivent-elles aussi un numéro ?
Oui. Chaque ligne vide entre deux sauts de ligne est numérotée, ce qui fait correspondre les numéros à ce que montre un éditeur. Un saut de ligne final ajoute aussi une dernière ligne vide numérotée.
Outils associés
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/str/number-lines \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"alpha\nbeta\ngamma"}'const res = await fetch("https://api.kit.forhosting.com/str/number-lines", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "alpha\nbeta\ngamma"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/number-lines",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "alpha\nbeta\ngamma"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/number-lines", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"alpha\\nbeta\\ngamma"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"alpha\nbeta\ngamma"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/number-lines", 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": "alpha\nbeta\ngamma"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.number_lines",
"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_chars | 100000 |
max_separator_chars | 32 |
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. |
Notes techniques
Une entrée vide ou uniquement d'espaces est rejetée avec une erreur claire invalid_input afin que l'automatisation ne traite jamais un formulaire blanc comme un fichier zéro ligne réussi. Le chemin est une logique de chaîne pure—sans réseau, sans graines aléatoires, sans dépendance à l'horloge—ainsi l'exécuteur gratuit du navigateur et l'API prépayée renvoient le même JSON à chaque appel.
Comment appeler l'API et ce que contient la réponse
Préférez envoyer le corps brut du document avec ses vrais sauts de ligne plutôt que de tout pré-joindre en une ligne lorsque vous voulez de vraies étiquettes multi-lignes. Envoyez un corps JSON avec un champ chaîne obligatoire text (alias input, value, string, s, content et body). Incluez optionnellement separator (alias sep et delimiter) comme chaîne d'au plus trente-deux caractères, et start (alias from, offset et begin) comme entier entre zéro et un million inclus. La valeur text doit être non vide après trim des espaces et ne pas dépasser cent mille caractères pour qu'une seule requête ne sature pas la mémoire du Worker ou du navigateur avec d'énormes collages. En cas de succès la réponse renvoie input comme la chaîne originale envoyée, text comme la chaîne de travail trimée, separator et start comme les options effectives de numérotation, line_count comme le nombre de segments numérotés, lines comme un tableau ordonné de chaînes de ligne entièrement préfixées, numbered comme ces lignes jointes avec LF, et message comme un court résumé indiquant combien de lignes ont été numérotées et avec quel start et separator. Une validation échouée—text manquant, valeur non chaîne, charge trop grande, contenu vide après trim, separator non chaîne ou trop long, ou start non entier ou hors plage—renvoie invalid_input et n'est jamais facturée. Le tarif est un forfait de $0.002 par requête réussie avec unité item et prix unitaire marginal nul. Lors de l'intégration, assertez sur numbered ou lines pour la liste complète, sur line_count pour le total, et traitez invalid_input comme un bug client pour les soumissions de formulaire vides plutôt qu'un événement de facturation.
Conseils pratiques, limites et quand utiliser cet outil
Les contrôles aller-retour pour les tests sont simples : alimentez trois courtes lignes séparées par LF et attendez line_count trois avec préfixes à partir de un et le separator par défaut ; changez start à dix et attendez dix, onze, douze ; envoyez délibérément une chaîne vide ou des espaces pour confirmer invalid_input et le message demandant une chaîne non vide. Les tâches échouées qui renvoient invalid_input ne consomment pas le solde prépayé, ce qui maintient bon marché la validation de formulaires et les tests négatifs CI.
Questions techniques
Que se passe-t-il en entrée vide ?
text manquant, valeurs non chaîne ou chaînes vides après trim renvoient invalid_input et ne sont jamais facturés.