Free · No signup · Runs in your browser

Convert CSV to NDJSON.

Drop a CSV, get newline-delimited JSON — one compact object per line, correctly typed. Numbers, booleans and nulls all preserved, ready to stream row by row.

To convert CSV to NDJSON, drop or paste a CSV file — csvtodashboard parses it into rows and columns in your browser, then emits newline-delimited JSON (one object per line). Each row becomes a standalone, typed JSON object on its own line — ideal for streaming and log pipelines. Nothing is uploaded; the whole conversion runs on your device.

01 · How it works

Three steps, then done.

NDJSON (also called JSON Lines or JSONL) is the format log pipelines, BigQuery, and streaming tools actually want: one self-contained JSON object per line, no enclosing array. This converter reads the type of each column and emits each row as a compact object — numbers unquoted, booleans as `true`/`false`, empty cells as `null` — so a downstream `for line in file` loop gets clean, typed records with zero post-processing.

i. drop

Drop your CSV

Drag from Finder, click to choose, or paste the rows straight into the input pane.

ii. detect

We type each column

Column types are inferred from the data, so numbers and booleans come out unquoted — not strings everywhere.

iii. stream it

Copy, download, or dashboard

Copy the JSON Lines, download a .ndjson file, or hit 'Build dashboard' to see what's inside the data.

02 · Why ours

One object per line, typed right.

Most converters dump a single giant JSON array of quoted strings. NDJSON is built to be streamed — and ours keeps the types intact so each line is a clean, ready-to-parse record.

  • 01

    Streamable by design

    One JSON object per line means you can read, append, or process records one at a time without loading the whole file into memory.

  • 02

    Correct types

    Numbers stay numbers, booleans stay booleans, empty cells become null. No quoted-everything output that breaks downstream code.

  • 03

    Local-first

    Your file is parsed and converted in your browser. Nothing is uploaded — open DevTools, Network tab, and watch zero requests fire.

  • 04

    Tool-ready

    Loads straight into BigQuery, Elasticsearch bulk APIs, jq, pandas read_json(lines=True), and most log pipelines without reshaping.

"I piped it straight into BigQuery's load job — no array unwrapping, no fixups. Just worked."
— anyone loading a JSONL file
Good to know

csv to ndjson notes.

Format-specific details worth knowing before you convert CSV to NDJSON.

  • One object per line

    Each row becomes a self-contained JSON object on its own line (NDJSON / JSON Lines), so the file streams record-by-record.

  • Typed values

    Numbers, booleans and nulls are real JSON types on every line, exactly as in JSON; dates stay as ISO-8601 strings.

  • Append- and stream-friendly

    Because each line is independent, files concatenate and stream without parsing the whole document — unlike one big JSON array.

03 · FAQ

to ndjson questions.

What's the difference between NDJSON and regular JSON?
Regular JSON wraps your rows in a single array: [ {...}, {...} ]. NDJSON puts one complete JSON object on each line with no enclosing array and no commas between objects. That makes it streamable — tools can read it line by line instead of parsing one huge document. NDJSON, JSON Lines (.jsonl) and JSONL all refer to the same format.
Typed. We infer each column's type from its data: numbers come out unquoted, booleans as true/false, empty cells as null. Everything else stays a JSON string. Most free converters quote every value, which is valid JSON but useless when your code expects a real number.
No. Lines are joined with a single newline between objects and there's no extra newline at the end, so the file is exactly N lines for N rows. If a specific tool requires a trailing newline, add one when you save.
No, by default — we keep detected dates as their original strings so ambiguous formats like 03/04/2025 aren't silently mis-parsed. Toggle 'Normalize dates to ISO 8601' to emit them as YYYY-MM-DD instead.
Each line is produced with JSON serialization, so quotes, backslashes, embedded newlines and control characters are all escaped correctly. A newline inside a cell becomes \n within that line's JSON string — it never splits a record across two lines.