ConvertCSV · Validator
Empty rows Duplicates Tags Transform
Header Separator Quoting Lines

CSV Validator — Check Your Data Before Import

Validate data types, ZIP codes, phone numbers, NPIs, US states, dates, and required fields against per-column rules — then fix errors in place and export to CSV, JSON, or Excel. 100% in your browser; your data never leaves your computer.

Paste, drop, or open your data

Press Ctrl+V to paste from Excel or a text file,
drag a CSV or Excel workbook here, or use Open file above.
The separator is detected automatically.

Just need to view and edit? Try the Online CSV Editor.

What it checks

Set per-column rules and the validator flags every cell that doesn't match — then fix errors in place before you import. Common checks:

  • Data types & formats — number, integer, boolean, date, and required fields, with configurable missing-value handling (NULL, N/A, and custom sentinels).
  • Business fields — validate ZIP codes, US phone numbers, US state codes, email addresses, SSN, EIN, and NPI (with Luhn checksum) — and normalize them to a consistent format.
  • Time series gaps — find missing dates in a daily, weekly, or monthly series (no pandas, no SQL) — including Unix epoch timestamps in seconds or milliseconds.
  • Sequence gaps — spot holes in numeric ID or invoice sequences (1001, 1002, 1004 → 1003 missing).
  • Duplicates & blanks — highlight duplicate rows, empty rows, and columns with missing values.

Everything runs in your browser — your data is never uploaded. Export clean data to CSV, JSON, JSONL, or Excel, and save your validation rules to reuse on the next file.

Help & keyboard referenceno data

Loading data & input options

  • Paste (Ctrl+V) from Excel or a text editor — the separator is auto-detected
  • Drag & drop a CSV or Excel file onto the grid
  • Open file reads .csv, .tsv, .txt and Excel .xlsx/.xls; Excel formulas come in as their computed values
  • Start a blank sheet / New sheet for typing from scratch — it grows as you Tab or arrow past the edges
  • Encoding (toolbar) — auto-detected and BOM-aware; force UTF-8/16/32, windows-1252, Cyrillic, Greek, Shift-JIS etc. if accents look wrong
  • HeaderFirst row is column names is auto-guessed; untick it if the first row is really data. Upper/Lower case the header names
  • Separator — auto-detected (comma, semicolon, colon, bar, tab, caret, space); pick one to force a re-parse. The detected one shows in the status line
  • QuotingTreat quotes as data for files that aren't really quoted, Quote char is apostrophe for '…' files, Backslash escapes for \n \t \, style escaping
  • LinesSkip N leading junk lines (preambles, report titles), Limit to the first N rows for a quick look at a huge file

Editing cells

  • Double-click a cell to edit with the cursor where you clicked
  • F2 or Enter edits with the cursor at the end; just start typing to replace
  • Enter commits and moves down, Tab moves right, Esc cancels
  • Ctrl+E opens a cell with newlines/tabs in a full editor
  • Copy/Cut/Paste (Ctrl+C/X/V) work on ranges, Excel-compatible; Delete clears
  • Ctrl+Z undo, Ctrl+Y redo

Columns & rows

  • Click a header to sort (A→Z, Z→A, off). Empty cells go first ascending, last descending
  • Double-click a header to rename it (needs "First row is column names")
  • Drag a header to reorder; drag its edge to resize
  • Validate (toolbar) flags cells that don't match their column's type. Rules… opens a per-field matrix: Type (Alpha, Numeric, Integer, Boolean, Date — with a date format incl. Unix epoch seconds/milliseconds — plus business formats: ZIP, US phone, US state, Email, SSN, NPI with Luhn checksum, EIN, URL), Required, min/max value, min/max length, allowed values, regex, custom JS, and Auto-fix (UPPER/lower/trim, which also flags non-conforming cells)
  • Missing values — tick +sentinels next to Required to also treat missing-value tokens as blank. Choose which count (NULL, N/A, NA, -, ., none, nil) with the checkboxes at the top of the dialog, plus your own custom list; any column can override the global set
  • Apply rules saves the rules without changing data; Apply fixes now saves them and runs the Auto-fix transforms. Save… / Load… store a rule set as a .json file — rules re-map by column name, so a saved profile works on any file with those columns
  • The status line shows a live count (⚠ N invalid cells in M rows / ✓ all valid); Show only invalid rows filters to them and fixing a cell clears its flag immediately
  • Click the type badge (I/N/D/S) for column stats and the detected format; File stats (toolbar) summarizes the whole file — rows, cells, empty rows, duplicate rows
  • Right-click a header, row number, or cell for context actions

Gaps, formats & splitting

  • Find date gaps… (column menu, date columns) — spots missing dates in a time series. The interval is auto-detected (daily, weekly, monthly, yearly, or weekdays-only) and you can override it. Works with Unix epoch columns once you set the type to Date + Epoch in Rules; multiple timestamps on the same day count as one date
  • Find sequence gaps… (column menu, integer columns) — spots holes in an ID or invoice sequence (1001, 1002, 1004 → 1003 missing). Step is auto-detected or set by you
  • Format field… (column menu) — normalizes phone (617-555-1234, (617) 555-1234, dots, digits, E.164), ZIP (5-digit, ZIP+4, 9-digit — and pads leading zeros Excel stripped), and SSN (111-22-3333 or 111223333). The field type is auto-detected, or taken from what you declared in Rules. Values it can't parse are left alone and tagged red for review
  • Split column… (column menu or Row tools) — break a multi-value cell into rows (one per value, other columns duplicated — normalizes for a database load), columns (spread across new columns), a fixed number of columns, or by business format (US phone → area/number/extension; City, State ZIP → city/state/zip). Unparseable rows are tagged red

Find, filter & transform

  • Ctrl+F or Find & replace — text, regex ($1 groups), match-case, whole-cell, scoped to selection or all
  • Filters row: type text, or >10 <5 !=x /regex/ (empty) (nonempty) (dups)(dups) shows only rows whose value repeats in that column
  • Transform ▸ (right-click) — UPPERCASE, lowercase, Title Case, Trim, Trim + single spaces, Remove accents, Strip number formatting ($1,234.50 → 1234.5; detects US vs European decimal style)
  • Date format / Number format (column menu) reformat in place
  • Row tags (right-click a row) — colour-code rows by hand; sort by tag, filter to one colour, or clear them. Splits and formatters tag problem rows red automatically
  • Copy with header (right-click) copies the selected cells with their column names attached

Empty rows & saving

  • Row tools bar: Highlight duplicates colors repeated rows, Show only duplicates filters to them grouped, Remove duplicates keeps the first of each
  • Right-click a column header → Highlight duplicate values to spot key collisions (e.g. a repeated ID); sort by that column to compare the rows before deciding what to keep
  • Row tools bar: Remove trailing drops blank rows at the bottom, Remove all empty clears interior blanks too
  • Skip trailing empty rows (footer) leaves bottom blanks out of the saved file automatically
  • Download CSV with your choice of separator, line ending, and header; JSON (objects when headers exist, else arrays), JSONL (one record per line), or Save as Excel. "Type JSON values" turns numbers/booleans into real types (identifiers with leading zeros stay strings). Duplicate header names are suffixed in JSON (amount, amount_2) so no column is lost