Klaviyo's importer chokes on bad headers, mixed delimiters, typo'd emails, and duplicates, and tells you after the upload. This checks and fixes your file first: auto-maps columns to Klaviyo's import names, catches invalid and typo'd emails, dedupes, and hands back a clean file plus a rejects file.
⚷ your file never leaves this browser tab, nothing is uploaded anywhereEverything runs locally in your browser. No Klaviyo API key needed, no upload, works with files up to about 30 MB.
We matched your headers to Klaviyo's import columns. Fix any we got wrong; unmapped columns become custom properties (or get dropped).
What we found and fixed. The first 25 cleaned rows are previewed below, free.
Two files: the cleaned CSV with Klaviyo-ready headers, and a rejects CSV with the reason each row was dropped.
The unlock check sends only your sign-in, never your file or any row of it.
100% client-side: your file is parsed, cleaned, and rebuilt inside this browser tab and never uploaded to us or anyone. Not affiliated with Klaviyo.
Klaviyo's importer chokes on bad headers, typo'd emails and duplicates, and tells you after the upload. This checks and fixes your file first, entirely in your browser: auto-maps columns to Klaviyo's import names, catches invalid and typo'd emails, dedupes, and hands back a clean file plus a rejects file. Your file never leaves the tab.
It runs on your own Klaviyo data, in your browser session, against Klaviyo's official API. There is no middle layer holding your records and there is no migration to anywhere. You run it, you get the result, you carry on with your day.
It is a CSV, which is the point. Klaviyo will happily show you the numbers on a screen you cannot do anything with. This gives you the file, and the file goes wherever you need it.
The column names stay the same run to run, so if you build a Power BI report or a Sheets formula on top of it, re-running next month will not break what you built.
It will not touch anything you did not ask it to. It does not store your API key, it does not keep a copy of your data, and where an action cannot be reversed you get told that before you press the button, not after.
No. The key is held in memory for the length of the run and is gone when the tab closes. It is never written to our database and never appears in a log. You can revoke it in Klaviyo the moment you are done and nothing here breaks.
It is a plain CSV, so anything that reads a CSV will read it. Open it in Excel or Google Sheets, pull it into Power BI or Looker Studio, or load it into a warehouse table. The headers are clean and they do not change between runs, so a scheduled refresh will not break on you.
It streams the results as they arrive rather than holding everything in memory, and it respects Klaviyo's rate limits instead of hammering the API. Large accounts take longer, but they finish.
Yes, and you should. Every run starts with a preview of the exact records involved, and a CSV backup you can keep. Nothing is written until you say so.
Read the tool's own note above, because it differs by action. Where a change cannot be undone we say so plainly on the button itself rather than in the small print.
That is the whole question, and we do not have a good answer either. It is a gap that has been open for years, it is on the forums, and it never gets shipped. So we shipped it.