Data Normalizer

Feature-scale the numeric columns of a CSV with min-max, z-score (standardization), or robust (median/IQR) normalization — choose the method, range, and columns. Runs entirely in your browser, nothing is uploaded.

Try:
Normalized CSV

Normalize the numeric columns of a CSV

Paste a CSV and this tool feature-scales its numeric columns locally in your browser — nothing is uploaded. Pick the normalization method that fits your data:

Only numeric columns are scaled — a column counts as numeric when every present value parses as a finite number. Text columns are copied through unchanged, and blank cells stay blank (they're excluded from the column's statistics).

Worked example

With the default Min-max method scaling to 01, this input:

name,height,weight
Alice,150,50
Bob,160,60
Carol,170,70

becomes:

name,height,weight
Alice,0,0
Bob,0.5,0.5
Carol,1,1

height runs 150170, so 160 sits halfway → 0.5; weight runs 5070, so 600.5. The name column is text, so it's copied through untouched.

FAQ

What is the difference between min-max, z-score, and robust scaling?

Min-max rescales a column into a fixed interval (like 01) based on its minimum and maximum, so outliers can compress the rest of the values. Z-score (standardization) shifts each column to mean 0 and divides by its standard deviation, giving unbounded values centered on zero. Robust scaling uses the median and interquartile range instead of the mean and stddev, so a few extreme values barely move the result — pick it when your data has outliers.

Which columns get normalized?

By default every numeric column. Type a comma-separated list under Columns to scale to restrict it — use header names (like height,weight) when the first row is a header, or 1-based indexes (like 2,3). Columns you don't list, and any text columns, are copied through unchanged.

How are blank cells and text columns handled?

A blank (empty or whitespace-only) cell stays blank and is left out of the column's minimum, maximum, mean, median, and IQR calculations. A column with any non-numeric present value is treated as text and copied verbatim — NaN and inf count as non-numeric, so a column containing them is not scaled.

What do range, ddof, and the robust toggles do?

Range minimum / maximum set the target interval for min-max (default 01; the minimum must be less than the maximum). Ddof picks the z-score standard deviation: 0 divides by n (population), 1 divides by n − 1 (sample). For robust scaling, Subtract the median and Divide by the IQR each toggle one step — turn either off to center only or scale only.

What happens when a column is constant or has zero spread?

If a column's values are all equal there is nothing to spread out: min-max returns the range minimum, z-score returns 0 (its standard deviation is zero), and robust scaling divides by 1 instead of a zero IQR (so with centering on you get 0).

Is my data uploaded anywhere?

No. The whole computation runs locally with WebAssembly; your CSV never leaves your browser.

Limits & edge cases

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool data-normalize "name,height,weight
Alice,150,50
Bob,160,60
Carol,170,70"

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/data-normalize/?input=name%2Cheight%2Cweight%0AAlice%2C150%2C50%0ABob%2C160%2C60%0ACarol%2C170%2C70&method=min_max&header=true&delimiter=comma&columns=height%2Cweight&range_min=0&range_max=1&ddof=0&with_centering=true&with_scaling=true

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.