User Rating 0.0
Total Usage 0 times
Drop a CSV file here or click to browse Supports .csv and .tsv files
Is this tool helpful?

Your feedback helps us improve.

About

Raw CSV data is structurally invisible. Without color, a file with 10,000 rows offers no visual hierarchy. Missed anomalies in financial reports, overlooked outliers in sensor logs, or silent duplicates in customer databases cause measurable damage. This tool applies conditional color formatting directly to CSV files using rule-based logic: if cell value in column C satisfies predicate P, apply background color H (as a hex triplet). Rules evaluate sequentially. Later rules override earlier ones on the same cell. The parser conforms to RFC 4180 for quoted fields and embedded delimiters.

Output is a fully styled HTML table you can open in any browser, print, or paste into documentation. The tool runs entirely in your browser. No data leaves your machine. Limitation: this tool does not produce .xlsx files with native Excel conditional formatting. It generates visual output only. For datasets exceeding 50,000 rows, expect rendering delays proportional to rule count.

csv color conditional formatting csv highlighter csv colorizer spreadsheet data visualization

Formulas

Each cell Ci,j is evaluated against all n rules in sequence. The final color applied is determined by the last matching rule:

color(Ci,j) = Hk where k = max{ m [1, n] : Pm(Ci,j) = TRUE colm = j }

Where Hk is the hex color of rule k, Pm is the predicate function of rule m, and colm is the target column index. For numeric operators, the cell value is parsed via parseFloat. If parsing yields NaN, the comparison returns FALSE. Regex predicates use the JavaScript RegExp constructor with no flags (case-sensitive). The "Contains" and "Equals" operators are case-insensitive by default, converting both operands to lowercase before comparison. The "Apply to All Columns" option sets colm = *, matching every column index.

Reference Data

OperatorDescriptionValue TypeExample
EqualsExact string match (case-insensitive)Text / Numberstatus = active
Not EqualsInverse of exact matchText / Numberregion US
ContainsSubstring search (case-insensitive)Textemail contains @gmail
Not ContainsSubstring absenceTextnotes not contains error
Starts WithPrefix matchTextid starts with PRD-
Ends WithSuffix matchTextfile ends with .csv
Greater ThanNumeric comparison >Numberprice > 100
Less ThanNumeric comparison <Numberqty < 5
Greater or EqualNumeric comparison Numberscore 90
Less or EqualNumeric comparison Numbertemp 0
Is EmptyCell is blank or whitespace-onlyNoneaddress is empty
Is Not EmptyCell has contentNonephone is not empty
RegexRegular expression testPatternzip matches ^\d{5}$
BetweenNumeric range (inclusive)Two Numbers10 age 65

Frequently Asked Questions

Rules are evaluated in the order they appear in the rules list. The last matching rule wins. This means you can create a general rule (e.g., highlight all values > 0 in green) and then override it with a more specific rule (e.g., highlight values > 100 in red). Drag rules to reorder priority.
The parser follows RFC 4180. Fields wrapped in double quotes can contain commas, newlines, and even double-quote characters (escaped as ""). For example, the field "New York, NY" is parsed as a single value: New York, NY. Unquoted fields are split on the comma delimiter.
Numeric operators (>, <, , , Between) attempt to parse the cell as a floating-point number. If the cell contains currency symbols ($50), thousand separators (1,000), or units (50kg), parsing fails and returns NaN, causing the comparison to yield FALSE. Clean your data first or use the "Contains" operator for pattern matching.
Yes. Set the column selector to "All Columns" when creating a rule. The predicate will be tested against every cell in each row. If any cell in that row matches (when column is set to a specific column) and you want full-row highlighting, create the rule with "All Columns" and a value condition. Alternatively, create multiple rules targeting each column with the same condition and color.
The tool runs in your browser's memory. Practical limits depend on your device. Files under 10MB (approximately 50,000 rows with 10 columns) render smoothly. Larger files trigger chunked rendering to prevent freezing, but the preview may take several seconds. The HTML export file size will be larger than the original CSV due to inline styling markup.
When you open the exported HTML file in a browser and copy-paste the table into Google Sheets, background colors are preserved in most cases. Excel handles HTML paste less reliably. For best results, open the HTML file directly in Excel via File Open, which interprets the inline CSS background-color properties correctly.