Fixed Width to CSV
Parse space-aligned text into real CSV — mainframe extracts, psql and mysql console output, df and ps dumps, or any report where columns line up visually but no delimiter exists. Boundaries are found by looking for character positions that are blank on every line, or you can state the widths exactly.
How to convert fixed width to CSV
- Paste the text or drop a file. Leave widths empty to let the boundaries be detected.
- Check the status line — it lists the character positions where columns were found, so you can tell whether the detection matched your expectation.
- If the split is wrong, enter the widths from your spec instead:
10,20,8. - Copy or download the CSV.
How detection works, and when it fails
A character position is a boundary candidate when every line is blank there, so the gaps between columns show up as vertical channels of whitespace. Runs separated by a single blank column are merged, which keeps values like New York together instead of splitting them at the space. Detection struggles in two cases: when a column is fully populated right up against its neighbour with no consistent gap, and when one long value fills the gap on a single line. Both are fixed by supplying explicit widths — which you should prefer anyway when you have a spec, since detection depends on the sample you happen to be looking at.
Console output pastes well
Output from psql, mysql, docker ps, or kubectl get converts cleanly. Leave skip ---- rule lines on and the separator row under the header is dropped instead of becoming a row of dashes. Border characters such as | aren't removed automatically — if your paste has them, they'll appear inside cells or as their own column; strip them first with Find & replace.
FAQ
My file has no header.
Untick first line is a header and the columns are named column_1…n. Name them properly afterwards with Header row.
Does it handle tab-separated text?
That's a different shape — use TSV to CSV, which splits on the tab character rather than by position.
Why did one column split in two?
Because a space inside its values lined up on every row. Supply explicit widths to override the detection.
Is anything uploaded?
No — it runs in your browser.
Privacy
100% client-side. No upload. See the privacy policy.