· 5 min read
3 CSV to YAML Frontmatter Tools Compared
Heshan Fernando
Co-founder & COO
Someone hands you a spreadsheet of forty content items — titles, dates, authors, a tags column with comma-separated values — and the static site they are going into wants each one as a Markdown file with YAML frontmatter at the top. Doing that by hand is forty rounds of copy, paste, quote, indent.
The generic answer is a CSV-to-YAML converter, and there are plenty. The mismatch is that they produce a YAML document representing the whole table — a list of objects — when what you need is one small frontmatter block per row, delimited by triple dashes, with the tags column split into a proper array rather than left as a single string containing commas.
How to judge a CSV to frontmatter tool
Does it output per row, or one document? A single YAML array of forty objects still leaves you splitting it up by hand.
Does it handle array-valued cells? Tags, categories, and authors are usually comma-separated inside one cell, and they need to become a YAML list, not a string.
Does it quote correctly? Titles with colons, apostrophes, and leading numbers all break YAML parsing if they are emitted bare.
Does it stay local? Content spreadsheets often include unpublished material.
The comparison
| Tool | Best for | Free tier | Watch out |
|---|---|---|---|
| TableConvert | Converting between many table formats with an editable grid | Free, no registration, client-side, up to 10MB | Produces a YAML document for the table, not one frontmatter block per row |
| ConvertCSV | Fine-grained control over input parsing and output shape | Free, no account mentioned | Dense options-heavy interface that takes a minute to configure |
| CSVJSON | Quick CSV to JSON when JSON is what you actually need | Free, no registration | No YAML output — JSON array or hash only |
Facts checked August 2026; plans can change.
TableConvert
TableConvert is the most polished general-purpose converter here. It handles conversion between more than thirty formats including CSV, JSON, Markdown, LaTeX, and SQL, states that everything is free with no registration or hidden fees, and processes client-side so your data never leaves the device. There is a table editor in the middle, which is genuinely useful when the CSV needs a quick fix before conversion.
It also states a 10MB file limit for the free online converter. And crucially, its YAML output is a document describing the table — a list of mappings — so turning that into individual frontmatter blocks is still your job.
ConvertCSV
ConvertCSV is the workhorse of this category. It exposes an unusual amount of control over how the input is parsed and how the output is shaped, which means you can usually coax it into something close to what you want even for awkward source data. No account or paywall is mentioned.
The price is a busy interface. Between input options, output options, and a generate button, there is real configuration to work through before you see a result — worth it for a repeated job, heavy for a one-off.
CSVJSON
CSVJSON does CSV to JSON, JSON to CSV, and SQL to JSON, in the browser, free and without registration, with a choice of array or hash output. If your target actually accepts JSON — a data file rather than frontmatter — it is quick and unfussy.
It does not output YAML at all, so for the frontmatter job it is a stepping stone at best: convert to JSON, then convert JSON to YAML somewhere else, then split into blocks.
CSV to Markdown Frontmatter
Ours is shaped for the specific job. It converts CSV rows into Markdown YAML frontmatter blocks, mapping each column to a key and splitting comma-separated cells into arrays, so a tags column becomes a real YAML list rather than one long string. The output is ready to paste into your files. Everything runs in your browser.
The limitations are worth knowing. It generates frontmatter, not files — it will not create forty .md files on disk or name them for you, so you are still doing the file creation, whether by hand or with a script. And it maps columns to keys directly, so your CSV headers need to match the field names your site’s content schema expects; it does not rename or validate against a schema.
Which one to pick
- If you want an editable grid and many output formats, use TableConvert.
- If your source CSV is messy and needs parsing options, ConvertCSV gives you the most control.
- If your target is JSON rather than YAML, CSVJSON is the direct route.
- If you specifically need per-row frontmatter blocks with array columns handled, use ours.
How to do it with CSV to Markdown Frontmatter
- Open the CSV to Markdown Frontmatter tool.
- Paste your CSV, with headers named to match your site’s frontmatter fields.
- Copy the generated blocks and paste each into its Markdown file.
- Validate the result before building. More data tools are in the tools directory.
You might also need
- YAML Validator — to catch a quoting problem before your build does.
- Markdown Editor — for writing the body under the frontmatter you just generated.
Frequently asked questions
Is there a free CSV to YAML tool that doesn’t need an account?
Yes — all three tools above are free without registration, and our frontmatter generator has no accounts because the site has no signup. TableConvert and ours both process in the browser rather than uploading.
Why does my frontmatter break the build?
Usually quoting. A title containing a colon followed by a space, a value starting with a special character, or an unquoted string that looks like a boolean or a date will all parse as something other than what you meant. The YAML specification covers the rules; in practice, quoting every string value avoids most of it.
How do I turn a comma-separated cell into a YAML list?
The cell astro,blog,tools needs to become a YAML sequence, either inline as ["astro", "blog", "tools"] or as indented dash-prefixed lines. Splitting on the comma and trimming whitespace is the whole trick — the mistake is leaving it as one string.
Final thought
Pick the converter that matches the shape you need, not just the formats it names. Most of the work in this task is not CSV to YAML — it is one block per row, with the array columns handled properly.