Data Quality Rule Checker

Check a CSV against required, unique, range, length and pattern rules, then download the rows that fail.

Files stay on your device No sign-up Free to use
How this works

The tool runs in this browser. Your file or text is not uploaded to UseFreeTools. Check this tool's limits for anything it may save on your device.

Privacy details

Check data rules controls

Drop your CSV file here

or choose one from your device

One UTF-8 CSV or TSV file. Use either this or the pasted text, not both.

    Paste the table to check, or leave this empty and choose a file. Values are kept exactly as they appear in the text.

    Write a column, a rule and any values: email required, order_id unique, age range 0 120, name length 2 60, code pattern ^[A-Z]{2}\d{4}$. A column is named by its heading or its 1-based position, so a heading holding a space is given by position. A line starting with # is a comment.

    A value or heading whose first visible character is = + - or @ receives an apostrophe, so a spreadsheet reads it as text. The prefix changes the stored value.

    How to use Data Quality Rule Checker

    1. Paste the table or choose a CSV file.
    2. Write one rule per line: a column, a rule and any values, such as email required or age range 0 120.
    3. Press Check data rules and read the per-rule failure counts.
    4. Download the failing rows, which carry the source row number and the rules each one broke.

    Example: Data Quality Rule Checker

    Find the rows with a repeated email, a missing name or an age outside the range.

    You add
    Pasted text email,age,name with the rows [email protected],30,Ana, [email protected],25,Lee, [email protected],150, (no name) and [email protected],,Bo. Rules: email required, email unique, age range 0 120, name required.
    You get
    Four rows are checked against four rules and two fail. Row 3 repeats row 1’s email, has age 150 and lacks a name; row 4 lacks an age. failing-rows.csv starts with source_row,failed_rules,email,age,name and contains those two source rows with their failure reasons.

    Options

    required
    The cell must hold something other than spaces. It is the rule to pair with a unique test, because uniqueness deliberately ignores empty cells.
    unique
    The exact cell text may appear once. A repeated value is reported against the row where it first appeared, and an empty cell is never treated as a duplicate.
    range
    The cell must be a number between two bounds, both included. A value that is not a number at all fails the rule with that reason rather than being compared as text.
    length and pattern
    length checks the character count against inclusive bounds. pattern matches the whole value using the limited regular-expression syntax listed below.

    Supported inputs and limits

    Paste up to 20,000,000 characters or choose one UTF-8 CSV or TSV file up to 20 MiB, with 100,000 rows and 500 columns. One run takes at most 100 rules, and rows multiplied by rules is capped at 2,000,000 checks. Patterns may hold up to 500 characters and nest up to 20 groups, and a cell longer than 2,000 characters is reported rather than run through a pattern. The supported regular-expression subset is literals, character classes and their ranges, the classes \d \w \s and their opposites, groups, alternation and the quantifiers ? * + {n} {n,} {n,m}. Backreferences, lookarounds and mid-pattern anchors are refused.

    Where your input is processed

    This tool processes your input in this browser. Your text and files are not uploaded to UseFreeTools. Check this tool's limits for anything it may save on your device.

    Why a failing row report beats a pass or fail count

    A count tells you that something is wrong but not which record to open. Writing the original row next to the rules it broke keeps the failing records together, so the fix can be made in the source system and the file checked again.

    Questions about Data Quality Rule Checker

    Which pattern features are supported?

    Use literals, character classes, groups, alternatives and the listed repeat operators. Backreferences, lookarounds and anchors inside a pattern are refused. A bounded state machine checks the supported subset and stops when the shared work budget is exhausted.

    Can I check a column whose heading holds a space?

    Yes, by position. A rule line splits on spaces, so name the column with its 1-based number such as 3 instead of the heading with a space inside it.

    What is written into the download?

    Every row that failed at least one rule, with the source row number and a failed_rules cell listing each broken rule and the reason, followed by the row's own columns in their original order.

    How are empty cells treated by range and length?

    A range rule fails an empty cell because there is no number to compare, and a length rule counts zero characters and fails unless the lower bound is zero.

    Project manager: Tony Hines · Content updated 4 October 2026 · Report a problem