Excel to YAML Converter
Turn Excel rows into YAML records for config, fixtures, documentation, and developer workflows. Your workbook stays in your browser.
Drop your files here or click to upload
Supports .xlsx, .xls, .xlsm, .xlsb · up to 50MB · or paste a file from your clipboard
How to Export Excel Tables
- Upload an Excel workbook - Your file is opened locally in the browser.
- Choose the worksheet and format - Export Markdown, LaTeX, YAML, or TSV from the same data.
- Copy or download the result - Use the output in docs, reports, repositories, or data pipelines.
What's next?
Keep going with one of these tools.
What the YAML Output Looks Like
Each row becomes one record in a sequence, with the header row supplying quoted keys and two-space indentation under the dash:
- "region": North
"units": 120
"revenue": 4820.5
"active": true
"owner": "Ada Lovelace"
- "region": South
"units": 98
"revenue": 3910
"active": false
"owner": nullTurn off "first row as headers" and the output becomes a sequence of sequences instead - a list of rows, each a list of cell values - which is the shape to use when the sheet has no header row or when the consumer wants positional data.
How Cell Types Cross Over
| In the sheet | In the YAML |
|---|---|
| Number | A bare number, trimmed to the precision the workbook shows (1.1, not 1.1000000000000001) |
| TRUE / FALSE | true / false |
| Empty cell or empty string | null |
Simple text (letters, digits, . - _ /) | Written bare, without quotes |
| Text with spaces, colons, quotes, accents or emoji | Double-quoted with JSON escaping, so it always parses |
| Date cell | The underlying serial number, for example 45292 |
| Formula | Its last calculated result, never the formula text |
Edge Cases and Limits
- Header cleanup - blank header cells become Column N, and duplicate headers get a numeric suffix, so every key in a record is unique.
- An empty sheet, or a sheet with headers but no data rows, exports as
[]rather than as nothing. - No anchors, aliases, comments or multi-document markers are written; the output is one plain document.
- No nesting - a column called
address.citystays a key calledaddress.city; it is not expanded into a nested map. - One sheet at a time in the interactive view. Dropping several workbooks converts each file's first sheet and returns a ZIP of .yaml files.
- Downloads have no byte-order mark, because a BOM is a syntax error for most YAML parsers.
Using the Output as Config or Fixtures
The most common reason to take rows out of a spreadsheet as YAML is that a human maintains the list and a program consumes it: feature flags, seed data, translation strings, environment definitions, test fixtures. Three habits make that workflow reliable:
- Keep the sheet the source of truth and re-export, rather than editing the YAML and the sheet in parallel. The export is deterministic - the same sheet always produces the same file - so it diffs cleanly in version control.
- Name headers the way the consumer wants keys. Header text becomes the key verbatim, so a column called "Display Name" becomes the key "Display Name". Rename it to display_name in the sheet.
- Indent it into place if you need a wrapper. The output is always a top-level sequence; to nest it under a key such as
users:, paste it below that key and indent the block by two spaces.
The file is written without a byte-order mark, which matters because a BOM is a syntax error for most YAML parsers, and with Unix line endings inside each record.
When to Use a Different Tool
For the reverse direction use YAML to Excel. If the consumer is code rather than a config file, Excel to JSON gives a single array and Excel to JSONL gives one object per line for streaming and log pipelines. The same export screen here also writes Markdown tables and LaTeX tabular from the identical worksheet, and Excel to SQL writes INSERT statements when the destination is a database.
Frequently Asked Questions
A top-level sequence of mappings: one block per spreadsheet row, with the header row supplying the keys. Keys are always double-quoted so a header like 'on', 'yes' or '12' can never be reinterpreted as a boolean or a number. Nested structures are not produced - a flat sheet becomes a flat list of records.
As null. An empty cell and a cell containing an empty string are indistinguishable once the value leaves Excel, and null is the value most config loaders and schema validators expect. Ragged rows are padded first, so every record has the same set of keys in the same order.
Values are quoted only when they need to be. A value made purely of letters, digits, dots, dashes, underscores or slashes is written bare, so 007 is written as 007 and a YAML parser reads it as the integer 7 - the same is true of a text cell holding 2024-01-02, which parsers read as a date. Anything with a space, a colon, a quote or other punctuation is JSON-quoted automatically. If those zero-padded codes matter, add quotes to that field in the output before loading it.
Excel stores a date as a serial number and keeps the display format in the workbook's styles, which do not travel with the values. 45292 is 1 January 2024. Add a =TEXT(A2,"yyyy-mm-dd") helper column and export that if you need readable dates - and see the note above about how a bare date string is then read back.
Yes. YAML to Excel reads a sequence of mappings, or an object whose properties are sequences of mappings, and writes one sheet per list. Nested maps arrive as dot-notation columns and lists as JSON text, so a round trip through both tools is lossless for flat data.