100% local — your data never leaves your browser

CSV to YAML — A List You Can Read

Turn a CSV table into a YAML list of mappings. Each row becomes a block you can read at a glance and drop into a config or a fixture file.

Instant Private Zero cookies
Indentation
Delimiter

CSV input

YAML output

What this tool does

Each CSV row becomes one mapping in a YAML list, keyed by the header. Values are typed the same way as for JSON: 30 is a number, true a boolean, and a leading zero keeps the value a string.

The indentation is yours to choose above the editor.

The values YAML quotes, and the ones it does not

Quoting here is not decoration — it is what stops a value from changing meaning when someone reads the file back:

  • 3.0 is quoted, because bare it would return as the number 3;
  • the text null is quoted, so it stays the word and does not become an absent value;
  • an empty field is quoted as "", for the same reason.

There are two it leaves bare, and they are worth knowing about: yes and no. In YAML 1.2 — what this tool emits — they are ordinary strings. In YAML 1.1 they are booleans, and PyYAML still reads them that way. If your output is heading for a Python tool, quote those columns in the CSV first.

Multi-line cells

A CSV field may contain a line break, and YAML can hold one without losing it. Such a cell comes out as a block scalar introduced by |-, its content indented beneath the key. Nothing is flattened and nothing is escaped.

Private by design

Everything runs locally in your browser with JavaScript. Your data is never uploaded, which makes the tool safe for sensitive content, and it keeps working offline.

Frequently asked questions

Why is 3.0 quoted but 30 is not?
Because `3.0` written bare would come back as the number 3 and lose its trailing zero. Quoting keeps it the string it was in the CSV. `30` has no such ambiguity, so it stays a plain number.
My yes column became true in Python. Why?
Because your parser follows YAML 1.1, where bare `yes` and `no` are booleans. This tool emits YAML 1.2, where they are plain strings — the two specs disagree, and the disagreement only shows up on the reading side. Quote such columns in the CSV if PyYAML will read the output.
What happens to a cell containing a line break?
It becomes a block scalar, written with `|-` and indented under its key. The line break is preserved exactly, which a quoted one-line form could not guarantee.

Related converters