1. gibin.in
  2. Free tools
  3. CSV profiler
Free tool · data quality

Check a CSV's data quality in seconds

Before you trust a spreadsheet, find out what's wrong with it. Drop in a CSV and every column gets a health check: how much is missing, what kind of data it really holds, and the problems that will break an import, a report or a formula.

Use it when
  • Someone sent you a file you've never seen and you need to know if it's usable
  • An import or upload keeps failing and the error doesn't say why
  • You're about to build a report or dashboard and want to catch blanks and odd values first
● Runs in your browserNothing uploadedFree, no sign-up
  1. Paste or upload a CSV
  2. Run the health check
  3. Read what to fix

Why you'd use this

A spreadsheet can look fine and still be broken. An amount column with one "1,200" typed as text makes SUM skip it. A date column with "05/01/2026" in among the 2026-01-05s sorts in the wrong order. An order ID that appears twice doubles a customer's total. None of this shows up when you scroll through the file.

The profiler reads every value in every column and tells you, in plain words, where those problems are. Run it on any file you didn't create yourself before you build a report on it, send it to a client, or load it into a system. It takes seconds and it's the cheapest way to avoid an embarrassing number.

How to use it

  1. Paste the CSV or upload it. Tab-separated and semicolon-separated files are detected on their own.
  2. Hit Profile the data. Each column gets a card.
  3. Read the amber and red notes first. They're the things that break imports, joins and dashboards.
  4. Copy the profile as Markdown to paste into a ticket or a doc, or download it as CSV.

What it looks for, and why

Most data problems aren't exotic. They're the same dozen things in every file, and they're cheap to catch before a load and expensive to catch after. These are the ones the profiler checks:

  • Placeholders stored as values. "N/A", "null" and "-" make a column look complete when it isn't. They're counted apart from real empty cells, and shown in amber on the fill bar.
  • Mixed formats. A date column where most rows are 2026-01-05 but a few are 05/01/2026 or "Jan 9 2026". An amount column where one value is "1,200" in quotes. These break type casting, and they're often the first thing a database load rejects.
  • IDs that repeat. If a column is named like an ID and almost every value is unique, the few repeats are probably the most important rows in the file.
  • Leading zeros. Pincodes, account codes and phone numbers lose their leading zeros the moment someone opens the file in Excel.
  • Case variants and stray spaces. "Paid", "paid" and "PAID" group as three statuses in a pivot table.
  • Outliers. Not to delete them, but to look at them. In the sample data, one order is 98,000 in a column of 1,000s. Maybe it's real. Someone should check.

Where this fits

A profile is a starting point, not a verdict. It tells you where to look. Then you fix the data on purpose: duplicates with the deduplicator, inconsistent names with the value standardizer, mixed dates with the date normalizer, and SQL with CSV to SQL once it's clean.

Where this comes from. Most of my validation work is deciding what a machine can check on its own and what a person has to see. This post is about drawing that line when the checker is an LLM.

Questions

What does it check?

For every column: the type the values actually follow, empty cells, placeholders like N/A or null stored as text, stray spaces, invisible characters, values in a different format from the rest, broken email addresses, numbers with thousands separators, ambiguous dates, outliers, the same value in different letter case, and ID-like columns where values repeat. For the whole file: duplicate rows and completely empty rows.

How does it decide a column's type?

It classifies each value on its own, then calls the column a type if at least 95% of filled values agree. If they don't, it says the column is mixed and shows the split, which is usually the most useful thing on the page.

What counts as an outlier?

A number more than three interquartile ranges below the first quartile or above the third. That's deliberately loose, so it flags the 98,000 in a column of 1,000s and not ordinary spread.

Does it change my file?

No. It only reads it. To fix what it finds, use the deduplicator, the value standardizer or the date normalizer, all linked on this page.

Is my data uploaded?

No. The profile is built in your browser and nothing is sent anywhere.