CSV Editor

Open a CSV and change it: edit any cell, add or delete rows and columns, rename headers, find and replace with a regular expression, paste a block from Excel, and undo all of it. Every value stays the exact string it was, so nothing is retyped behind your back. Nothing is uploaded.

A spreadsheet is the wrong tool for editing a CSV

This sounds like a contradiction, because editing tables is what a spreadsheet is for. But a CSV is not a spreadsheet, and the mismatch causes real damage.

The damage happens on open, before you have typed anything. Excel reads a column of digits and decides it is numeric, so 01730 becomes 1730 and a ZIP code is no longer a ZIP code. A 16-digit order reference becomes 1.23457E+15. A part code like 1-10 becomes the tenth of January. A value like +44 20 becomes a formula error. Then you fix one typo in row 4,000, hit save, and the file you write back carries all of that, permanently, because the original is gone.

The other half of the mismatch is that a CSV has no cell formats, no formulas and no styling, so most of what a spreadsheet offers is irrelevant, while the things you actually want when editing a delivered file are missing or buried: replace across a whole column with a pattern, rename a header, delete the three columns nobody needs, add a row, and undo a bulk change without reloading.

This editor is built the other way round. Values are strings from read to write, and the type badge on a header is a label rather than a conversion. Nothing is reformatted, nothing is coerced, and what you download differs from what you opened only where you changed it.

What you can do

Edit any cell

Double-click, or select and press Enter or F2. Enter commits, Escape cancels. The value you type is stored exactly as typed.

Add and delete rows

Add a blank row at the end, or select a run of rows and delete them together. Added rows are tinted so you can see what is new.

Add, delete and rename columns

Add a column with a name you choose, delete the one your selection is in, and double-click any header to rename it. A name that collides is suffixed rather than silently shadowing another column.

Undo and redo, on operations

Every change is recorded as before and after, so a replace touching 50,000 cells undoes in one step. Ctrl or Cmd plus Z, Shift to redo, and toolbar buttons that grey out when there is nothing left.

Find and replace with regex

Literal or pattern, case sensitive or not, whole cell or substring, with capture groups in the replacement. The match count updates as you type, so you see the blast radius first.

Paste a block from Excel

Copy a rectangle in a spreadsheet, click the top-left target cell here, and paste. Anything past the edge of the table is left out and reported rather than silently adding columns.

Select a range and clear it

Drag or shift-click to select a rectangle. Delete or Backspace blanks the whole selection in one undoable step, and Copy as gives you TSV, CSV, Markdown or JSON.

Sort and filter while editing

Edits are attached to the record, not the screen position, so they survive a sort. Filtering reads the edited value, so a row you just corrected appears where the correction says it should.

Save as CSV or .xlsx

Download writes the edited table with proper quoting. The status line says "edited, not yet downloaded" while you have unsaved changes.

A worked example: fixing a supplier export

Suppose the file looks like this:

sku,Product Name ,status,qty,notes
0042,Widget assembly,ACTIVE,41,
0117,Sprocket set,active,0,discontinued Q3
0009,"Gasket, 40mm",Active,238,
0231,Bearing housing,ACTIVE,12,
0311,Drive belt,inactive,7,replaced by 0312

Four things are wrong with it, and all four are quick here.

The header has a trailing space. Product Name  will not match Product Name in whatever consumes this. Double-click the header and retype it. One undoable step.

Status is inconsistently cased. Three spellings of active. Put ^active$ in the find field, tick .* for regex and leave Match case off, put ACTIVE in replace, and the counter tells you it will touch three cells before you press Replace all. If you get it wrong, one undo.

The notes column is mostly empty and nobody wants it. Click a cell in it, then Delete column. Undo puts it back with its values intact if you change your mind.

A row is missing. Click + Row, and type the values into the blank row at the bottom, which is tinted so you can see it is new.

Now look at what did not happen. 0042 is still 0042. Gasket, 40mm is still one cell, and the download re-quotes it correctly. Nothing became a date. The sku column is badged text / id precisely because its values carry leading zeros, and that badge is a label rather than an instruction to convert anything.

