CSV vs XLSX for lead lists: which to use and what breaks

Updated July 22, 2026 · 4 min read

This looks like a trivial choice and then costs someone an afternoon. The short version: use XLSX when a human will open the file, use CSV when a machine will read it, and know the three or four ways each one damages lead data.

The short answer

XLSX preserves cell types, so a zip code stays “07030” and a phone number stays a string of characters rather than becoming a number. It handles accents without configuration, supports multiple sheets and formatting, and is what most people mean when they say “send me the spreadsheet”.

CSV is plain text: universally readable, tiny, diff-able, and the format almost every CRM importer and script prefers. It carries no type information at all, which is exactly the problem.

The four things that break, and the fixes

  1. 1

    Leading zeros disappear from zip codes

    Open a CSV in Excel and 07030 becomes 7030. The fix is to not double-click the file: use Data → From Text/CSV and set the zip column to Text during import. Or take the XLSX, where the type is already declared.

  2. 2

    Phone numbers become numbers

    A leading “+” gets stripped, and long numbers can flip to scientific notation. Same fix — import the column as Text. If you've already lost it, re-import rather than trying to repair.

  3. 3

    Accented characters turn to mojibake

    “Café Rösti” becoming something unreadable is a UTF-8 encoding mismatch. Import with UTF-8 explicitly selected. Google Sheets gets this right by default via File → Import → Upload; older Excel on Windows sometimes doesn't.

  4. 4

    A comma inside a field splits the row

    Business names and addresses contain commas constantly. Properly written CSVs quote those fields, and properly written readers respect the quoting — but a naive split-on-comma script will shred the file. If your rows suddenly have the wrong number of columns, this is why.

Choosing per destination

For a client, a colleague or your own review: XLSX. Freeze the header row and you're working immediately.

For a CRM or email-sending platform: CSV, because their importers expect it, and because you'll be mapping columns manually anyway — a mapping step where you can set the phone and zip columns to text.

For a script or data warehouse: CSV, or skip files entirely and pull from the REST API, which returns structured data with types intact and no encoding negotiation. Hubertino exports both formats from the same job, so this isn't a decision you make before scraping.

Two habits that prevent most of the pain

Keep an untouched copy of the original export. Once someone has opened, autocorrected and saved a CSV in Excel, the damage is baked in and invisible.

And spot-check three rows after every import — one with an accent in the name, one with a leading-zero zip, one with an international phone number. Thirty seconds, and it catches every failure above.

Common questions

Which format does the export default to?

Both are available for the same job — XLSX and CSV, one business per row, 38 columns. Download whichever the destination wants, or take both.

Is there a row limit?

Excel's worksheet limit is a little over a million rows, which no realistic local lead list approaches. CSV has no inherent limit, but very large files are better handled by the API than by a spreadsheet.

More guides: What is a Google place ID (and CID), and why keep it? · How fast local business data goes stale, and how to refresh it · Google Maps scraping and GDPR: a practical B2B overview · Zip-code scraping: why one city search misses most of the market

Try it on your own niche

Start free with 100 credits — enough for a real lead list. No card required.

Start free with 100 credits