JSONL vs NDJSON: ¿Cuál es la diferencia?

Una guía completa que compara JSONL (JSON Lines) y NDJSON (Newline Delimited JSON) — dos nombres para casi el mismo formato, con diferencias sutiles que vale la pena conocer.

Última actualización: febrero de 2026

Comparación rápida: JSONL vs NDJSON

CaracterísticaJSONL (JSON Lines)NDJSON
Nombre completoJSON LinesNewline Delimited JSON
Extensión de archivo.jsonl.ndjson
Especificaciónjsonlines.org (informal)github.com/ndjson/ndjson-spec (especificación informal)
OrigenConvención comunitaria, popularizada por herramientas de ciencia de datosPropuesta por Chris Olah, Thorsten Ball y otros
Delimitador de línea\n (nueva línea)\n (nueva línea)
Tipo MIMEapplication/jsonl (no oficial)application/x-ndjson
Soporte de streamingSí, línea por líneaSí, línea por línea
AdopciónOpenAI, Hugging Face, ecosistema ML/AIElasticsearch, Apache Spark, ingeniería de datos

¿Qué es JSONL (JSON Lines)?

JSONL, abreviatura de JSON Lines, es un formato de datos basado en texto donde cada línea contiene un único valor JSON válido. Las líneas están separadas por caracteres de nueva línea (\n). El formato fue popularizado por las comunidades de aprendizaje automático y ciencia de datos, y está definido informalmente en jsonlines.org.

Los archivos JSONL usan la extensión de archivo .jsonl. El formato se ha convertido en el estándar para datos de entrenamiento de AI y ML — OpenAI requiere archivos .jsonl para fine-tuning, y los datasets de Hugging Face comúnmente usan el formato JSON Lines.

data.jsonl
{"id": 1, "text": "Hola mundo", "label": "saludo"}
{"id": 2, "text": "¿Cómo estás?", "label": "pregunta"}
{"id": 3, "text": "Adiós", "label": "despedida"}

¿Qué es NDJSON (Newline Delimited JSON)?

NDJSON, o Newline Delimited JSON, es un formato de datos donde cada línea es un valor JSON válido separado por caracteres de nueva línea. La especificación está alojada en github.com/ndjson/ndjson-spec y fue formalizada para proporcionar un estándar más estructurado para datos JSON delimitados por líneas.

Los archivos NDJSON usan la extensión de archivo .ndjson y tienen un tipo MIME registrado de application/x-ndjson. El formato es ampliamente adoptado en ingeniería de datos, procesamiento de logs y aplicaciones de streaming — Elasticsearch, Apache Spark y muchas APIs de streaming HTTP usan NDJSON.

data.ndjson
{"id": 1, "text": "Hola mundo", "label": "saludo"}
{"id": 2, "text": "¿Cómo estás?", "label": "pregunta"}
{"id": 3, "text": "Adiós", "label": "despedida"}

¿Son JSONL y NDJSON el mismo formato?

En la práctica, sí — JSONL y NDJSON son formatos funcionalmente idénticos. Ambos almacenan un valor JSON por línea, separados por caracteres de nueva línea (\n). Un archivo .jsonl y un archivo .ndjson con los mismos datos son completamente intercambiables, y cualquier herramienta que lea un formato puede leer el otro.

Las diferencias son puramente en nomenclatura, adopción comunitaria y convenciones de metadatos. JSONL (JSON Lines) surgió de la comunidad de ciencia de datos y aprendizaje automático, mientras que NDJSON (Newline Delimited JSON) fue formalizado por la comunidad de ingeniería de datos y streaming web. Piensa en ello como "película" vs "film" — lo mismo, preferencias de nombre diferentes en diferentes círculos.

La diferencia más significativa es la extensión de archivo (.jsonl vs .ndjson) y el tipo MIME. NDJSON tiene un tipo MIME más ampliamente reconocido (application/x-ndjson) que se usa en contextos de streaming HTTP, mientras que los archivos JSONL son el estándar en flujos de trabajo de AI/ML. Al elegir entre ellos, sigue la convención de tu ecosistema.

Diferencias clave entre JSONL y NDJSON

1. Especificación y autoridad

