Open Tools Tools Features Blog About Contact Proof of Privacy

Converting delimited text to a spreadsheet

Turning CSV or tab-separated text into a real spreadsheet file, without the type-guessing that mangles IDs and dates. Measured limits included.

HomeText to Excel › Converting delimited text to a spreadsheet

Where CSV came from, and why it is like this

CSV is barely a format. It is a convention — values separated by commas, rows separated by newlines — that was never properly standardised, which is why it is both universal and endlessly troublesome. There is no agreement on quoting, on how to escape a comma inside a value, on line endings, on character encoding, or even on the separator, since much of Europe uses a comma for the decimal point and a semicolon between fields.

XLSX is the opposite: a fully specified format, a ZIP archive of XML, in which every cell has a declared type. Converting is not just re-punctuation. It is committing to a decision about what each value is, and that is where the damage in a normal spreadsheet import happens.

Is this conversion lossy?

Nothing is lost from the characters — the conversion is exact in that sense. What changes is interpretation, and interpretation is where CSV imports go wrong.

The famous cases are all type-guessing. A product code like 00123 is read as the number 123 and the leading zeros are gone. A value like 1-2 becomes a date. A long numeric identifier is converted to floating point and the last digits turn into zeros. Gene names have been permanently renamed in biology because a spreadsheet decided SEPT2 was a date, which is a real and documented problem in published research.

These are not conversion errors. They are the destination software's helpfulness, applied to text that had no type information to begin with.

What happens to metadata, transparency and colour

Encoding is where files break. A CSV has no way to declare its character encoding, so accented characters, currency symbols and anything non-Latin depend on the reader guessing correctly. Guessed wrong, café becomes café. Writing a UTF-8 byte-order mark solves it and is what a browser-based conversion can do that a naive import often does not.

Quoting is the other break. A value containing the separator has to be quoted, and a quote inside a quoted value has to be doubled. Files that get this wrong shift every subsequent column on the affected row — visible immediately with text, invisible with numbers.

Formulas do not exist. A CSV holds values. Anything that looks like a formula is text.

Nothing else carries — no formatting, no column widths, no multiple sheets. A CSV is one table and nothing more.

Why people actually need this

An export from one system that has to go into another. Database dumps, analytics exports, bank statements, e-commerce order lists — CSV is the lingua franca of getting data out of software, and spreadsheets are where people actually work with it. The conversion is the crossing point.

The specific reason to do it deliberately rather than just opening the file is control over the separator and the encoding. A European CSV using semicolons opened by an English-locale spreadsheet lands entirely in column A; a UTF-8 file opened as Windows-1252 mangles every accent. Choosing explicitly avoids both.

What we measured

This conversion was run end to end before this page was written. Not "should work" — run, with the output checked:

Verification runResult
Source file usedtext-size-1mb.txt (1.0 MB)
Output produced2.2 MB
Output type reported by the browserapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Time to produce it576 ms

And the ceilings measured for Text to Excel, the tool that performs it, on the hardware described on the limits page:

Not tested

This page sets no size guard of its own, so what you see below is where the browser itself stopped.

When something else is the better answer

If the data will be read by a program rather than a person, leave it as CSV. Every language reads it, it diffs cleanly in version control, and it does not carry a spreadsheet's assumptions.

If the file is very large, a spreadsheet may be the wrong destination entirely — there are row limits, and analysis on hundreds of thousands of rows belongs in a database. Check the text-size row for this tool on the measured limits page before starting.

If the data contains identifiers that must keep their exact form — postcodes, product codes, anything with leading zeros — verify them after conversion. Type-guessing is the failure that matters here and it is silent.

Do it now: Text to Excel runs entirely in your browser — nothing is uploaded.

Related: Turning a screenshot of a table into a spreadsheet