AnyFormat

00 CSV → YAML

CSV to YAML

A spreadsheet of config values, as a YAML list.

01CSV in
02YAML out
03Options 6

Exports from European versions of Excel use semicolons, because the comma is the decimal point there.

Off means rows come out as arrays instead of objects.

Off keeps every value as a string — safer for IDs, postcodes and phone numbers with leading zeroes.

  • No upload The conversion runs in this tab. Your file never travels — not to us, and not to the advertising.
  • No sign-up, no email, no daily cap There is no account system to sign up to.
  • No size limit we invented Only your device's memory — about ~2 GB on a desktop browser, ~400 MB on a phone.
  • Turn your Wi-Fi off and convert anyway The conversion needs nothing but this page. Ads will not load without a connection; your file will still convert. That is the whole claim, and it takes five seconds to check.

Each row becomes an item in a YAML sequence, keyed by the header row. The usual reason is that a list of environments, users or feature flags is easiest to maintain in a spreadsheet and needs to end up in a config file.

Ambiguous values are quoted for you

The same YAML trap as elsewhere: a cell containing no, yes, on, off or a version number like 1.10 would change meaning if written bare. Each is quoted automatically, so a column of country codes does not turn Norway into false.

The Norway problem, and why your country column is quoted

YAML 1.1 reads NO, ON, OFF, Y, N, YES and TRUE as booleans. A column of ISO country codes therefore turns Norway into false — a bug well enough known to have a name. Version numbers suffer the same way: 1.10 becomes the number 1.1, and 1.2.3 stays a string, so a column can change type halfway down. Anything that would be reinterpreted is quoted on the way out, which is why the result has more quotation marks than a hand-written file would.

Block style, not flow style

YAML can write a list inline as [a, b, c] or as one indented item per line. The indented form comes out here, which is longer but reviews properly — a diff shows one changed line rather than one changed line containing everything. That matters because the usual reason to turn a spreadsheet into YAML is to put it under version control next to code, and a config file that produces a single enormous diff line every time someone edits a cell defeats the point of moving it there.

Questions

Can I get a mapping keyed by the first column instead of a list?
Convert to JSON first, reshape it, then use JSON to YAML. A direct option would need a rule for what to do about duplicate keys.
Why is a value like NO or 1.10 in quotes?
Because YAML would otherwise read it as something else — NO as the boolean false, 1.10 as the number 1.1. Quoting preserves exactly what your spreadsheet said.
Can I use this to build a Kubernetes manifest?
For a list of similar objects, yes — but a manifest is a tree rather than a table, so you will usually want to convert to a list and then nest it under the right key by hand.
Is my data uploaded anywhere?
No. The conversion runs as JavaScript inside this tab. Open your browser's Network panel and convert something — you will see no request carrying your data, because there is no server to send it to. You can also turn your Wi-Fi off and convert anyway.