Escape

JSON to Excel converter

Paste JSON and download a real workbook, where numbers stay numbers and dates stay dates. The same table comes as a PDF or CSV too. Your JSON never leaves this page.

Valid JSON · 2,441 characters

Valid JSON.

Parsed and rendered on this page

7 rows from $.data.orders[*], with 7 columns.

Columns

Drag to reorder, or Alt and an arrow key. Select a column to rename it, change its type or hide it.

orders.xlsx
Orders
IDDateCustomer nameCustomer countryStatusTotalItems
A-1001Sep 2, 2026Folio & SonsIEpaid$1,440.003
A-1002Sep 3, 2026Atelier VinkNLpaid$320.501
A-1003Sep 7, 2026Marlborough BooksIErefunded$89.992
A-1004Sep 11, 2026Atelier VinkNLpaid$1,600.001
A-1005Sep 15, 2026Papierfabriek DeckleNLpending$275.002
A-1006Sep 21, 2026Folio & SonsIEpaid$48.001
A-1007Sep 28, 2026Ledger & CoGBpaid$712.402
Total$4,485.89

The workbook has the same columns, with numbers, money, and dates as real cells you can sort and sum.

Run the same conversion from your own code

Every export on this page is a quario definition: the report.json in the panel. It names the rows and the columns, and says how to present each value. Store it with your code and render it with your data. You get the same workbook, PDF, or CSV from a server, a worker, or the browser.

{
  "data": "$.data.orders[*]",
  "style": {
    "family": "sans",
    "size": 9
  },
  "header": [
    {
      "type": "text",
      "value": "Orders",
      "style": {
        "family": "serif",
        "size": 15,
        "bold": true,
        "spaceAfter": 12
      }
    }
  ],
  "detail": {
    "columns": [
      {
        "header": "ID",
        "value": "{{ @.id }}"
      },
      {
        "header": "Date",
        "value": "{{ @.date }}",
        "style": {
          "format": "date"
        }
      },
      {
        "header": "Customer name",
        "value": "{{ @.customer.name }}"
      },
      {
        "header": "Customer country",
        "value": "{{ @.customer.country }}"
      },
      {
        "header": "Status",
        "value": "{{ @.status }}"
      },
      {
        "header": {
          "value": "Total",
          "style": {
            "align": "right"
          }
        },
        "value": "{{ round(@.total, 2) }}",
        "style": {
          "align": "right",
          "format": "currency"
        }
      },
      {
        "header": {
          "value": "Items",
          "style": {
            "align": "right"
          }
        },
        "value": "{{ count(@.items) }}",
        "style": {
          "align": "right"
        }
      }
    ],
    "header": {
      "style": {
        "family": "mono",
        "size": 7,
        "uppercase": true,
        "color": "#6b7a82",
        "paddingBottom": 3,
        "borderBottomWidth": 0.5,
        "borderBottomStyle": "solid",
        "borderBottomColor": "#cfd8dd"
      }
    },
    "row": {
      "style": {
        "paddingTop": 2,
        "paddingBottom": 2,
        "borderBottomWidth": 0.25,
        "borderBottomStyle": "solid",
        "borderBottomColor": "#e6ecef"
      }
    },
    "total": {
      "style": {
        "bold": true,
        "align": "right",
        "paddingTop": 5,
        "borderTopWidth": 0.75,
        "borderTopStyle": "solid",
        "borderTopColor": "#1e1f22"
      },
      "rows": [
        {
          "cells": [
            {
              "value": "Total",
              "span": 5
            },
            {
              "value": "{{ round($.total0, 2) }}",
              "style": {
                "format": "currency"
              }
            },
            {
              "value": ""
            }
          ]
        }
      ]
    }
  },
  "aggregates": {
    "total0": "sum:[email protected]"
  }
}

Questions

Is my JSON uploaded anywhere?
No. This page reads the text you paste or the file you open, and quario renders the preview and every download right here. Nothing you paste reaches a server.
What shape does the JSON need?
A list of objects, either at the top level or anywhere inside. When there are several lists, you choose which one becomes the rows. A nested object becomes columns such as customer.name, and a list inside a row becomes a count.
Do numbers and dates still work in Excel?
Yes. The workbook stores numbers, money, and dates as typed cells, so you can sort, filter, and sum them. It never writes a value as a formula.
Is there a size limit?
The preview shows the first 200 rows. Downloads include every row, up to what your browser can hold in memory.
Is it free?
Yes, with no sign-up. To generate these files from your own application, quario is free to evaluate, and a license covers each production deployment. See pricing.