Skip to main content

Data

YAML to CSV Converter

Turn a YAML list of records, or a single mapping, into CSV rows for spreadsheet review.

Written by · Published · Last updated

Runs in your browserPrivate by designYAML → CSV
YAML→CSV

Press ⌘ Enter to run

4 lines · 58 chars

Ready; press Run or ⌘ Enter

How this tool handles files

Processing
In your browser, on-device
Storage
Nothing stored
Output
A file you download
Your responsibility
Review before official use
  • Runs in your browser. Your file is processed on your own device and, on this site, is not uploaded to our servers.
  • Nothing is stored. Your file and its output are gone the moment you close or reload the page.
  • Review sensitive files (bank, ID, medical) and check the output before sharing it.

Every tool on FormatOS runs in your browser. Read our Privacy Policy and File Handling Policy.

Common uses

  • Open a YAML list of records in a spreadsheet
  • Compare YAML settings side by side

Limitations

  • Nested values inside a record are written as JSON text in one cell

Where YAML to CSV earns its place

A lot of tabular data lives in YAML: inventories, test cases, translation lists, user seeds, the records in a data file for a static site. They are easy to edit as YAML and hard to review that way. This converter lays them out as a CSV table, one row per record, so you can sort, filter and scan them in a spreadsheet.

It also works for a single settings block. A mapping becomes one header row of keys and one row of values, which is handy for comparing two environments: convert each, paste both rows into one sheet, and the differing values line up under the same headers.

The YAML is parsed in your browser; nothing is uploaded, and nothing is kept after you close the tab.

How records become rows

The parser reads full block YAML: nested mappings, lists, comments, quoted strings and multi-line text. The CSV is then built from the records: a top-level list of mappings gives one row per item, a mapping that only wraps a list uses that list, and any other mapping becomes a single row.

Headers are every key found across the records, in the order they first appear, so a key that only some records have gets a column with blanks in the rest. A value that is itself a list or a mapping goes into its cell as compact JSON rather than being dropped or spread across invented columns.

Values keep their YAML types on the way through: numbers and true/false are written as they are, null becomes an empty cell, and text with commas, quotes or line breaks is quoted so the file opens cleanly in any spreadsheet.

What to watch for

Malformed YAML is not converted. You get the line and the problem instead: a tab in the indentation, a duplicate key, a line indented deeper than its neighbours, or an unclosed quote. Anchors, aliases, tags and multi-document files are refused by name.

Spreadsheets reinterpret values when they open a CSV. A ZIP code such as 01234 is written correctly, but Excel may still drop the leading zero on import, so use your spreadsheet's import dialog and mark such columns as text.

Deeply nested records produce JSON-filled cells, which are faithful but not easy to read. If you need those fields as their own columns, flatten the YAML first or convert to JSON and reshape it there.

Confirm the table before you use it

Check the header row against the keys you expected, and look for a column that is empty in most rows: it usually means one record spells a key differently from the rest.

Spot-check a record that has a comma, a quote or a line break in a value to confirm it stayed in one cell, and compare the row count with the number of items in your YAML list.

For official, financial or legal use, treat the CSV as a working copy and verify it against the YAML before submitting or importing it.

Frequently asked questions

A list of mappings gives one row per item, with the keys as column headers. A single mapping gives one row. A mapping that only wraps a list, such as items: followed by records, uses the list.

A value that is itself a list or mapping is written into its cell as compact JSON, so nothing is dropped. Columns are the union of all keys, in the order they first appear.

Only when CSV needs it: a value containing a comma, a quote or a line break is wrapped in quotes so it stays in its own cell.

No. The conversion runs in your browser; your text or file is processed on your own device and, on this site, is not uploaded to a server, and we do not intentionally store it.

Related data tools

Tool last reviewed: September 27, 2026 · Report a problem