Free · UTF-8 BOM · No Watermark

Convert Excel to CSV Free

Upload an .xlsx or .xlsm file — we export the active sheet as a clean UTF-8 CSV with BOM, so Cyrillic, Chinese, Japanese, and all Unicode characters survive the trip into your database, Python script, or reporting tool.

Drop XLSX here

or

Choose XLSX

Converted on our server and returned immediately · Files are not stored · 20 MB max

Why your Excel-to-CSV conversion breaks (and how we fix it)

Cyrillic turns into Каталог

We write UTF-8 with BOM. The BOM (byte order mark, U+FEFF) tells Excel and most tools 'this file is UTF-8' before they read a single data byte. Without BOM, many programs guess the encoding wrong.

Leading zeros disappear (00123 → 123)

We export the raw cell value. If your Excel cell contains 00123 stored as text, it stays 00123 in the CSV. If it's stored as a number, Excel already dropped the leading zero before we see the file — nothing a converter can recover at that point.

Formulas export instead of values

We read the calculated value of every cell, not the formula string. If A1 shows 42, the CSV gets 42 — not =SUM(B1:B10).

Multi-line cell content breaks rows

Cells with embedded newlines are wrapped in double quotes with the newline inside. This is standard CSV quoting (RFC 4180) and every competent CSV parser handles it.

Delimiter choice matters more than you think

We use comma as the default delimiter. This is the right choice for most destinations: Python's csv module, PostgreSQL COPY, MySQL LOAD DATA, and pandas read_csv all expect commas out of the box.

But commas in your data break CSV unless properly quoted. If a cell contains "Smith, John", we wrap it in double quotes: "Smith, John". Every standards-compliant CSV parser understands this.

If your destination tool needs a different delimiter:

After downloading the CSV, open it in any text editor and replace all commas with your preferred delimiter (tab, semicolon, pipe). This is a 5-second find-and-replace. Or import into Excel/LibreOffice and re-export with your chosen delimiter.

Real workflows where Excel → CSV matters

Loading into a database

PostgreSQL COPY, MySQL LOAD DATA INFILE, and SQLite .import all eat CSV natively. Converting XLSX → CSV is the bridge from 'someone emailed me a spreadsheet' to 'data is in production.' Our BOM-aware UTF-8 output means Cyrillic product names and Chinese addresses import without mojibake.

Python / R / data analysis

pandas.read_csv() and R's read.csv() are the first line of most analysis scripts. Feed them our CSV and you skip the excel-reading dependency (openpyxl/xlrd). For large files, CSV also streams better than XLSX — you can process millions of rows without loading everything into RAM.

Merging spreadsheets from different sources

When Finance sends an XLSX and Operations sends a Google Sheets export as CSV, converting everything to CSV first gives you a uniform format for concatenation, diff, or deduplication.

Git version control for tabular data

XLSX is a ZIP of XML — git treats it as a binary blob, so every change is a full replacement. CSV is line-by-line diffable. Convert to CSV before committing if you want to see what actually changed between versions.