2026-07-28 · 35 new tools, and a nav that can hold them
- Excel, properly. CSV to Excel writes a real
.xlsx(bold frozen header, auto column widths, numbers as numbers, leading zeros preserved as text), and Excel to CSV reads every sheet, converting date serials to ISO and exporting formula values. Both run in the browser — the workbook is unzipped locally. - SQL over a CSV. SQL on a CSV runs
SELECTwithWHERE,GROUP BY,HAVING, joins, and subqueries against a pasted file, with CSV and JSON export. - Analysis suite. Group & aggregate, Pivot table, Unpivot / melt, Value counts, Find duplicates, Data profile, Row & cell count, and Chart (bar / line / area / pie / scatter, SVG and PNG export, no chart library).
- Real joins. Join on key — inner, left, right, full outer, with a match report and automatic suffixing of clashing column names.
- File hygiene. Repair CSV (ragged rows, unclosed quotes, BOM, mixed newlines, with a change report), Encoding & BOM (UTF-8 / BOM / Windows-1252 / UTF-16, plus mojibake repair), Line endings, and Header row (add, remove, rename, promote row N, snake_case, de-duplicate).
- Row and column surgery. Slice rows, Random sample and Shuffle (both seedable, so a sample is reproducible), Fill blanks (including fill-down for merged-cell exports), Trim whitespace (including invisible zero-width characters), Split column, Combine columns, Extract column, and Add column.
- More converters. SQL to CSV, CSV to JSONL and back, CSV to GeoJSON and back, CSV to array (JS / Python / PHP / Ruby / JSON), CSV to LaTeX, CSV to ASCII table, and fixed width in both directions.
- Sort now takes three keys. Sort sorts by up to three columns with independent directions, keeps blanks last by default, and is stable so equal rows hold their original order.
- Mega-menu navigation. The tool list moved into a category menu in the header (and a drawer on mobile), since 68 tools no longer fit in a footer grid alone. Both the menu and the footer are generated from one list, so they can't drift apart.
- Fixed: the line-ending converter used to lose real
CRbytes because the output was read back out of a textarea, which normalises them toLF. Converted text is now kept outside the DOM, so copy and download carry the exact bytes.