YAML to CSV

Flatten a YAML list (or mapping) of records into a CSV table. Nested mappings become dot-path columns; the header is the union of every record's keys. Runs entirely in your browser, no upload.

Try:
CSV

What this tool does

Turn a block of YAML into a CSV table you can open in a spreadsheet. Paste a top-level list of records, or a mapping whose values are records, and every record becomes one row. The header is the union of every record's keys, in the order they are first seen, so rows that are missing a field simply leave that cell blank instead of shifting columns. Nested mappings are flattened to dot-path columns (address.city), and arrays are rendered the way you choose. Everything runs in your browser — the YAML never leaves your device.

How the shape is read

Options

Limits

FAQ

Is my data uploaded anywhere?

No. The conversion runs entirely in your browser with WebAssembly, so the YAML you paste never leaves your device and the tool keeps working offline once the page has loaded.

What happens when records don't all have the same keys?

The header is the union of every record's keys, in first-seen order. A record that is missing a key just gets an empty cell for that column, so columns never shift out of alignment.

How are nested objects and arrays handled?

Nested mappings are flattened to dot-path columns — address: {city: London} becomes a column named address.city. Arrays follow the Array handling option: kept as a compact JSON string, joined into one cell, or expanded into name.0, name.1 columns.

Which delimiters and quoting rules are used?

Pick comma, semicolon, tab, or pipe as the delimiter. Fields are quoted only when they contain the delimiter, a double quote, or a newline (embedded quotes are doubled), following the usual CSV rules — or turn on Quote every field to quote everything.

Why do I get an "unsupported top-level YAML shape" error?

The converter needs records to build columns from. A top-level list of records or a mapping of records works; a bare scalar (just a string) or a list of plain scalars has no fields to become columns, so it is rejected with a clear message.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool yaml-to-csv "alice:
  age: 30
  city: Paris
bob:
  age: 40
  city: Berlin"

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/yaml-to-csv/?data=alice%3A%0A%20%20age%3A%2030%0A%20%20city%3A%20Paris%0Abob%3A%0A%20%20age%3A%2040%0A%20%20city%3A%20Berlin&delimiter=comma&header=true&array_mode=json&quote_all=true&key_column=key

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.