Convertir NDJSON a CSV

Aquí puedes convertir NDJSON a CSV gratis y sin cuenta: suelta el archivo arriba y en un par de segundos tienes el resultado listo para descargar. La conversión ocurre en tu propio navegador, así que el archivo no se sube nunca. Funciona igual en Windows, macOS y Linux que en iPhone y Android, y sigue funcionando aunque cortes la conexión.

  • Dónde se ejecuta En tu navegador. El archivo no se sube.
  • Reconstruido CSV funciona de otra manera que NDJSON. No es la degradación gradual de un códec con pérdida: lo que CSV puede expresar se reproduce fielmente, y lo que no tiene equivalente allí no sobrevive en absoluto.
  • Límite de tamaño Hasta 100 MB por archivo, gratis y sin cuenta.
  • Conviene saberlo Los objetos anidados se aplanan en columnas. Los datos muy anidados pierden su forma.

Hasta 100 archivos a la vez. Mezclar formatos no es problema.

Cuántas filas vas a obtener se sabe antes de convertir nada

Es la aritmética más sencilla de cualquier origen de este sitio. Un archivo NDJSON guarda un registro completo por línea, así que el número de filas es el número de líneas: lo que te dice `wc -l`, o el contador de cualquier editor capaz de abrirlo. Ningún dato puede partir una línea, porque un salto dentro de una cadena JSON va escapado.

Las líneas en blanco se saltan, incluida la última que casi todos los programas dejan al final del archivo. De modo que si el origen tiene 412.000 líneas y el CSV trae menos filas, el problema estaba en el archivo y no en la conversión. Con un JSON envuelto en un array esa comprobación no existe.

Las columnas se reúnen leyendo el archivo entero, no la primera línea

Cada línea es independiente y nada obliga a la segunda a llevar las claves de la primera. Un flujo de registro que emite varios tipos de suceso —una petición, un error, una tarea terminada— mete todos en el mismo archivo con campos distintos, lo cual es razonable como flujo y desagradable como tabla.

La conversión recorre el archivo completo, va anotando cada clave nueva que ve y le da una columna, en el orden en que aparecieron por primera vez. Ninguna se pierde por asomar tarde. El precio es la anchura: cuarenta columnas de las que cada fila usa ocho. Cuando salga así, lo útil es filtrar el origen a un solo tipo de suceso antes de convertir, no ensanchar la hoja después.

Una línea rota detiene la conversión y dice cuál es

Si una línea no es JSON válido, la conversión no sigue adelante: para y nombra el número de línea. Eso es deliberado y es la conducta que conviene querer, aunque de entrada parezca menos cómoda que saltarse el renglón.

Una línea rota en un registro casi nunca significa un carácter suelto. Significa una escritura truncada —un proceso muerto a mitad de vaciado, un archivo rotado por el medio, una descarga incompleta— y todo lo que viene después es sospechoso. Saltarla en silencio produciría una tabla a la que le faltan filas sin nada que lo indique. Con el número delante, recortar la cola es una orden y sabes exactamente qué has perdido.

Los objetos anidados se aplanan en columnas separadas por puntos

El registro estructurado anida casi siempre: un objeto de petición con su método y su ruta, un usuario con su identificador, un bloque de contexto con la traza. Todo eso se aplana en una columna por valor final, nombrada con el camino completo y puntos entre los tramos: `peticion.metodo`, `usuario.id`.

Uno o dos niveles dan una tabla con la que trabaja cualquiera. Más abajo la cosa se ensancha deprisa, y una línea que arrastre una carga entera serializada producirá una columna por cada campo de dentro. Cuando eso pase, la respuesta honesta es que lo interesante del archivo es una rama, y extraerla antes de convertir da una tabla mucho mejor que aplanarlo todo y esconder columnas después.

Una lista dentro de un registro se reparte en columnas numeradas

