Pull data out of an Excel file into JSON, CSV or TSV without installing anything
You have an Excel file (`.xlsx`, the modern format Excel has used since 2007) and you want clean data for your app, database or script. Opening Excel, copy-pasting, fighting the formatting? That is half an hour gone. Excel turns ZIP codes into numbers (`02345` becomes `2345`), shows dates as serial numbers (`44927` instead of `2023-01-01`), and mangles UTF-8 the moment you save as CSV.
Drop your file on the left and you get every sheet at once in three formats: JSON (an array of objects, the first row becomes the keys), CSV (RFC 4180 compliant, with proper quote escaping) and TSV (tab-separated, ready to paste into Excel or Google Sheets). Pick the sheet from the tab bar, switch the format, copy or download.
Conversion runs on our server (the parser is too heavy to ship into every page) and your file is never persisted to disk or to any database. The cap is 10 MB per file, 50 sheets per workbook, and 10,000 rows per sheet, which covers virtually every business report.
How to use it
- Drag a `.xlsx` file onto the upload area, or click and pick from disk. The modern Excel format (anything saved by Excel 2007 or newer) is fully supported.
- Wait 1-2 seconds while the server parses the workbook and the results panel appears. Bigger files (a few MB, many sheets) take up to 5 seconds.
- Pick the sheet in the tab bar at the top. The small number next to each name is the row count for that sheet (excluding the header row, when that toggle is on).
- Pick the output format: `JSON` (array of objects, keys taken from the first row), `CSV` (comma-separated, fields quoted only when needed), or `TSV` (tabs, perfect for pasting back into a spreadsheet).
- First row is header (default ON): the first row becomes the JSON object keys (`name`, `email`, `amount`). Turn it off when your sheet has no header row; you will get `col1`, `col2`, ... instead.
- Parse dates as ISO (default ON): cells that Excel marks as dates are translated to ISO 8601 (`2023-01-15T00:00:00.000Z`). Turn it off if you would rather see the literal text as it appeared in Excel.
- Copy the result with one click or download as a file. The filename is the sheet name plus today's date, so back-to-back exports do not overwrite each other.
When this is useful
Six situations where this converter replaces an hour of wrestling with Excel:
- Importing data from a spreadsheet into a web app. A client sent a product list as `.xlsx` (1500 rows, 12 columns). Your endpoint only takes JSON. You drop the file, copy the JSON of the active sheet, paste into your importer. Two minutes instead of writing an Excel parser on the backend.
- Pulling data out of accounting reports. You get a sales report from an ERP system as `.xlsx` with 5 sheets (one per region). Convert all of them at once, copy the CSV per sheet, load into your data warehouse via `COPY FROM`.
- Migrating data between systems. An old CRM exports contacts as .xlsx, the new one imports JSON over its API. Convert a thousand records in a second, verify dates are ISO in the preview, push via `fetch POST`.
- Working with Google Forms responses. You download the responses as Excel, but you want to analyse them in Python or Jupyter. Export to CSV, load with `pandas.read_csv()`, no `openpyxl` install required.
- Building test fixtures from real data. You have sample data in Excel (from a client, from an analyst). Your tests expect JSON. Convert, copy, paste into `fixtures.json`, no manual transcription.
- Exporting invoices into an accounting system. The invoicing tool emits `.xlsx`, the accounting tool ingests TSV. Convert, paste into the importer, done. Tabs do not collide with commas in line-item descriptions.