Maps your columns
Whatever the file calls them — “E-mail Address,” “fname,” “Company (Account)” — they come out labeled the way HubSpot's importer expects, so matching is automatic.
Tool Story
Turn any messy spreadsheet into a clean, import-ready HubSpot file.
See it
Prep a List — FreeThe problem
Every list that needs to get into HubSpot starts its life somewhere else.
A spreadsheet from an event. An export from another tool. A file someone built by hand, with the columns in whatever order made sense to them that day.
And every single one needs the same cleanup before it's safe to import. Rename the headers. Hunt the invisible trailing spaces. Find the duplicates. Deal with the row that has no email address and was going to error out anyway.
I've done that cleanup more times than I can count. Twenty minutes here, twenty minutes there, for years.
At some point I noticed it was always the same twenty minutes. So I built it once.
How to think about this problem
A bad import doesn't fail loudly. That's the trap.
HubSpot will accept your messy file. The import “succeeds.” And now the mess isn't in a spreadsheet anymore — it's in your CRM, where it's ten times harder to find and a hundred times harder to clean.
The duplicate becomes two versions of the same person, each getting your emails. The invalid address becomes a bounce that dings your sender reputation. The unmapped column becomes data that just… didn't come along.
None of it announces itself. You find out weeks later, in a report that doesn't add up.
So the moment to catch all of it is before the import, while the list is still just a file on your machine.
That's the whole idea here. Not a faster import — a checked one.
What it does
Upload any CSV or Excel list. Map the columns once. Download a file that's actually ready to import — and a separate tab of everything that wasn't, with the reason why.
What it checks
Whatever the file calls them — “E-mail Address,” “fname,” “Company (Account)” — they come out labeled the way HubSpot's importer expects, so matching is automatic.
The trailing space you will never spot in a spreadsheet. It gets trimmed from every cell, and the tool tells you exactly how many it caught.
Rows with a missing or malformed email are pulled aside before they can bounce, error out mid-import, or sit in your CRM as dead weight.
Same email twice in one file? The first row goes through. The rest get flagged — so you don't create two of the same person on import day.
Flagged rows aren't deleted. They export on their own tab with the reason they were flagged, so you can fix them and import the fixes.
Need the file broken out by region, owner, or any other column? Pick the column and the export builds one named tab per value.
Why it’s helpful
The answer to “is this file safe to import” used to be a person squinting at it. Now the checking is built into the tool itself.
Nobody has to remember the cleanup steps. Nobody has to be the one who knows. Anyone can run it.
When I would not use this
If your lists come out of one system, already clean, with the same headers every time — you don't need this.
But if lists come at you from everywhere, and “clean” depends on who built the file, the issue isn't effort. It's that the checking is manual, and manual checking gets skipped on busy days.
With your exact list types built in — your required fields locked, your values pre-filled, your formatting rules enforced so the critical columns are impossible to get wrong. The version of this tool your team can’t misuse.
Ask about a custom versionYour list stays on your machine. The file is read in your browser, cleaned in your browser, and downloaded from your browser. No upload, no server, no API key. A contact list is exactly the kind of file that shouldn’t be handed to a random website — so this tool never asks you to.
Under the hood
Pure browser-side Next.js. File parsing, cleaning, and Excel/CSV generation all happen locally. No API calls. No backend. No data leaves your browser.
See it
Prep a List — FreeFrequently asked questions
No. Your file is read, cleaned, and downloaded entirely in your browser. No API key, no upload, no server. Nothing leaves the page.
CSV and Excel (.csv, .xlsx, .xls) with a header row. Column names don't need to match anything — you map them in step two.
They're pulled aside, never deleted. The Excel export includes a Flagged tab with each row and the reason — missing email, invalid email, or duplicate — so you can fix them and import them separately.
Headers are renamed to HubSpot's standard import labels, whitespace is trimmed from every cell, and emails are lowercased. Everything else passes through untouched.
Related