YAML to Excel Converter
Paste YAML records or upload a .yaml file and download the data as an Excel workbook.
How to Convert YAML to Excel
- Paste YAML or upload a file - .yaml, .yml and .txt are accepted, one at a time or as a batch that returns a ZIP.
- Read the summary - it names how many tables were detected and how many rows they hold, or explains why the document cannot be turned into rows.
- Download XLSX - one sheet per list of records, with a header row of column names.
Which YAML Becomes Which Sheet
| Top-level shape | Result |
|---|---|
| A sequence of mappings | One sheet named YAML, one row per item |
| A mapping whose properties hold sequences of mappings | One sheet per such property, named after the key |
| A sequence of scalars, or a mapping of scalars | Rejected - there are no records to make rows from |
| Several documents separated by --- | Rejected - the loader reads a single document |
In the second shape, properties that are not lists of mappings are skipped rather than failing the whole file, so a config file with a version string at the top and two lists underneath converts into two sheets and quietly ignores the version.
How Fields Become Columns
- Columns are the union of keys across every record in that list, in the order they are first seen. A record missing a key gets an empty cell.
- Nested mappings flatten with dots:
owner.email,address.city. The nesting depth is unlimited. - Lists become JSON text in a single cell, so nothing is silently dropped and the value can be parsed again later.
- Scalars keep their type - numbers are numeric cells, true and false are boolean cells, null and empty values are empty cells.
- Unquoted timestamps are the exception: they are parsed as dates and then produce no column at all. Quote them in the source if you need them.
- Sheet names come from the property key, cleaned of characters Excel forbids and trimmed to 31 characters, with a numeric suffix if two keys collide.
What to Do with a Config File That Is Not a List
Plenty of real YAML is a tree rather than a table: a deployment manifest, a CI pipeline, an application config. There is no honest way to turn a tree into rows without inventing a structure, so the converter refuses instead of guessing. Two practical routes:
- Convert the part that is a list. If the file has a section that holds repeated records - services, jobs, users, environments - copy that section into the box with its key at the top level, and it converts into a sheet named after that key.
- Reshape the tree into records. A mapping keyed by name, such as
users: {ada: {role: admin}}, becomes a list by rewriting it as a sequence with the name as a field:users: [{name: ada, role: admin}].
The summary line is the fastest feedback loop here: it names how many tables were detected and how many rows they contain as you type, and shows the loader's own error - including the line and column of a syntax problem - when the document cannot be parsed at all.
When to Use a Different Tool
For the reverse direction, Excel to YAML turns a worksheet back into a sequence of records. If your data is JSON rather than YAML, JSON to Excel handles arrays and nested objects, and JSONL to Excel handles one-object-per-line files from logs and data pipelines. A YAML file that is really a configuration tree rather than a list of records has no faithful spreadsheet form - flatten the part you need into a list first.
Frequently Asked Questions
Two. A document whose top level is a sequence of mappings becomes one sheet called YAML. A document whose top level is a mapping becomes one sheet for each property that holds a sequence of mappings, named after that property. Anything else - a sequence of plain scalars, a mapping of scalars, a bare value - is rejected with 'YAML must contain an array of objects', because there are no records to turn into rows.
A nested mapping is flattened into dot-notation columns, so address: {city: Paris} becomes a column called address.city. A list, or anything else that is not a string, number, boolean or null, is written into the cell as JSON text - tags: [a, b] becomes ["a","b"]. Columns are the union of every record's keys in first-seen order, so records that omit a key simply get an empty cell.
A bare timestamp like 2024-01-02 is parsed by the YAML loader as a date value rather than as text, and a date has no properties to flatten into a column, so the field is dropped. Quote it in the YAML ('2024-01-02') and it arrives as a normal text column. This is the one silent data loss in the converter, and it is worth checking for when a column you expected is missing.
No. Files with --- document separators are rejected by the loader with 'expected a single document in the stream'. Split the documents into separate files, or convert them one at a time.
Yes, for scalars. Numbers stay numbers and booleans stay TRUE/FALSE in Excel rather than becoming text, and null or an empty value becomes an empty cell. Anchors and aliases are expanded by the loader before conversion, so a record built from a shared anchor arrives with all of its keys filled in.