JSONL

Definido en jsonlines.org con una especificación concisa e informal. La especificación es directa: cada línea es un valor JSON válido, las líneas están separadas por '\n', y se recomienda la codificación UTF-8.

NDJSON

Definido en github.com/ndjson/ndjson-spec con una especificación ligeramente más formal. NDJSON requiere explícitamente que cada línea sea un valor JSON válido y que el separador de línea sea '\n' (no '\r\n'), con una nueva línea final recomendada.

2. Extensión de archivo

JSONL

Usa la extensión de archivo .jsonl. Este es el estándar para archivos de fine-tuning de OpenAI, datasets de Hugging Face y la mayoría de las herramientas ML/AI. GitHub y VS Code reconocen archivos .jsonl con resaltado de sintaxis.

NDJSON

Usa la extensión de archivo .ndjson. Esto es común en herramientas de ingeniería de datos, APIs masivas de Elasticsearch y respuestas HTTP de streaming. Muchos editores también soportan resaltado de sintaxis .ndjson.

3. Tipo MIME

JSONL

No hay un tipo MIME oficialmente registrado. Los tipos no oficiales comunes incluyen application/jsonl y application/json-lines. En la práctica, muchos sistemas usan application/jsonl o recurren a application/json.

NDJSON

Usa application/x-ndjson como su tipo MIME. Esto es más ampliamente reconocido en contextos HTTP y es usado por Elasticsearch, el estándar de streaming de Fetch API y varios frameworks web para respuestas de streaming.

4. Adopción comunitaria y de ecosistema

JSONL

Dominante en el ecosistema AI/ML. OpenAI, Anthropic, Google Gemini, Hugging Face y la mayoría de los frameworks ML usan .jsonl. El término 'JSONL' es más comúnmente buscado y reconocido en la comunidad de desarrolladores en general.

NDJSON

Preferido en ingeniería de datos y sistemas backend. Elasticsearch, Apache Spark, PostgreSQL COPY y muchas herramientas de agregación de logs usan NDJSON. El paquete ndjson de npm tiene millones de descargas semanales.

Cuándo usar JSONL vs NDJSON

JSONLUsa .jsonl cuando:
  • Prepares datos de entrenamiento para OpenAI, Anthropic u otro fine-tuning de LLM
  • Trabajes con datasets de Hugging Face
  • Construyas pipelines ML y preprocesamiento de datos
  • Tu equipo o documentación se refiera a 'JSON Lines'
  • Subas archivos a plataformas AI/ML que esperan la extensión .jsonl
  • Trabajes en entornos de ciencia de datos de Python
NDJSONUsa .ndjson cuando:
  • Hagas streaming de datos JSON sobre HTTP (Server-Sent Events, fetch streaming)
  • Trabajes con la API masiva de Elasticsearch
  • Construyas pipelines de datos con Apache Spark o herramientas similares
  • Establezcas encabezados Content-Type (application/x-ndjson)
  • Tu infraestructura o equipo use la convención NDJSON
  • Trabajes con bibliotecas de streaming de Node.js

Ejemplos de código: Leer JSONL y NDJSON

Leer un archivo .jsonl (Python)
# Leer JSONL - exactamente igual que leer NDJSON
import json
with open('data.jsonl', 'r') as f:
for line in f:
record = json.loads(line.strip())
print(record['text'])
# Salida:
# Hola mundo
# ¿Cómo estás?
# Adiós
Leer un archivo .ndjson (JavaScript/Node.js)
// Leer NDJSON - exactamente igual que leer 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);
}
// Salida:
// Hola mundo
// ¿Cómo estás?
// Adiós

Validar archivos JSONL / NDJSON

Comprueba si tu archivo .jsonl o .ndjson tiene el formato correcto. Nuestro validador gratuito verifica cada línea para una sintaxis JSON válida.

Visualiza archivos JSONL y NDJSON al instante

Abre archivos .jsonl y .ndjson de hasta 1GB en tu navegador. Sin subidas, sin registro — funciona con ambos formatos sin problemas.

Preguntas frecuentes

JSONL vs NDJSON — ¿Son lo mismo? Diferencias clave | json...