JSONL vs NDJSON : Quelle est la différence ?

Un guide complet comparant JSONL (JSON Lines) et NDJSON (Newline Delimited JSON) — deux noms pour presque le même format, avec des différences subtiles à connaître.

Dernière mise à jour : février 2026

Comparaison rapide : JSONL vs NDJSON

CaractéristiqueJSONL (JSON Lines)NDJSON
Nom completJSON LinesNewline Delimited JSON
Extension de fichier.jsonl.ndjson
Spécificationjsonlines.org (informelle)github.com/ndjson/ndjson-spec (spécification informelle)
OrigineConvention communautaire, popularisée par les outils de data scienceProposé par Chris Olah, Thorsten Ball et d'autres
Délimiteur de ligne\n (retour à la ligne)\n (retour à la ligne)
Type MIMEapplication/jsonl (non officiel)application/x-ndjson
Support du streamingOui, ligne par ligneOui, ligne par ligne
AdoptionOpenAI, Hugging Face, écosystème ML/AIElasticsearch, Apache Spark, ingénierie des données

Qu'est-ce que JSONL (JSON Lines) ?

JSONL, abréviation de JSON Lines, est un format de données texte où chaque ligne contient une seule valeur JSON valide. Les lignes sont séparées par des caractères de retour à la ligne (\n). Le format a été popularisé par les communautés d'apprentissage automatique et de data science, et est défini de manière informelle sur jsonlines.org.

Les fichiers JSONL utilisent l'extension de fichier .jsonl. Le format est devenu le standard pour les données d'entraînement AI et ML — OpenAI requiert des fichiers .jsonl pour le fine-tuning, et les jeux de données Hugging Face utilisent couramment le format JSON Lines.

data.jsonl
{"id": 1, "text": "Hello world", "label": "greeting"}
{"id": 2, "text": "How are you?", "label": "question"}
{"id": 3, "text": "Goodbye", "label": "farewell"}

Qu'est-ce que NDJSON (Newline Delimited JSON) ?

NDJSON, ou Newline Delimited JSON, est un format de données où chaque ligne est une valeur JSON valide séparée par des caractères de retour à la ligne. La spécification est hébergée sur github.com/ndjson/ndjson-spec et a été formalisée pour fournir un standard plus structuré pour les données JSON délimitées par des lignes.

Les fichiers NDJSON utilisent l'extension de fichier .ndjson et ont un type MIME enregistré application/x-ndjson. Le format est largement adopté dans l'ingénierie des données, le traitement des journaux et les applications de streaming — Elasticsearch, Apache Spark et de nombreuses API de streaming HTTP utilisent NDJSON.

data.ndjson
{"id": 1, "text": "Hello world", "label": "greeting"}
{"id": 2, "text": "How are you?", "label": "question"}
{"id": 3, "text": "Goodbye", "label": "farewell"}

JSONL et NDJSON sont-ils le même format ?

En pratique, oui — JSONL et NDJSON sont des formats fonctionnellement identiques. Les deux stockent une valeur JSON par ligne, séparées par des caractères de retour à la ligne (\n). Un fichier .jsonl et un fichier .ndjson avec les mêmes données sont complètement interchangeables, et tout outil qui lit un format peut lire l'autre.

Les différences sont purement nominales, d'adoption communautaire et de conventions de métadonnées. JSONL (JSON Lines) est apparu de la communauté data science et machine learning, tandis que NDJSON (Newline Delimited JSON) a été formalisé par la communauté d'ingénierie des données et de streaming web. Considérez-le comme « film » vs « cinéma » — même chose, préférence de nom différente dans différents cercles.

La différence la plus significative est l'extension de fichier (.jsonl vs .ndjson) et le type MIME. NDJSON a un type MIME plus largement reconnu (application/x-ndjson) qui est utilisé dans les contextes de streaming HTTP, tandis que les fichiers JSONL sont le standard dans les workflows AI/ML. Lors du choix entre eux, suivez la convention de votre écosystème.

Différences clés entre JSONL et NDJSON

1. Spécification et autorité

JSONL

Défini sur jsonlines.org avec une spécification concise et informelle. La spécification est simple : chaque ligne est une valeur JSON valide, les lignes sont séparées par '\n', et l'encodage UTF-8 est recommandé.

NDJSON

