Spreadsheets owe a lot of their staying power to two small things: you can paint cells with conditional formatting to see patterns at a glance, and you can drag a value down to fill the blanks under it. Neither has any business being locked behind a desktop install. This update brings both to the csvdiff.app viewer, alongside a Text format for one-click cleanup and a fix for the most embarrassing sort bug in the project so far.
Everything below runs in your browser tab. No upload, no account. Open any CSV in the viewer to try it.
Color Rules Per Column
Every column header now has a palette menu. Pick a rule and the cells in that column get a subtle tint that makes patterns obvious without changing the underlying data. Five rules ship today, each tuned to a different question you tend to ask of tabular data:
- –Heatmap — gradient by value. Indigo gets darker as numbers get bigger. Best for salaries, prices, scores, or any numeric column where you want to spot extremes.
- –Above / below average — green for above, red for below. Useful for performance metrics, deltas, or anything where the mean is the reference point.
- –Category — assign a stable color per unique value. The same status string always lands on the same swatch, so scanning a 5,000-row column for the rows in one bucket is a glance, not a search.
- –Empty cells — tint blanks amber. A faster way to find missing data than scrolling for dashes.
- –Duplicates — highlight values that appear more than once in the column. Catches double-imported rows and accidental copy-paste in one click.
| name | salary | status |
|---|---|---|
| Ayesha | $120,000 | active |
| Sara | $98,000 | on leave |
| Hina | $95,000 | pending |
| John | $155,000 | active |
| Zain | $87,000 | active |
| Maya | $142,000 | pending |
Rules are local to the column. You can run a heatmap on salary, category colors on status, and a duplicates check on email — all on the same table at the same time. A single Clear button on the rule popover lifts the rule on that column when you are done.
Fill Blanks From Above
Anyone who has exported a pivot table from Excel knows this pain: the grouping column is only labeled on the first row of each group. The cells below are blank because Excel renders them that way visually, but the CSV inherits the blanks. Sorting, filtering, or grouping the file becomes useless until you copy the value down by hand.
Open any CSV where a column has blanks following a populated cell and a small down-arrow appears in that column header. Click it; the last non-empty value carries down into every blank below it, stopping at the next populated cell, until the file is fully back-filled. Click again to revert — the toggle remembers exactly which cells it filled, so undoing it leaves your manual edits intact.
| region | city | revenue |
|---|---|---|
| West | San Francisco | $240k |
| empty | Seattle | $180k |
| empty | Portland | $92k |
| East | New York | $310k |
| empty | Boston | $145k |
| empty | Philadelphia | $88k |
| region | city | revenue |
|---|---|---|
| West | San Francisco | $240k |
| West | Seattle | $180k |
| West | Portland | $92k |
| East | New York | $310k |
| East | Boston | $145k |
| East | Philadelphia | $88k |
The fill is non-destructive. The original CSV bytes never change; the back-filled values live as in-memory edits, the same way inline cell edits do. Export when you are happy with the result, or toggle the fill off and your file is back to where it started.
Text Format — Trim and Case Normalization
Two of the most common cleanup operations in any data wrangling session are "strip the leading and trailing whitespace" and "make this column consistent in case". Both used to require Find-and-Replace gymnastics or an Excel formula. The column format menu now exposes a Text format that does both:
- –Trim — collapses leading, trailing, and runs of internal whitespace.
- –Case — None, lowercase, UPPERCASE, or Title Case (capitalizes the first letter of each word, including non-ASCII alphabets).
The Text format is purely a display transform until you export. That means you can flip a column from "DAVID JONES, jane SMITH , Maria Garcia" to a clean "David Jones, Jane Smith, Maria Garcia" view, verify it looks right, and then choose whether to export the formatted values or the raw ones from the export panel. No formulas, no undo regrets.
Smarter Numeric Sort
Honest admission: the table sort had a subtle bug on comma-formatted numbers. Ascending on a salary column of "120,000, 130,000, 115,000, 87,000, 155,000" was leaving the file order untouched. The cause was relying on browser locale-aware string comparison with the numeric option, which treats the comma as a thousands separator in some locales and a decimal in others — and unpredictably enough that the sort would silently no-op on values it could not parse.
The sort now parses each cell through the same numeric coercion the heatmap and average rules use — stripping $, %, and whitespace, then attempting a real Number parse. Numeric values sort numerically, non-numeric values fall back to locale string compare, and mixed columns put the numbers first in ascending and last in descending. The result is the sort order you would expect from Excel, on any column that contains numbers at all.
- $120,000
- $130,000
- $115,000
- $118,000
- $142,000
- $155,000
- $87,000
- $89,000
- $95,000
- $98,000
- $87,000MIN
- $89,000
- $95,000
- $98,000
- $115,000
- $118,000
- $120,000
- $130,000
- $142,000
- $155,000MAX
Why This Matters Together
The four features above land in the same release because they answer the same question from different angles: how do you take a CSV that arrived messy and get it into shape without opening Excel? Color rules let you see what is wrong. Fill blanks fixes the pivot-export shape. The Text format cleans whitespace and case. The sort fix means the column you cleaned actually orders correctly when you arrange it. Open any file in the viewer to try the full set.