Extract JSON Column from Excel Files Online
Extract values from a JSON-encoded column in Excel files into a new flat column using a JSON path expression. Runs in your browser.
How to extract JSON Column from Excel files
- Drop your file onto the upload area. It is loaded into the in-browser engine and the first 200 rows are shown.
- Choose the JSON column. Only text columns are listed, and the first one is selected for you.
- Type a JSON path such as $.customer.country or $.tags[0]. The new column name fills in from the last part of the path, and you can change it.
- Pick Extract string value for plain text, or Extract raw JSON to keep quotes, objects and arrays as JSON text. Click Extract.
- Check the new column in the preview, then download the file in the same format you uploaded.
Your file is processed locally in your browser and is never uploaded. The free limit is 50 MB per file; larger files work if your device has the memory for them.
Worked example
A payments webhook log was exported with the whole event body in one payload column. The analyst needs the customer's country as its own column to count paid orders by country. One event is a refund, which has no customer object.
Input (Excel)
Excel workbook, first sheet (Sheet1)
| event_id | received_at | payload |
|---|---|---|
| 1 | 2026-08-01 09:14:00 | {"type":"order.paid","customer":{"id":"c_81","country":"IE"},"total":42.5} |
| 2 | 2026-08-01 09:20:31 | {"type":"order.paid","customer":{"id":"c_17","country":"DE"},"total":18} |
| 3 | 2026-08-01 10:02:07 | {"type":"refund.created","order_id":"o_992"} |
| 4 | 2026-08-01 10:45:50 | {"type":"order.paid","customer":{"id":"c_40","country":"US"},"total":99.9} |
Settings
- JSON column: payload
- JSON path: $.customer.country
- New column name: country (filled in from the path)
- Extract mode: Extract string value
Result
| event_id | received_at | payload | country |
|---|---|---|---|
| 1 | 2026-08-01 09:14:00 | {"type":"order.paid","customer":{"id":"c_81","country":"IE"},"total":42.5} | IE |
| 2 | 2026-08-01 09:20:31 | {"type":"order.paid","customer":{"id":"c_17","country":"DE"},"total":18} | DE |
| 3 | 2026-08-01 10:02:07 | {"type":"refund.created","order_id":"o_992"} | NULL |
| 4 | 2026-08-01 10:45:50 | {"type":"order.paid","customer":{"id":"c_40","country":"US"},"total":99.9} | US |
The path walks into the customer object and returns its country for each row. The refund event has no customer key, so the path finds nothing and the new column is NULL for that row. Nothing fails. The payload column is kept as it was. With Extract raw JSON, the values would keep their JSON quotes, as "IE" rather than IE.
Working with Excel files
Only the first sheet is read, and each cell is taken as the text it displays. JSON pasted into a cell survives this unchanged, because it is plain text. Watch the length limit: Excel cells hold at most 32,767 characters. A payload longer than that is cut off when it is saved in Excel, which leaves invalid JSON. A cut-off cell gets NULL and is counted as not valid JSON. Pretty-printed JSON with line breaks inside the cell is fine, because line breaks between JSON tokens are valid.
Blank cells in the JSON column give NULL in the new column, not an error. In the downloaded workbook the extracted values are written as text cells, even when they look like numbers. Excel may mark them with the "number stored as text" warning. Select the column in Excel and use Convert to Number, or cast the column here before downloading. The output is a single sheet named Sheet1 with values only.
Frequently Asked Questions
Why do extracted numbers show a green triangle in Excel?
They are written as text cells because the extraction returns text. Use Excel's Convert to Number option on the column, or run Cast Column Types here before you download.
Can I extract JSON from a sheet other than the first one?
Not directly. The tool reads the first sheet. Pull the sheet you need out with the Excel Sheet Extractor, then run the extraction on that file.
What JSON path syntax is supported?
Start with $ for the root, use dots for keys ($.user.email) and brackets for array positions ($.tags[0]). Negative positions count from the end, so $.tags[-1] is the last element. Quote keys that contain spaces: $."first name". Keys are case-sensitive.
What happens when the path does not exist or a row is not valid JSON?
Both give NULL for that row, and so does an empty cell. The run does not stop. After it finishes, the tool shows how many rows were not valid JSON, so you know whether to clean them.
Can I extract several fields in one run?
No, one path per run, and each run starts from the uploaded file. Download the result and load it again to add another field, or use the SQL Query tool with several json_extract_string calls in one SELECT.
Related Tools
Cast Column Types in Excel Files Online
Change column data types in Excel files directly in your browser. Cast text to numbers, dates to timestamps, or any supported type conversion — no upload required.
Count Values in Excel Files Online
Group and count rows by any column in Excel files directly in your browser. Sort by frequency or value to find the most common entries — no upload required.
Filter Excel Files Online
Filter rows in Excel files by column value, directly in your browser. Your data stays on your device.
Extract JSON Column from CSV Files Online
Extract values from a JSON-encoded column in CSV files into a new flat column using a JSON path expression. Runs in your browser.
Extract JSON Column from Parquet Files Online
Extract values from a JSON-encoded column in Parquet files into a new flat column using a JSON path expression. Runs in your browser.
Extract JSON Column from JSON Files Online
Extract values from a JSON-encoded column in JSON files into a new flat column using a JSON path expression. Runs in your browser.
Excel Viewer Online
View and inspect Excel files directly in your browser. Browse rows, check column names and data types — no upload required, your data stays on your device.
Convert Excel to Parquet Online
Convert Excel files to Parquet format directly in your browser. No upload required — your data never leaves your device.