Data tools ·
Edit CSV and export PDF locally
A local CSV editor parses bytes with Papaparse, keeps rows as arrays in memory, and can render a printable table or PDF without a conversion API. That workflow is for sheets that contain customer lists, payroll, or inventory — files that should not become someone else’s training set or backup.
How does in-tab CSV parsing work?
File API gives you a Blob. Papaparse can stream chunks with a step callback so a 20 MB export does not become one giant string parse on the main thread. Quoted fields, escaped quotes, and RFC 4180 newlines are the usual traps.
Papa.parse(file, {
header: true,
worker: true,
complete(results) {
setRows(results.data);
},
});What belongs in a local editor versus a cloud sheet?
Cloud sheets are collaboration. Local editors are one-shot cleanup: drop duplicate emails, fix a column, export JSON or PDF for a report. If the sheet has PII, skip the cloud until you have a DPA and a reason.
How can a PDF export stay on-device?
Build a table layout with pdf-lib: embed a standard font, wrap cell strings, paginate. Or window.print() with @media print. Both stay in the origin. Do not POST the CSV to a “PDF API.”
How do CSV and JSON round-trips fail?
Nested objects, commas in fields, and Excel eating leading zeros on IDs. Use the JSON converter when the data is a tree; use CSV when it is a rectangle. The editor is the rectangle.
How do you keep an audit trail without a server?
Download versioned filenames (export-2026-08-25.csv) and keep git or disk backups. The site does not store your grid. Closing the tab drops unsaved edits — same as a desktop tool without autosave.
Frequently asked questions
Does a browser CSV editor have a row limit?
The limit is heap and DOM nodes. Tens of thousands of rows are fine with a virtualized grid; millions need chunked parsing and no per-cell DOM.
How do you export PDF without a server?
Print CSS, html2canvas-style raster, or pdf-lib drawing of text runs. The bytes are generated in the tab and downloaded as a Blob.
Will formulas work like Excel?
Not unless you implement an evaluator. This is a data grid: edit values, not a spreadsheet runtime. Convert to JSON if you need structured processing.
Are delimiters other than comma supported?
Yes. Papaparse sniffs or you set delimiter to tab, semicolon, or pipe. Always keep the original file until you confirm the parse.