ToolFeather
Developer / SEORuns in your browser

CSV to YAML Converter

Turn a spreadsheet export into YAML: every row becomes a map in a YAML list, numbers and booleans become real values, and headers like address.city can nest.

Quick presets

CSV to YAML Converter

CSV
YAML

Table preview –

Runs in your browser — nothing you enter is uploaded or stored.

ToolFeather · CSV → YAML
Scratchpad auto-saved
Stored in this browser (localStorage)
Step-by-step~40s read

How it works — in four simple steps

No signup and nothing to install — it all runs in your browser.

1

Add your CSV

Paste it into the left box, press Open file, or drag a .csv file onto it. Sample loads a realistic example.

2

Set the options

Adjust the options above the boxes — the output updates instantly as you change them.

3

Check the result

Read the status line: it reports rows, keys and any value that couldn't be represented in YAML.

4

Copy or download

Copy the YAML or download it as a .yaml file. Nothing was uploaded at any point.

Pro tip

Name columns like social.github and tick Nest dotted headers to build nested YAML from a flat sheet.

Features

Delimiter auto-detection

Comma, semicolon, tab or pipe is sniffed from the first lines — European Excel exports with ; just work.

Header row or not

Use the first row as field names, or treat every row as data with generated column1, column2… names.

Real types, not just strings

Numbers, booleans and empty values are detected — while codes with leading zeros such as 00742 or +44 phone numbers stay text.

Rebuild nested objects

Headers like address.city can be folded back into nested objects instead of flat dotted keys.

Document marker

Optionally start the file with --- for tools that expect an explicit YAML document.

Private by design

Parsing and conversion run in your browser with JavaScript — your data is never uploaded, logged or stored.

About the CSV to YAML Converter

YAML data files — Jekyll and Hugo _data files, Ansible inventories and variables, test fixtures, i18n strings — are often maintained in a spreadsheet and exported as CSV. Converting CSV to YAML gives you a list of maps: one - entry per row, one key: value per column, keyed by the header row.

The CSV is read with an RFC 4180 parser, so quoted commas and line breaks inside cells are handled, and the delimiter is detected automatically. With Detect numbers & booleans on, 42, 3.5, true and false become YAML numbers and booleans, empty cells become null, and values with leading zeros (007, ZIP codes) stay strings. Tick Nest dotted headers to turn columns like address.city and address.zip into a nested address: map.

On output, any string YAML would reinterpret — yes, no, on, off, a date like 2026-10-21, a time like 12:30 — is quoted, so a country code column containing NO for Norway doesn't turn into false.

Examples

A team list for a static-site data file, with a country code that YAML 1.1 would read as false and a dotted header to nest.

CSV input
name,role,country,social.github,since
Ada Lovelace,Engineer,GB,ada,2024
Ola Nordmann,Designer,NO,olan,2025
Grace Hopper,Admiral,US,,2023
YAML output
- name: Ada Lovelace
  role: Engineer
  country: GB
  social:
    github: ada
  since: 2024
- name: Ola Nordmann
  role: Designer
  country: "NO"
  social:
    github: olan
  since: 2025
- name: Grace Hopper
  role: Admiral
  country: US
  social:
    github: null
  since: 2023

This output was produced by the converter on this page with Nest dotted headers switched on — load it with the “Team data file” preset above and change any option to see the effect.

How CSV maps to YAML

In CSVBecomes in YAML
Header rowthe keys of every map
Each data rowone list entry - key: value
42, true42, true (typed)
007"007" (string, zeros kept)
Empty cellnull
Header address.city + Nestaddress: / city: …
NO (Norway)"NO" — quoted so it stays a string

Things that trip people up

CSV vs YAML at a glance

PropertyCSVYAML
SpecificationRFC 4180 (2005)YAML 1.2.2 (2021)
File extension.csv.yaml / .yml
Media typetext/csvapplication/yaml (RFC 9512)
Data typestext only — every cell is a stringstring, int, float, bool, null, map, sequence (+ dates in many parsers)
CommentsNoYes #
NestingNone (flat rows)Unlimited (indentation)

Frequently asked questions

5 answers
What does CSV look like in YAML?
A YAML sequence of mappings: each row becomes an entry starting with - and each column becomes a key: value pair on that entry.
Can I make nested YAML from flat CSV?
Yes. Name columns with dots, like address.city and address.zip, and tick Nest dotted headers to get a nested address map.
Why are some values in quotes?
To stop YAML parsers turning them into something else: yes/no/on/off become booleans, and 2026-10-21 can become a date. Quoting keeps the CSV value as written.
Can I use the output as a Jekyll or Hugo data file?
Yes — save it as _data/people.yml (Jekyll) or data/people.yaml (Hugo) and loop over it in your templates.
Is my data uploaded anywhere?
No. The CSV is parsed and converted by JavaScript in your browser tab; nothing is sent to a server, so it is safe for internal exports, customer lists and configuration files with secrets.