Un registro que lleve una lista —etiquetas, marcos de una traza de error, reglas aplicadas— se aplana en columnas numeradas: `etiquetas.0`, `etiquetas.1`, `etiquetas.2`. No se pierde ningún valor, y la tabla acaba con tantas columnas como elementos tuviera la lista más larga del archivo, la mayoría vacías.

Para analizar casi nunca es lo que quieres. Si la lista es accesoria, unirla en una sola cadena antes de convertir da una columna legible. Si la lista es justo lo que vas a contar, lo que necesitas es una fila por elemento, y eso significa expandir el archivo en el origen. Cualquiera de las dos cosas es una expresión de `jq` y las dos ganan a ordenar una hoja por `etiquetas.3`.

Por qué Excel en español te abre el CSV en una sola columna

El archivo que sale de aquí separa con coma, siempre y sin opción. Windows configurado en español —y también en portugués, en francés o en alemán— trae el punto y coma como separador de listas, porque la coma ya está ocupada haciendo de separador decimal. Excel obedece a esa configuración regional, no al archivo.

El resultado es el clásico: doble clic en el CSV y aparece todo el contenido metido en la columna A. No está roto. Abre Excel primero y usa Datos, luego «Obtener datos» o «Desde un archivo de texto/CSV», y elige la coma como delimitador en el asistente. Si vas a repetir la operación muchas veces, convierte el mismo NDJSON a TSV en lugar de a CSV: el tabulador no colisiona con ninguna configuración regional y es el atajo que se usa poco y ahorra más.

El código postal que pierde el cero y el identificador que se redondea

Un CSV no tiene tipos: todo es texto y quien lo abre decide qué es cada cosa. Los valores se escriben con fidelidad —un número con sus cifras, un booleano como `true` o `false`, un nulo como celda vacía— y a partir de ahí manda el programa que lo lee.

Excel decide mal y de forma previsible, y en un archivo español hay tres víctimas habituales. Los códigos postales que empiezan por cero: 01001 de Vitoria y 08001 de Barcelona se quedan en 1001 y 8001. Cualquier cosa con forma de fecha se convierte en fecha. Y un identificador numérico largo —una referencia de pedido, un número de expediente— pierde las últimas cifras al pasar a coma flotante. El remedio es importar en lugar de abrir, marcando esas columnas como texto, o convertir a XLSX, donde los tipos van declarados dentro del archivo y no se adivina nada.

Comillas y comas dentro de un valor

Los valores que contienen una coma, una comilla doble o un salto de línea se envuelven entre comillas dobles y las comillas interiores se duplican, que es la convención de la RFC 4180 y la que lee correctamente cualquier importador que merezca la pena. El resto se escribe tal cual, de modo que el archivo sigue siendo legible con un editor.

Los datos de registro tiran de ese mecanismo más que ningún otro: los agentes de usuario, las rutas con cadena de consulta, los mensajes de error y las trazas están llenos de comas y comillas. Si el destino no es una hoja de cálculo sino una tubería de intérprete de órdenes —`awk`, `cut`, un `split` ingenuo por comas—, el entrecomillado es exactamente lo que esas herramientas no implementan, y convertir a TSV evita la discusión entera.

Hasta dónde llega un archivo de registro dentro de una pestaña

El análisis es rápido y el techo es la memoria, porque el archivo se lee entero y el juego completo de columnas queda decidido antes de poder escribir la primera fila. El límite gratuito son 100 MB por archivo; decenas de megabytes se convierten sin drama y varios cientos es donde una pestaña empieza a sufrir.

Por encima de eso el formato de origen juega a tu favor. Un NDJSON se parte sin riesgo en cualquier salto de línea, así que `split -l 500000` produce archivos válidos y convertir un registro enorme por trozos es un procedimiento legítimo y no un apaño. Para un archivo de varios gigabytes el instrumento correcto es una herramienta de flujo y esta página no lo es.

