Group Concatenate JSON Files Online
Concatenate text values within each group in JSON files directly in your browser. Group rows by a column and join the values of another column into a single delimited string — no upload required.
How to group Concatenate JSON files
- Drop your file onto the upload area. The first 200 rows are shown so you can check the columns loaded correctly.
- Pick a Group by column, or leave it on "No grouping (whole file)" to join every value into a single cell.
- Choose the column to concatenate values from, then set the separator (", " by default) and the output column name ("values" by default). Type \n in the separator for a new line or \t for a tab.
- Optionally pick a column under "Order values within group by" and a sort direction, so the joined values come out in a predictable order.
- Click Concatenate Values, check the result, and download it in the same format you uploaded. The file has one row per group.
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 blog CMS exports one row per article and tag. The editor wants a single row per article with all its tags in one cell, sorted alphabetically, to paste into a content audit.
Input (JSON)
[
{
"article_slug": "csv-vs-parquet",
"tag": "parquet",
"added_by": "mia"
},
{
"article_slug": "csv-vs-parquet",
"tag": "csv",
"added_by": "mia"
},
{
"article_slug": "json-basics",
"tag": "json",
"added_by": "raj"
},
{
"article_slug": "csv-vs-parquet",
"tag": "file-formats",
"added_by": "omar"
},
{
"article_slug": "json-basics",
"tag": "apis",
"added_by": "raj"
}
]Settings
- Group by: article_slug
- Concatenate values from: tag
- Separator: ", "
- Order values within group by: tag, Ascending
- Output column name: tags
Result
| article_slug | tags |
|---|---|
| csv-vs-parquet | csv, file-formats, parquet |
| json-basics | apis, json |
Five rows become two, one per article. Only the group column and the new tags column are kept, so added_by is dropped. Tags are sorted A to Z inside each cell because tag was chosen as the ordering column. The output rows themselves are sorted by article_slug. Without an ordering column, the tags would still be joined, but their order inside each cell is not guaranteed.
Working with JSON files
Each top-level key becomes a column you can group by or concatenate. Objects that are missing the value key contribute nothing to their group, because a missing key loads as NULL and NULLs are skipped. Objects missing the group key are collected together in a single group whose key is null, and that group is listed last. The group key keeps its JSON type in the output, so a numeric user_id is still written as a number, not a quoted string. Key order inside the source objects has no effect on the result.
The result is written as a JSON array with two keys per object: the group key and the joined string. The joined value is a string, not a JSON array, so ["apis", "json"] is written as "apis, json". If you need a real array for an API payload, this tool is the wrong shape. Numbers and booleans in the value column become text, so true is joined as "true". Nested objects are rendered in a bracketed text form, so extract the field you need before grouping.
Frequently Asked Questions
Does group concatenate produce a JSON array of values?
No. It produces one delimited string per group, such as "apis, json". To keep values as an array, use the SQL workspace with list() instead of string_agg().
What happens to JSON objects that do not have the group key?
They are grouped together under a null key. That group appears as the last row, with "article_slug": null or similar.
Which columns are kept in the output?
Only the group-by column and the new concatenated column. Every other column is dropped, because the result has one row per group. With no grouping, the output is a single row with a single column.
Are NULL values included in the joined string?
No. NULLs are skipped. If every value in a group is NULL, the joined cell for that group is NULL rather than an empty string.
Can I use a newline as the separator?
Yes. Type \n in the separator box and each value goes on its own line. \t inserts a tab. To join with a real backslash, type \\ for each backslash you want.
Related Tools
Split Column in JSON Files Online
Split a column into multiple columns by delimiter in JSON files directly in your browser. Turn "First Last" into separate first and last name columns — no upload required.
Find & Replace in JSON Files Online
Find and replace text values in JSON files directly in your browser. Supports plain text and regex patterns across any column — no upload required.
Sort JSON Files Online
Sort JSON files by any column, ascending or descending, directly in your browser.
Group Concatenate CSV Files Online
Concatenate text values within each group in CSV files directly in your browser. Group rows by a column and join the values of another column into a single delimited string — no upload required.
Group Concatenate Excel Files Online
Concatenate text values within each group in Excel files directly in your browser. Group rows by a column and join the values of another column into a single delimited string — no upload required.
Group Concatenate Parquet Files Online
Concatenate text values within each group in Parquet files directly in your browser. Group rows by a column and join the values of another column into a single delimited string — no upload required.
JSON Viewer Online
View and inspect JSON files directly in your browser. Browse rows, check column names and data types — no upload required, your data stays on your device.
Convert JSON to Parquet Online
Convert JSON files to Parquet format directly in your browser. No upload required — your data never leaves your device.