Turn delimited files (or JSON) into a real .xlsx workbook, right in your browser
Quick answer: to convert CSV to Excel, paste the file's text above (or pick the file), leave the delimiter on auto-detect, and click Convert to Excel. You'll download a genuine .xlsx with a header row, typed numbers, and leading zeros preserved. Unlike opening a CSV in Excel directly, nothing gets mangled into dates or stripped zeros, and your data never leaves the browser.
| CSV | XLSX | |
|---|---|---|
| What it is | Plain text, one table | Zipped XML package |
| Data types | None — everything is text | Real numbers, dates, strings, formulas |
| Row limit | None in the format (parser-dependent) | 1,048,576 rows per sheet |
| Column limit | None in the format | 16,384 columns (ends at XFD) |
| Sheets | One per file | Multiple sheets per workbook |
| Leading zeros, long IDs | Preserved (it's just text) | Preserved if written as text cells |
| Formatting, formulas | Impossible | Full support |
| Typical size for the same data | Larger (uncompressed) | Smaller (zip compression) |
The classic failure mode: double-clicking a CSV lets Excel guess types, turning 00712 into 712 and 3-4 into a date. Converting deliberately, with text cells where they matter, avoids the damage permanently.
Under the hood this is a small pipeline: read the text, sniff the delimiter, parse rows with full quote handling, type the values, and hand the matrix to ExcelJS to build a proper OOXML workbook that Excel, Numbers, Google Sheets, and LibreOffice all open natively.
On auto-detect, the parser counts commas, semicolons, tabs, and pipes in the first line and picks the most frequent. European exports that use semicolons because the comma is a decimal separator just work, as do TSVs from databases and pipe-delimited legacy feeds. If a file was hand-tampered with, force a delimiter manually.
Fields wrapped in double quotes can contain the delimiter, line breaks, and escaped quotes (""), and the parser handles all three — that's what makes "Nguyen, Lin" one cell instead of two. For typing, values that look like plain numbers (94500, -3.14) become number cells so Excel can sum them; anything with a leading zero, dashes, or mixed content stays text so identifiers survive.
Paste CSV text or choose a file, confirm the delimiter and sheet name, and convert. You'll see a preview of the first rows and a row/column/cell count before the .xlsx downloads. The JSON tab uses the same engine: give it an array of objects and the keys become the header row.
Take this seven-line CSV (one header plus six employees, four columns):
name,department,salary,start_date"Nguyen, Lin",Engineering,94500,2021-03-15Diaz,Sales,61800,2019-11-02Kowalski,Engineering,101300,2018-06-20Osei,Marketing,72500,2023-01-09"Smith Jr., Al",Support,52900,2022-08-29Petrov,Sales,67900,2020-02-14
The parser sniffs a comma delimiter, splits it into 7 rows × 4 columns = 28 cells, keeps "Nguyen, Lin" and "Smith Jr., Al" as single cells despite the commas, writes the salary column as numbers (so =SUM(C2:C7) gives 450,900), and leaves the ISO dates as text. The output workbook has one sheet, a bold header, and the rest is Excel history.
Paste the CSV text (or choose the file) above, pick a delimiter or leave it on auto-detect, and press Convert to Excel. You get a real .xlsx workbook with typed number cells. Excel itself can also do this via Data > From Text/CSV, which opens an import wizard for the same result.
Excel guesses types when opening a CSV directly and turns 00712 into 712, or 1-2 into a date. This converter writes ZIP codes and ID strings as text cells and only true numbers as numbers, so 00712 stays 00712. If you must open the CSV in Excel directly, rename it to .txt first and use the import wizard, which lets you mark columns as text.
No. Parsing and workbook generation run entirely in your browser with ExcelJS, and the download link is created from a local blob. Nothing is sent to a server, which matters for customer lists, financial exports, and anything else you wouldn't paste into a random web form.
European locales often export CSV with semicolons because the comma is the decimal separator. The auto-detect here counts delimiters in the first line and picks the winner, so a semicolon file just works; you can also force ;, tab, or pipe manually.
CSV is plain text: one table, no types, no formatting, values separated by a delimiter. XLSX is a zipped XML package holding typed cells, formatting, formulas, and multiple sheets. CSV has no practical row limit; an XLSX sheet tops out at 1,048,576 rows by 16,384 columns (column XFD).
Yes, the second tab takes an array of JSON objects, uses the keys of the first object as the header row, and writes one row per object. Nested objects and arrays become JSON strings in their cell, and missing keys become empty cells so ragged data still lines up.