Excel and CSV converter

Move tables between Excel, CSV, JSON, Markdown and HTML. Open a file or paste cells from Excel, choose the output and download a clean file that opens correctly everywhere.

Your files never leave your device. Everything runs in your browser.

How it works

  1. Add your tableOpen an .xlsx, .csv or .json file, or paste cells copied from Excel or Google Sheets.
  2. Choose the outputPick Excel, CSV, JSON, Markdown or HTML. For CSV you can also choose the separator.
  3. Download or copyCheck the preview, then download the file or copy the text.

One table, every format

Marketplaces want CSV, accountants want Excel, developers want JSON and documentation wants Markdown. This converter reads a table in one of these formats and writes it in another without changing the data.

The Excel files it creates are real .xlsx workbooks with a bold header row that stays visible while scrolling, readable column widths and numbers stored as numbers, so sums and filters work right away.

No broken characters, no lost zeros

CSV files are saved with a marker that tells Excel to read them as UTF-8, so letters like é, ñ, ü and ğ open correctly. Barcodes, phone numbers and postal codes that start with zero are kept as text so no digits disappear.

Choose a semicolon separator if your Excel uses a comma as the decimal sign, which is common in German, French, Spanish and many other European settings.

Frequently asked questions

Are my files uploaded?

No. Reading and writing happen in your browser. Your files are not sent to our servers.

Can I convert old .xls files?

Old .xls files are not supported. Open them in Excel or LibreOffice and save them as .xlsx first.

What if my workbook has several sheets?

A sheet selector appears after you open the file. Pick the sheet you want and it is converted immediately.

Are formulas kept?

The converter uses the last calculated values that are saved in the file. Formulas themselves are not copied.

How is nested JSON handled?

Nested objects are flattened into columns like address.city, so every value gets its own column.