Download CSV, and the file that lands differs from the one you opened in exactly the four places you changed.

Keyboard

Key What it does
EnterOpen the selected cell for editing, or commit an edit
F2Open the selected cell for editing
EscapeCancel the edit, leaving the value as it was
Arrow keysMove the selection; hold Shift to extend it
Page Up / Page DownMove twenty rows at a time
Ctrl / Cmd + ASelect the whole table
Ctrl / Cmd + CCopy the selection as TSV
Ctrl / Cmd + VPaste a TSV block from the selected cell
Delete / BackspaceClear every cell in the selection
Ctrl / Cmd + ZUndo
Ctrl / Cmd + Shift + Z, Ctrl + YRedo

What it deliberately does not do

  • No formulas. A CSV cannot store one. Adding a calculated column is a job for the full editor, where it is a pipeline step backed by SQL and can be rebuilt against a new file.
  • No cell formatting. There is nowhere in the format to put it.
  • No autosave. Everything lives in the tab. Download before you close it; the status line reminds you while there are unsaved edits.
  • No multi-file editing. One file at a time. Joining and unioning across files is what the full editor is for.
  • No type coercion, ever. This is the feature, not a gap. If you want a column converted, do it explicitly with a transformation rather than having it happen to you on open.

Frequently Asked Questions

How do I edit a CSV without Excel?

Drop the file on the box at the top of this page. It opens in an editable grid: double-click a cell to change it, use the toolbar to add or delete rows and columns, double-click a header to rename it, and undo anything with Ctrl or Cmd plus Z. Download CSV writes what you have made. Nothing is uploaded and there is no account.

Will editing here destroy my leading zeros?

No, and that is the main reason to use it rather than a spreadsheet. Every cell is a string from the moment the file is read to the moment it is written back. A ZIP code of 01730 stays 01730, a long identifier does not turn into scientific notation, and nothing guesses a date format for you. A spreadsheet does all three of those on open, before you have typed anything.

Does undo work properly?

Yes, and on whole operations rather than keystrokes. Every change is recorded as what it was and what it became, so undoing a find-and-replace that touched 50,000 cells is one step and costs about what the replace cost. Ctrl or Cmd plus Z undoes, Ctrl or Cmd plus Shift plus Z or Ctrl plus Y redoes, and the toolbar buttons grey out when there is nothing left to undo.

Can I use a regular expression in find and replace?

Yes. Tick the .* box and the find field becomes a pattern, with capture groups available in the replacement as $1, $2 and so on. Match case and Whole cell are separate toggles, and the match count updates as you type so you can see how much a pattern will touch before you commit to it. A pattern that will not compile changes nothing rather than erroring mid-way.

Can I paste a block from Excel?

Yes. Copy a rectangle in Excel or Google Sheets, select the top-left cell of where it should go here, and paste. The tab-separated block is placed cell by cell from that corner. Anything that would run off the right or bottom edge is left out rather than silently creating columns, and you get told when that happened.

Do my edits survive sorting and filtering?

Yes. A row is identified by where it came from in the file, not by where it currently sits on screen, so an edit made before a sort is still attached to the same record afterwards. Filtering works on the edited value too: change a status to open and the row appears in a filter for open, rather than staying hidden behind what the file used to say.

How large a file can I edit?

250 MB. Files over 2 MB parse on a background thread with a progress bar, and only the rows on screen are ever drawn, so the grid stays smooth on very long files. Edits are stored as an overlay rather than a copy of the table, so editing a large file does not double its memory.

Is my file uploaded anywhere?

No. There is no upload endpoint on this page. The file is read from your disk in your own tab, the edits live in that tab's memory, and the download is assembled locally. Closing the tab discards everything, so save your work with Download CSV before you go.

Edit the file without breaking it

Free, no account, no upload, real undo, and not a single value retyped behind your back.

Back to the editor