Three formats, endless confusion. We cut through the noise: when CSV wins, when Excel is the right call, and why TSV is the unsung hero of data pipelines that nobody talks about.

The short answer

If you're sending data to another person or importing into a web tool: use CSV. If your data has commas inside it (addresses, notes, descriptions): use TSV. If you need formatting, formulas, or multiple sheets for a non-technical audience: use XLSX.

Everything below explains why.

CSV: the reliable workhorse

CSV stands for Comma-Separated Values. Every row is a line of text. Fields are separated by commas. Headers are the first row. That's the entire spec — no binary encoding, no proprietary format, no version numbers.

This simplicity is both CSV's greatest strength and its most misunderstood weakness. Because there's no official standard (RFC 4180 exists but isn't universally followed), different programs produce slightly different CSVs. Some wrap every field in quotes. Some don't quote anything. Some use \r\n line endings, some use just \n. Excel on Windows uses a different default delimiter than Excel on Mac in some locales.

In practice, modern CSV parsers handle all of this gracefully. The format is durable.

When to use CSV

  • Importing contacts into any CRM (Salesforce, HubSpot, Zoho, Mailchimp)
  • Moving data between different systems
  • Anywhere you need a file a developer can open with any text editor
  • Data that will be processed by scripts or pipelines
  • Archiving — CSV files from 1985 still open today

The comma problem

CSV breaks down when your data contains commas. An address field like 123 Main St, Suite 400 will look like two fields unless it's wrapped in quotes. Well-formed CSV handles this by quoting the field: "123 Main St, Suite 400". Most exporters do this automatically. But if you're building a CSV manually or your exporter is sloppy, it's a silent bug that's annoying to track down.

TSV: better for messy data, worse for compatibility

TSV is Tab-Separated Values. Same idea as CSV, but tabs as delimiters instead of commas.

The immediate advantage: tabs almost never appear naturally in data. An address, a company name, a phone number, a product description — none of them will contain a tab character. So you rarely need to quote fields, and the parsing is cleaner.

When to use TSV

  • Data that frequently contains commas (addresses, product descriptions, notes)
  • Internal data pipelines where you control both ends
  • Exporting from databases — PostgreSQL's \copy and MySQL's SELECT INTO OUTFILE default to tab-separated
  • Log file formats

The compatibility problem

The downside of TSV is that fewer tools recognize it by default. Excel will open a TSV file if you rename it .txt and use the import wizard — but it won't just double-click open correctly like CSV does. Many web-based CRM import tools only accept CSV. For anything going to a non-technical audience or an external system, CSV is safer.

XLSX: more than a spreadsheet

XLSX is Excel's modern format (introduced in 2007, replacing the binary .xls format). Under the hood it's a ZIP file containing XML — which is why you can rename a .xlsx file to .zip and browse its internals.

The key differences from CSV and TSV:

  • Multiple sheets — a single XLSX file can contain multiple distinct datasets
  • Data types — dates stay as dates, numbers stay as numbers, booleans stay as booleans. CSV stores everything as strings.
  • Cell formatting — colors, bold text, column widths, number formats
  • Formulas — calculated cells
  • Charts — embedded visualizations

All of this comes at a cost: XLSX files are larger, require a library to read programmatically (like SheetJS or openpyxl), and are overkill for plain data transfer.

When to use XLSX

  • Sending a report to a colleague who needs to edit it in Excel
  • Data that needs precise date or number formatting preserved
  • When you need multiple related datasets in one file
  • Anything that will be viewed in Excel by a non-technical person

Side-by-side comparison

FeatureCSVTSVXLSX
Universally supported✓ YesMostlyExcel required
Human-readable✓ Yes✓ YesNo (binary)
Multiple sheetsNoNo✓ Yes
Data types preservedNoNo✓ Yes
Handles commas in dataWith quoting✓ Naturally✓ Yes
File size (same data)SmallSmallLarger
CRM import support✓ UniversalLimitedSome
Developer-friendly✓ Yes✓ YesNeeds library

How each format handles the same edge cases

Understanding the format differences gets more concrete when you look at specific data types that cause problems.

Phone numbers and ZIP codes with leading zeros

The value 07030 is a ZIP code, not the number 7030. In CSV, it's stored as the text string 07030 — the leading zero is there in the file. The problem happens when Excel opens the CSV: it sees an unquoted string of digits and interprets it as the number 7030. The leading zero disappears permanently when you save back to CSV.

In TSV, same behavior — stored correctly as text in the file, but Excel strips the leading zero on open.

In XLSX, you can format the column as "Text" before entering data, which tells Excel to treat the values as strings and preserve leading zeros. This is one of XLSX's genuine advantages for data that looks numeric but isn't: phone numbers, product codes, account numbers.

When using CSV for such data, the defensive move is to quote the values: "07030" in the CSV file. A properly written CSV parser will treat quoted values as text strings. Excel's CSV parser does respect this when the field is explicitly quoted — but only at import time, not after you've opened and saved the file.

Multiline text fields

What happens when a cell value contains a newline character? This comes up with address lines, notes fields, and any free-text content.

CSV handles this with quoted fields. If a value contains a newline, the entire value must be wrapped in double quotes. A properly written CSV parser handles this correctly and treats it as a single field even though it spans multiple lines in the file. Many naive CSV parsers (and text editors doing find-and-replace) don't handle this correctly, treating each line as a new row.

TSV has the same issue. XLSX handles it natively — multiline content in a cell is just a cell with newlines, no special encoding required.

If your data contains a lot of multiline content (notes, descriptions, addresses), XLSX is technically more robust. For most tools and pipelines that consume the data downstream, CSV with proper quoting works fine — but you need to verify your parser handles quoted multiline fields.

Large numbers and precision

CSV and TSV store numbers as text strings, so there's no precision loss — 1234567890123456 stays exactly that in the file. XLSX stores numbers as IEEE 754 64-bit floats, which gives you 15–17 significant decimal digits of precision. A 16-digit number like a credit card number or a large database ID stored in an XLSX cell might silently lose precision in the last digit or two.

For numeric identifiers with 15+ digits, CSV is actually the safer format than XLSX.

Format choice by use case

Use caseBest formatWhy
CRM import (Salesforce, HubSpot)CSVUniversal support, smaller file size
Email marketing (Mailchimp, Klaviyo)CSVRequired format for most email tools
Database bulk loadCSV or TSVTSV if data has commas; CSV otherwise
Sending to non-technical stakeholdersXLSXOpens in Excel without configuration
Data with lots of commas in valuesTSVAvoids delimiter conflicts
Preserving number formattingXLSXColumn types are stored explicitly
Large files (>50 MB)CSVMuch smaller than XLSX for same data
API / JSON pipeline inputCSVEasier to parse programmatically

Converting between formats

CSV Splitter Online's Convert tab handles all three directions without uploading your file anywhere. Drop your file, pick the output format, download. The whole thing takes about five seconds. Numbers and dates are preserved when converting from XLSX to CSV — which Excel notoriously does not do well when you use File → Save As.

For command-line conversion, Python with pandas is the cleanest approach:

import pandas as pd

    # XLSX → CSV (preserves dates as ISO strings)
    df = pd.read_excel('data.xlsx')
    df.to_csv('data.csv', index=False)

    # CSV → TSV
    df = pd.read_csv('data.csv')
    df.to_csv('data.tsv', sep='\t', index=False)

    # CSV → XLSX
    df = pd.read_csv('data.csv', dtype=str)  # keep as strings to preserve leading zeros
    df.to_excel('data.xlsx', index=False)

Excel's date trap. When Excel saves a spreadsheet as CSV via File → Save As, it converts dates to whatever display format is set on your computer. A date stored as a proper date object becomes "6/12/2025" or "12-Jun-25" or "2025-06-12" depending on your locale — destroying date sorting and database imports. CSV Splitter Online and pandas both convert dates to ISO 8601 (YYYY-MM-DD), which is universally parseable.

Need to convert or split your file?

All three formats supported. Nothing uploaded to any server.

Try CSV Splitter Online free →

Frequently asked questions

Can Excel open TSV files?

Yes, but not automatically. If you rename a TSV file to .txt and open it in Excel, the Text Import Wizard will appear and you can select "Tab" as the delimiter. Alternatively, use CSV Splitter Online to convert TSV to CSV or XLSX first.

Does CSV preserve leading zeros?

No — this is a classic gotcha. If you have a field like a ZIP code 07030, CSV stores it as the text string "07030". But when Excel opens the file, it interprets unquoted numeric strings as numbers and drops the leading zero, showing 7030. The fix is to either quote the field in the CSV (which tells Excel to treat it as text) or use XLSX with that column formatted as Text.

Which format should I use for Python pandas?

CSV is the default for pandas and works perfectly for most use cases. Use pd.read_csv(). For XLSX, use pd.read_excel() with the openpyxl engine. TSV works with pd.read_csv('file.tsv', sep='\t'). CSV is generally faster to read for large files.

Ready to try it?

Use our free, browser-based CSV tools to apply what you've just learned — no upload, no signup.

Open Split CSV →