ExcelTool.io

Excel to JSONL Converter

Turn spreadsheet rows into JSON Lines (NDJSON) - one object per line, ready for data pipelines, jq, and ML training sets.

Drop your files here or click to upload

Supports .xlsx, .xls, .xlsm, .xlsb · up to 50MB · or paste a file from your clipboard

How to Convert Excel to JSON Lines

  1. Upload your workbook - .xlsx, .xlsm, .xls or .xlsb. The first row of the first sheet must hold the column names.
  2. Convert locally - each data row becomes one JSON object on its own line; nothing is uploaded.
  3. Download the .jsonl file - or drop several workbooks in at once and take the results as a ZIP.

What the Output Looks Like

A sheet with the headers id, name and active produces one line per row, in sheet order, with no wrapping array:

{"id":1,"name":"Ada Lovelace","active":true}
{"id":2,"name":"Grace Hopper","active":false}

Cell types are carried across: numbers stay numbers, TRUE and FALSE become true and false, and text stays a quoted string with any quotes, backslashes or line breaks escaped by the JSON writer. Numbers are trimmed of floating-point noise first, so a cell showing 1.1 is written as 1.1 rather than 1.1000000000000001.

Edge Cases and Limits

  • First sheet only. Other tabs are ignored - split the workbook with the Excel splitter to convert them.
  • Header row required. A sheet with fewer than two rows is refused with an explanation rather than producing an empty file.
  • Empty cells are omitted keys, not nulls, so records are ragged in exactly the way the source sheet is.
  • Dates export as serial numbers; convert them to text in the sheet first if the consumer expects ISO strings.
  • Formulas export as their last calculated result, never as the formula text.
  • Flat output only. A column named address.city becomes a key literally called address.city; no nesting is reconstructed.
  • No trailing newline is written after the final record, and the file is served as application/x-ndjson.

Preparing the Sheet Before You Convert

JSON Lines is unforgiving about one thing spreadsheets are relaxed about: the header row is the schema. Five minutes on the sheet saves an hour in the pipeline.

  • Give every column a short, stable name. Header text becomes the JSON key verbatim, spaces and punctuation included, so "Total (USD)" becomes the key "Total (USD)". Rename to total_usd in the sheet if the consumer expects identifiers.
  • Delete blank rows inside the data. A blank row in the middle of the used range has no values, so it is written as an empty object on its own line. Remove Blank Rows clears them in one pass.
  • Put the header on row 1. A title row or a merged banner above the table becomes the key row, and every real column name then becomes data.
  • Decide on dates first - either accept serial numbers or add an ISO text column, because there is no formatting option in the converter.
  • Check for stray columns to the right of your data. A column whose header cell is empty but which still holds values is exported under a positional key such as Column7.

When to Use a Different Tool

If the consumer wants one document rather than a stream, use Excel to JSON, which writes a single array. For a database, Excel to SQL generates INSERT statements directly. Coming back the other way, JSONL to Excel turns a JSON Lines file into a workbook, using the union of all keys as the header row. And when the destination just needs a table, Excel to CSV is smaller and faster to load.

Frequently Asked Questions

Related Tools