Défini sur github.com/ndjson/ndjson-spec avec une spécification légèrement plus formelle. NDJSON exige explicitement que chaque ligne soit une valeur JSON valide et que le séparateur de ligne soit '\n' (pas '\r\n'), avec un retour à la ligne final recommandé.

2. Extension de fichier

JSONL

Utilise l'extension de fichier .jsonl. C'est le standard pour les fichiers de fine-tuning OpenAI, les jeux de données Hugging Face et la plupart des outils ML/AI. GitHub et VS Code reconnaissent les fichiers .jsonl avec coloration syntaxique.

NDJSON

Utilise l'extension de fichier .ndjson. C'est courant dans les outils d'ingénierie des données, les API bulk Elasticsearch et les réponses HTTP en streaming. De nombreux éditeurs supportent également la coloration syntaxique .ndjson.

3. Type MIME

JSONL

Aucun type MIME officiellement enregistré. Les types non officiels courants incluent application/jsonl et application/json-lines. En pratique, de nombreux systèmes utilisent application/jsonl ou se rabattent sur application/json.

NDJSON

Utilise application/x-ndjson comme type MIME. Il est plus largement reconnu dans les contextes HTTP et est utilisé par Elasticsearch, le standard Fetch API streaming et divers frameworks web pour les réponses en streaming.

4. Adoption communautaire et écosystème

JSONL

Dominant dans l'écosystème AI/ML. OpenAI, Anthropic, Google Gemini, Hugging Face et la plupart des frameworks ML utilisent .jsonl. Le terme 'JSONL' est plus couramment recherché et reconnu dans la communauté des développeurs en général.

NDJSON

Préféré dans l'ingénierie des données et les systèmes backend. Elasticsearch, Apache Spark, PostgreSQL COPY et de nombreux outils d'agrégation de journaux utilisent NDJSON. Le package npm ndjson a des millions de téléchargements hebdomadaires.

Quand utiliser JSONL vs NDJSON

JSONLUtilisez .jsonl quand :
  • Vous préparez des données d'entraînement pour OpenAI, Anthropic ou d'autres fine-tuning de LLM
  • Vous travaillez avec des jeux de données Hugging Face
  • Vous construisez des pipelines ML et du prétraitement de données
  • Votre équipe ou documentation fait référence à 'JSON Lines'
  • Vous téléversez des fichiers vers des plateformes AI/ML qui attendent l'extension .jsonl
  • Vous travaillez dans des environnements Python data science
NDJSONUtilisez .ndjson quand :
  • Vous streamez des données JSON sur HTTP (Server-Sent Events, fetch streaming)
  • Vous travaillez avec l'API bulk Elasticsearch
  • Vous construisez des pipelines de données avec Apache Spark ou outils similaires
  • Vous définissez des en-têtes Content-Type (application/x-ndjson)
  • Votre infrastructure ou équipe utilise la convention NDJSON
  • Vous travaillez avec des bibliothèques de streaming Node.js

Exemples de code : Lecture de JSONL et NDJSON

Lire un fichier .jsonl (Python)
# Lecture JSONL - exactement comme la lecture NDJSON
import json
with open('data.jsonl', 'r') as f:
for line in f:
record = json.loads(line.strip())
print(record['text'])
# Sortie :
# Hello world
# How are you?
# Goodbye
Lire un fichier .ndjson (JavaScript/Node.js)
// Lecture NDJSON - exactement comme la lecture JSONL
import { createReadStream } from 'fs';
import { createInterface } from 'readline';
const rl = createInterface({
input: createReadStream('data.ndjson')
});
for await (const line of rl) {
const record = JSON.parse(line);
console.log(record.text);
}
// Sortie :
// Hello world
// How are you?
// Goodbye

Valider vos fichiers JSONL / NDJSON

Vérifiez si votre fichier .jsonl ou .ndjson est correctement formaté. Notre validateur gratuit vérifie chaque ligne pour une syntaxe JSON valide.

Visualisez instantanément les fichiers JSONL et NDJSON

Ouvrez des fichiers .jsonl et .ndjson jusqu'à 1 Go dans votre navigateur. Sans téléversement, sans inscription — fonctionne avec les deux formats de manière transparente.

Questions fréquemment posées

JSONL vs NDJSON — Sont-ils identiques ? Différences clés ...