SmartQueryTools

Merge JSON Files Online

Merge and concatenate multiple JSON files into one, directly in your browser.

How to merge JSON files

  1. Click the upload area to add your first file. It is loaded in the browser and listed with its row and column count.
  2. Click + Add File to add the next file, one at a time. Use Remove next to any file you added by mistake. If the files do not all have the same columns, a note says so. They still merge, matched by column name.
  3. Once two or more files are listed, click Merge Files. Rows are stacked in the order the files were added, and the total row count is shown.
  4. Check the preview of the first 200 rows, then click Download merged to save merged_result in the same format.

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

Two regional teams send in their July expense sheets. The south team lists the columns in a different order and adds a category column the north team does not use. The north file is shown below.

Input (JSON)

[
  {
    "rep": "Ines",
    "expense_date": "2026-07-01",
    "amount": 120.5
  },
  {
    "rep": "Ines",
    "expense_date": "2026-07-08",
    "amount": 33
  },
  {
    "rep": "Marek",
    "expense_date": "2026-07-02",
    "amount": 210
  }
]

Settings

  • File 1: north expenses (shown above)
  • File 2: south expenses, columns amount, rep, expense_date, category, with rows (54.2, Kofi, 2026-07-03, meals) and (18, Kofi, 2026-07-09, parking)

Result

repexpense_dateamountcategory
Ines2026-07-01120.5NULL
Ines2026-07-0833NULL
Marek2026-07-02210NULL
Kofi2026-07-0354.2meals
Kofi2026-07-0918parking

Columns are matched by name, not position, so the south file's amount values land under amount even though that column comes first in its file. Column order follows the first file, and category is added at the end because only the second file has it. North rows get NULL for category. Rows keep file order: first file, then second.

Working with JSON files

Each JSON file must hold an array of objects, or a single object, which is loaded as one row. The arrays are combined into one array, first file first. This is handy for joining paged API responses saved as page1.json, page2.json and so on. Keys are matched by name. A key that appears in only some files becomes a column for all rows, and it is null where it was absent.

Nested objects are combined field by field. If one page has "meta": {"id": 1} and another has "meta": {"id": 2, "tag": "x"}, every merged object gets a meta with both id and tag, and tag is null where it was missing. A key that holds an object in one file and a plain string in another cannot be combined, so the merge stops with an error. Flatten both files first in that case. The output is one pretty-printed JSON array.

Frequently Asked Questions

How do I combine paginated API responses saved as JSON files?

Add each page file in order, click Merge Files, and download. The result is one JSON array with the objects from every page.

What if my JSON files have different keys?

Keys are matched by name, and every key found in any file becomes part of the output. Objects that lacked a key get null for it.

Do all files need exactly the same columns?

No. Columns are matched by name, ignoring case. A column missing from one file is filled with NULL for that file's rows, and columns can appear in any order.

Is this a join on a key column?

No. Merge stacks rows from one file under another, which SQL calls UNION ALL. To match rows from two files on a shared ID, use the SQL Query tool with a JOIN.

Are duplicate rows removed when merging?

No. Every row from every file is kept. Run Remove Duplicates on the merged file if the inputs overlap.

Related Tools