El CSV es la respuesta de hoy; el NDJSON son los datos

La tabla es una vista, no un sustituto. Ha perdido los tipos, ha aplanado la estructura y ha conciliado registros que nunca estuvieron obligados a coincidir, y nada de eso se recupera desde el CSV.

El archivo original además es mejor en lo que vas a querer después: se le añaden líneas sin reescribirlo, se filtra con `jq` sin cargarlo entero y se puede volver a convertir extrayendo otra rama cuando cambie la pregunta. Guarda los dos y borra la tabla, no la fuente.

El registro no sale del equipo en el que lo abres

La conversión es JavaScript corriente ejecutándose en esta pestaña. Ninguna petición lleva el archivo a ninguna parte, no hay cuenta ni cupo diario, y puedes comprobarlo abriendo el panel de red del navegador mientras conviertes algo.

En este par no es un detalle de cortesía. Un registro de producción lleva direcciones IP, identificadores de sesión, rutas de petición, agentes de usuario y, más veces de las que nadie admite, una cadena de consulta con un testigo dentro. Bajo el RGPD eso son datos personales, y subirlos a un conversor ajeno es una cesión que alguien tendría que haber documentado. Aquí no hay nada que subir. Se pueden soltar hasta cien archivos de una vez y descargarlos juntos en un ZIP.

Cómo convertir NDJSON a CSV

  1. Suelta tu archivo NDJSON en esta página, o haz clic para elegir uno.
  2. Elige CSV como destino. La conversión ocurre en tu navegador y el archivo no se sube.
  3. Descarga el archivo CSV terminado.

NDJSON frente a CSV: qué cambia

NDJSON frente a CSV
NDJSONCSV
Nombre completoNewline-Delimited JSONComma-Separated Values
Extensión de archivo.ndjson, .jsonl.csv
Tipo de medioapplication/x-ndjsontext/csv
Publicado por primera vez20131972
EspecificaciónRFC 4180
LicenciaEstándar abiertoEstándar abierto
Situación actualVigenteVigente
Se abre en el navegadorNingún navegadorNingún navegador
Considerado en su lugarJSONXLSX, JSON, Parquet

Abrir el resultado

pandas lee tanto NDJSON como CSV, así que puedes comparar el resultado con el original sin un segundo programa.

Para qué sirve cada formato

CSV es de 1972, recogido en RFC 4180. Microsoft Excel, LibreOffice Calc y pandas lo leen.

CSV se publicó en 1972 y NDJSON en 2013. El más antiguo suele ser el archivo más seguro para entregar; el más reciente hace lo mismo con menos bytes.

De NDJSON a CSV: preguntas frecuentes

¿Se sube a algún sitio mi archivo NDJSON?

No. Esta conversión ocurre por completo en tu navegador, así que el archivo no sale de tu dispositivo. Puedes comprobarlo tú: abre la pestaña de red de las herramientas de desarrollo y convierte algo. Verás la propia página y las peticiones de estadística y publicidad con las que se paga este servicio, y ni una sola que lleve tu archivo.

¿Convertir NDJSON a CSV es gratis?

Sí. Sin cuenta, sin marca de agua y sin cupo diario que se gaste: se ejecuta en tu propio equipo, así que puedes volver tantas veces como quieras. El navegador procesa archivos de hasta 100 MB, 100 a la vez.

¿Se pierde calidad al convertir NDJSON a CSV?

NDJSON y CSV describen el contenido de maneras radicalmente distintas. La conversión es por tanto una reconstrucción y no una copia: fiel, pero no idéntica byte a byte. Los objetos anidados se aplanan en columnas. Los datos muy anidados pierden su forma.

¿Tengo que instalar algo para abrir un archivo CSV?

Para la conversión no: ocurre en el navegador que ya tienes abierto. Para abrir el resultado necesitas después el programa con el que tu dispositivo muestra normalmente Comma-Separated Values.

Más sobre estos formatos