Documentation
Everything you need to convert spreadsheets to JSON.
Getting Started
- Open any Google Sheet
- Go to Extensions > Sheets to JSON > Open Converter
- The sidebar will appear on the right
Output Formats
Array of Objects
Converts each row into a JSON object using the first row as keys.
| name | age | city |
|---|---|---|
| John | 30 | NYC |
| Jane | 25 | LA |
[
{ "name": "John", "age": 30, "city": "NYC" },
{ "name": "Jane", "age": 25, "city": "LA" }
] Array of Arrays
Converts the sheet into a raw 2D array, including headers.
[ ["name", "age", "city"], ["John", 30, "NYC"], ["Jane", 25, "LA"] ]
Nested JSON
Create nested objects and arrays using special header notation.
Dot Notation (Nested Objects)
Use . to create nested objects.
| name | address.street | address.city |
|---|---|---|
| John | 123 Main St | NYC |
[
{
"name": "John",
"address": {
"street": "123 Main St",
"city": "NYC"
}
}
] Deep Nesting
Chain multiple dots for deeper nesting: address.geo.lat
{
"address": {
"geo": { "lat": 40.7128, "lng": -74.006 }
}
} Bracket Notation (Arrays)
Use [0], [1], etc. to create arrays.
| name | tags[0] | tags[1] |
|---|---|---|
| John | developer | designer |
[
{ "name": "John", "tags": ["developer", "designer"] }
] Arrays of Objects
Combine brackets and dots: items[0].product
{
"items": [
{ "product": "Apple", "price": 1.5 },
{ "product": "Banana", "price": 0.75 }
]
} Type Inference
When enabled, automatically converts string values to appropriate types.
| Cell Value | Converted To | Type |
|---|---|---|
| 123 | 123 | number |
| 45.67 | 45.67 | number |
| true | true | boolean |
| 2024-01-15 | "2024-01-15T00:00:00.000Z" | ISO date |
| (empty) | null | null |
Type Inference ON
{ "count": 42, "active": true } Type Inference OFF
{ "count": "42", "active": "true" } Examples
Contact List
| name | phone | |
|---|---|---|
| John Doe | john@example.com | 555-1234 |
[
{
"name": "John Doe",
"email": "john@example.com",
"phone": "555-1234"
}
] Product Catalog
| id | name | price | category.main | inStock |
|---|---|---|---|---|
| 1 | Laptop | 999.99 | Electronics | true |
[
{
"id": 1,
"name": "Laptop",
"price": 999.99,
"category": { "main": "Electronics" },
"inStock": true
}
] Tips
- Header names become JSON keys — Keep them simple, no spaces recommended
- Empty cells become null — When type inference is enabled
- First row is always headers — In Array of Objects mode
- Preview first — Always preview before downloading to verify structure
- Array indices start at 0 — Use [0], [1], [2], etc.
FAQ
What's the maximum sheet size?
No hard limit. Processing happens in your browser, so very large sheets may take a few seconds.
Can I export multiple sheets?
Currently exports the active sheet only. Switch sheets and export separately.
Why are my numbers showing as strings?
Make sure "Infer data types" is checked before generating preview.
How do I create an empty array?
Leave all array index cells empty — they will be omitted from output.