Excel to CSV Converter

Convert .xlsx, .xls and .ods spreadsheets to CSV: pick the delimiter, preview any sheet, and download a properly quoted file.

Conversion happens locally in your browser. Your spreadsheet never leaves your device.

Spreadsheet to CSV

Click to choose a file or drag an .xlsx, .xls or .ods workbook here

How It Works

SheetJS reads the workbook's real cell grid right here in your tab, the same engine the Excel to JSON converter uses. The grid is then re-emitted as CSV by this page's own encoder, so the quoting rules are explicit and inspectable rather than whatever a given library defaults to.

Quoting, field by field
A cell is wrapped in double quotes only when it must be — when it contains the delimiter, a double quote, a line break, or leading/trailing spaces — and inner quotes are doubled per RFC 4180. Rows are separated by CRLF. That keeps the output readable to strict parsers and spreadsheet apps without cluttering clean cells with needless quotes.
Numbers, dates and blanks
Numbers come through as their stored values; dates are emitted as ISO-style text (YYYY-MM-DD, plus a time part when the cell carries one) instead of Excel serial numbers, and empty cells become empty fields. CSV has no type system, so re-imported files may reinterpret formats — a quick look at the preview confirms what your consumer will see.
One sheet at a time
Workbooks with several sheets get a selector; each conversion covers exactly one sheet, which keeps the output a flat table the way CSV demands. The BOM-prefixed download and the plain Copy output cover the two common consumers — Excel wants the BOM for UTF-8, scripts usually do not.

Frequently Asked Questions

Do you support .xlsx as well as .xls and .ods?

Yes. The modern zip-based .xlsx format, the legacy binary .xls workbooks and OpenDocument .ods files are all parsed locally by SheetJS, the reference open-source spreadsheet engine. Each sheet is read as a plain grid of values — formatting, colors and charts are ignored because CSV is a values-only format.

Which delimiter should I pick?

Comma is the default and what most scripts, databases and import tools expect. Choose semicolon if you will open the file in Excel on a locale where the comma is the decimal separator (most of continental Europe) — Excel there reads semicolon-separated files correctly by double-clicking them. Tab suits older spreadsheet and terminal tools. The delimiter changes re-encode instantly, so preview both if you are unsure.

How are quotes and line breaks inside cells handled?

Standard CSV quoting is applied: any field containing the delimiter, a double quote, or a line break is wrapped in double quotes, and embedded quotes are doubled. So a cell like She said "hi", loudly survives a round trip intact. Line endings are CRLF, matching the RFC 4180 convention most parsers expect.

Why does the downloaded file start with an invisible character?

The download is prefixed with a UTF-8 byte-order mark so Excel opens files containing accents, Cyrillic or CJK characters with correct encoding instead of mojibake. The Copy button outputs plain CSV without the BOM, which is what scripts and databases normally want. Remove or keep it depending on your consumer.

Is anything uploaded to a server?

No. The workbook is read with FileReader and parsed inside your browser tab; the CSV is built and handed back as a local blob download. The one-time load of the SheetJS library from its public CDN is the only network request involved — your file's contents never leave your device.