Paste cells copied from Excel or Google Sheets, or open a .tsv file, and get clean JSON instantly. Choose an array of objects, an object keyed by an ID column, an array of arrays or column arrays, with numbers, booleans and empty cells typed the way your code expects.
Last updated:
Paste cells copied from Excel or Google Sheets. Everything runs in your browser.
Tip: select cells in a spreadsheet, press Ctrl+C (⌘C), then paste here.
Columns & detected types
Advertisement
Advertisement
How to use the TSV to JSON Converter
Paste your data: select cells in a spreadsheet, copy, and paste them into the TSV box, or open or drop a .tsv file.
Choose the output shape: an array of objects suits most APIs; a keyed object lets you look rows up by ID.
Set the typing options: detect numbers and booleans, decide what empty cells become, and nest dotted headers if you need nested objects.
Check the column list to confirm each column got the type you expect.
Copy or download the JSON.
The four JSON shapes, side by side
For a two-row table with the header id, name, active, each output shape looks like this:
Tip: if a spreadsheet shows formatted numbers such as 1,234.50, change the column format to plain numbers before copying, or the values arrive as text. Dates are always kept as the text you see, because JSON has no date type; ISO dates like 2025-01-20 are the easiest to parse later.
How do I convert Excel or Google Sheets data to JSON?
Select the cells including the header row, copy them, and paste into the input box. Spreadsheets put tab characters between cells when you copy, so the data arrives as TSV and is converted to JSON immediately, with the header row used as the property names.
What is the difference between TSV and CSV?
Both are plain-text tables with one row per line. TSV separates values with a tab character and CSV with a comma. Because tabs rarely occur inside real data, TSV usually needs no quoting, which is why spreadsheets use it for the clipboard.
Why are some numbers kept as text?
Values with a leading zero, such as ZIP codes (01234) or product codes (007), stay strings so the zeros are not lost. Integers larger than 9,007,199,254,740,991 also stay strings because JavaScript numbers cannot store them exactly. Untick Detect numbers & booleans to keep every value as a string.
What does the keyed object output do?
It turns the rows into one object where each row is stored under the value of the column you pick, for example {"1": {"name": "Ada"}}. This makes lookups by ID easy. If the key column has duplicate values, later rows replace earlier ones and you are warned.
How do I get nested JSON from flat columns?
Name your columns with dots, for example address.city and address.zip, and tick Nest dotted headers. Those columns become an address object with city and zip properties.
What happens to cells that contain line breaks?
When a spreadsheet copies a cell that contains a line break, tab or quote, it wraps the cell in double quotes. With Spreadsheet quotes ticked, those cells are read back as one value, line breaks included. Untick it if your file uses quote characters literally.
Is my data uploaded?
No. Parsing and conversion run entirely in your browser, so the data you paste or open never leaves your device.
Are all the tools on FreeToolCabin tested for quality and accuracy?
Yes! Every tool on our site undergoes automated Q/A testing in real browser environments to ensure high precision, correct output, and zero errors. If you happen to spot a bug or have a suggestion, please contact us at [email protected] and our team will review it right away.