Meta Ads CSV Normalizer

Meta Ads Manager exports label the same metric differently depending on the report template, breakdown, and currency you export with: 'Campaign name' vs 'Campaign', 'Amount spent (USD)' vs 'Amount spent (EUR)', 'Link clicks' vs 'Clicks (all)', 'CTR (all)' vs plain 'CTR'. This tool detects those variants and remaps everything onto one stable schema (Campaign, AdSet, Ad, Spend, Reach, Impressions, Clicks, CTR, Results), normalizing currency-prefixed spend values along the way. Columns it doesn't recognize, like Frequency or Quality Ranking, stay visible with a dropdown so you can map them yourself. Everything runs in your browser; your ad account data stays on your device.

PrivateFreeWorks offline

Reviewed by Vincenzo Manto, Founder & Lead Developer · Last updated September 27, 2026

How it works

  1. 1

    Paste your Meta Ads Manager CSV export, or upload the .csv file.

  2. 2

    Review the auto-detected column mapping - each source column is matched to a target field like Campaign, Spend, or Results.

  3. 3

    Override any guess with the dropdown, including columns the tool didn't recognize (map them to a field or leave as 'ignore').

  4. 4

    Copy or download the normalized CSV with clean headers and consistent number formatting.

Why Meta Ads Manager CSV column names keep changing

Meta Ads Manager builds each CSV export from whichever columns and breakdowns you had visible in the reporting table, and appends the ad account's currency code to spend-related headers. Two exports from the same account taken a month apart, one with an age-and-gender breakdown and one without, can end up with a different column count and different header text for the same underlying metric.

One schema for every export

This tool matches known Ads Manager header variants to a fixed schema (Campaign, AdSet, Ad, Spend, Reach, Impressions, Clicks, CTR, Results) and normalizes currency formatting along the way, so a CSV exported from a USD account and one from a EUR account land in the same shape for side-by-side comparison.

Frequently asked questions

Why does my Meta Ads Manager export have different column names each time?

Ads Manager's column names depend on the report template you pick, the breakdowns you add, and the ad account's currency - so 'Amount spent (USD)' becomes 'Amount spent (EUR)' for a euro account, and 'Clicks (all)' can appear instead of 'Link clicks'. This tool recognizes the common variants automatically.

Does it handle different currencies in the spend column?

Yes. It strips the currency symbol or code and normalizes the decimal/thousands separators, so "$245.30" and "245,30 €" both become a plain "245.3".

What happens to columns it doesn't recognize, like Frequency or Quality Ranking?

They stay listed in the mapping table with a dropdown defaulted to 'ignore' - you can manually assign any of them to a target field if the auto-detection missed it, or leave them out of the normalized output.

Is my Meta ad account data uploaded anywhere?

No. Parsing and remapping happen in your browser using JavaScript, so your CSV never leaves your device.

What does the Results column map to across different objectives?

Ads Manager already labels its objective-specific result column 'Results' regardless of whether the objective is conversions, leads, or engagement, so this tool maps any column literally named 'Results' straight through.

Related tools