CSV Numeric Column Extractor

Paste a CSV or TSV and see which columns are actually numeric. Every qualifying column comes back as a typed array with its header — and every rejected column comes back with the reason. Runs in your browser; nothing is uploaded.

Try:
Numeric columns

About this tool

Spreadsheets and database dumps mix identifiers, labels, dates and measurements in one table. This tool reads a CSV or TSV and tells you which columns are actually numeric — then hands those columns back as typed arrays you can drop straight into a chart, a statistics routine or a JSON payload.

It sniffs the delimiter (comma, tab, semicolon or pipe), decides whether the first row is a header, and tests every cell in every column. A column qualifies when all of its non-missing values parse as numbers; loosen that with Minimum numeric share if a stray label shouldn't disqualify an otherwise numeric column. Each qualifying column reports whether it is an integer or a float, how many values it holds and how many were missing — and every rejected column comes back in a skipped list with the reason and an offending example, so you never have to guess why a column disappeared. Everything runs locally in your browser; the data is never uploaded.

Worked example

Given this input:

id,name,score
1,Alice,9.5
2,Bob,7

the default Typed arrays output is:

{
  "delimiter": "comma",
  "header": true,
  "rows": 2,
  "columns_total": 3,
  "numeric_columns": 2,
  "columns": [
    {
      "name": "id",
      "index": 1,
      "type": "integer",
      "count": 2,
      "missing": 0,
      "numeric_ratio": 1,
      "values": [1, 2]
    },
    {
      "name": "score",
      "index": 3,
      "type": "float",
      "count": 2,
      "missing": 0,
      "numeric_ratio": 1,
      "values": [9.5, 7]
    }
  ],
  "skipped": [
    {
      "name": "name",
      "index": 2,
      "reason": "only 0 of 2 value(s) parse as numbers (0% < the 100% required)",
      "example": "Alice",
      "numeric_ratio": 0
    }
  ]
}

Switch Output to Column names only for id, then score on the next line; to Numeric columns as CSV for id,score / 1,9.5 / 2,7; or to Row objects for [{ "id": 1, "score": 9.5 }, { "id": 2, "score": 7 }].

Accounting formats

With Accept $1,234.50 / 45% / (500) formatting left on, exported figures still count as numbers: thousands separators (1,234.501234.5), currency symbols $ € £ ¥ ₹, a trailing percent sign (45%45), parentheses negatives ((500)-500) and trailing minus (250--250). Turn it off when you want strictly plain numbers.

Limits & edge cases

FAQ

What makes a column count as "numeric"?

Every non-missing cell in it has to parse as a number. Set Minimum numeric share below 1 to relax that — at 0.75, a column where three of four values are numbers still qualifies, and the value that didn't parse is emitted as null.

My column has a few blanks — will it still be extracted?

Yes. Allow blank cells in a numeric column is on by default, so gaps become null and the column is still returned; the missing count tells you how many there were. Turn it off to require a value in every row.

Why was my ID or ZIP column skipped?

Zero-padded values like 007 or 01234 are deliberately rejected: they are identifiers whose leading zeros would be lost as numbers. The skipped list names the column and shows the value that disqualified it.

How does it choose the delimiter and the header row?

With Delimiter on Auto-detect it parses the text once per candidate (comma, tab, semicolon, pipe) and keeps whichever yields the most consistent column count, requiring at least two columns. With Header row on Auto-detect, the first row is treated as a header unless one of its cells is itself a number — so 10;20;30 on line one is read as data and the columns are named column_1, column_2, column_3. Both can be forced.

Can I get the result as CSV instead of JSON?

Yes — set Output to Numeric columns as CSV for a comma-separated table containing only the numeric columns (missing values become empty cells), or to Column names only for a plain list you can paste into a query or a script.

Is my data uploaded anywhere?

No. The tool is compiled to WebAssembly and runs entirely in your browser tab — the CSV you paste never leaves your machine.

Developer & Automation Access

Run it from the terminal

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

gizza tool csv-numeric-column-extractor "id,name,score
1,Alice,9.5
2,Bob,7"

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/csv-numeric-column-extractor/?data=id%2Cname%2Cscore%0A1%2CAlice%2C9.5%0A2%2CBob%2C7&delimiter=auto&header=auto&output=columns&null_tokens=NA%2CN%2FA%2CNULL%2Cnull%2CNone%2Cnan&allow_blanks=true&min_numeric_ratio=1&normalize=true

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