Bin Column in JSON Files Online
Bucket a numeric column in JSON files into labelled ranges — equal-width bins or custom edges. Runs entirely in your browser.
How to bin Column in JSON files
- Drop your file. The first numeric column is preselected, and the new column name defaults to its name plus _bin.
- Pick the column to bin. Only numeric columns are listed.
- Choose Equal-width bins and set how many (2 to 50, default 5), or choose Custom edges and type the break points separated by commas, without thousands separators.
- Choose Add as new column or Replace column, then click Bin column.
- Check the labels in the preview and download the file 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
A food delivery service wants to report how many orders arrived within 30 minutes, within an hour, within two hours, and later than that.
Input (JSON)
[
{
"order_ref": "D-8812",
"zone": "Northside",
"delivery_minutes": 22
},
{
"order_ref": "D-8813",
"zone": "Harbour",
"delivery_minutes": 45
},
{
"order_ref": "D-8814",
"zone": "Northside",
"delivery_minutes": 60
},
{
"order_ref": "D-8815",
"zone": "Airport",
"delivery_minutes": 135
},
{
"order_ref": "D-8816",
"zone": "Harbour",
"delivery_minutes": 30
}
]Settings
- Column to bin: delivery_minutes
- Binning mode: Custom edges
- Edge values: 0, 30, 60, 120
- New column name: delivery_minutes_bin
- Output: Add as new column
Result
| order_ref | zone | delivery_minutes | delivery_minutes_bin |
|---|---|---|---|
| D-8812 | Northside | 22 | < 30 |
| D-8813 | Harbour | 45 | 30 – 60 |
| D-8814 | Northside | 60 | 60 – 120 |
| D-8815 | Airport | 135 | ≥ 120 |
| D-8816 | Harbour | 30 | 30 – 60 |
Each range includes its lower edge and excludes its upper edge, so 30 falls in "30 – 60" and 60 in "60 – 120". Everything below the second edge is labelled "< 30", and the first edge, 0, does not appear in any label. Values at or above the last edge share "≥ 120". The labels are text, ready for Count by value.
Working with JSON files
JSON numbers load as BIGINT when every value is a whole number and as DOUBLE when any has a fraction, and both are listed. Numbers sent as strings, such as "delivery_minutes": "45", are text and are not listed until you cast the key to a number. A key with mixed kinds of values, such as numbers in most objects and "unknown" in a few, loads as the JSON type and is not listed either. Objects missing the key get null, and null values get a null label rather than a range.
The output JSON keeps every key and adds the label key as the last field of each object. With Replace column the numeric key is removed and the label key still goes last. Labels are JSON strings. The ≥ sign and the en dash are written as the characters themselves rather than \u escapes, and any JSON parser reads them.
Frequently Asked Questions
My JSON numbers are strings. Can I still bin them?
Not directly. Cast the key to DOUBLE or INTEGER with Cast Column Types, download the result, and bin that file.
Can I bin a nested JSON value?
Only top-level numeric keys are listed. Flatten the file first so the nested number becomes its own column.
Why does equal-width binning give me one more label than the number of bins?
The last edge is the column maximum, and values at or above the last edge get their own "≥" label. With 5 bins on values from 0 to 100 the labels are < 20, 20 – 40, 40 – 60, 60 – 80, 80 – 100 and ≥ 100, and only the maximum lands in the last one. For exactly N groups, use custom edges and put the last edge above the maximum.
What happens to empty values?
They stay empty. A NULL number gets a NULL label, so it is not counted in any range. Use Fill Nulls first if you want them in a range of their own.
How do I sort the bin labels in the right order?
The labels are text, so a plain sort puts "100 – 200" before "30 – 60". Sort by the original numeric column instead. Choosing Add as new column keeps that column in the file.
Related Tools
Count Values in JSON Files Online
Group and count rows by any column in JSON files directly in your browser. Sort by frequency or value to find the most common entries — no upload required.
Aggregate JSON Files Online
Group and aggregate JSON files by any column directly in your browser. Calculate sum, average, min, max, and count for any numeric column — no upload required.
Add Percent of Total to JSON Files Online
Add a percentage-of-total column to JSON files directly in your browser. Show each row's share of the grand total, or the share within each group — no upload required.
Bin Column in CSV Files Online
Bucket a numeric column in CSV files into labelled ranges — equal-width bins or custom edges. Runs entirely in your browser.
Bin Column in Excel Files Online
Bucket a numeric column in Excel files into labelled ranges — equal-width bins or custom edges. Runs entirely in your browser.
Bin Column in Parquet Files Online
Bucket a numeric column in Parquet files into labelled ranges — equal-width bins or custom edges. Runs entirely in your browser.
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.