A lightweight, offline-capable browser tool that converts CSV or TSV spreadsheet data into Obsidian-ready .md files with YAML frontmatter — one file per row, downloaded as a ZIP.
No install. No account. No internet required once saved locally. Open the HTML file and go.




text, number, date, boolean, list, or link, each formatted correctly in YAMLMM/DD/YYYY, D-M-YYYY, written month names, and Excel serial numbers to YYYY-MM-DD automatically.md file's namejszip.min.js is saved locallyKeep these three files in the same folder:
obsidian-note-generator/
├── obsidian-note-generator.html ← open this in your browser
├── styles.css ← stylesheet
└── jszip.min.js ← bundled locally for offline use
To go fully offline, also remove the Google Fonts @import line at the top of styles.css. The fallback fonts are monospace and sans-serif (Courier New / Arial on Windows, Menlo / Helvetica on Mac).
1. Open obsidian-note-generator.html in any modern browser.
2. Load your data — either drag your .csv or .tsv file onto the drop zone, or paste the raw CSV text directly.
3. Configure columns — for each column detected from your header row:
.md file4. Check the preview — the first row renders as live YAML so you can catch any issues before generating.
5. Click Download — a obsidian-notes.zip file downloads containing one .md file per row.
6. Unzip into your vault — drop the files into the relevant folder in Obsidian.
| Type | YAML output | Notes |
|---|---|---|
text | property: "value" | Default. Handles commas and special characters safely. |
number | property: 1234 | Unquoted. Falls back to quoted text if the value isn't numeric. |
date | property: 2024-03-15 | Normalizes multiple input formats to YYYY-MM-DD. |
boolean | property: true | Recognizes true, yes, 1 as true; everything else is false. |
list | property:- "value" | Multi-value list. Each CSV cell becomes a single-item list. |
link | property: "[[value]]" | Wraps the value in Obsidian internal link syntax. |
When a column is set to date, the tool attempts to parse and reformat to YYYY-MM-DD:
| Input format | Example | Output |
|---|---|---|
| Already correct | 2024-03-15 | 2024-03-15 |
| US (Excel default) | 3/15/2024 | 2024-03-15 |
| European | 15-3-2024 or 15.3.2024 | 2024-03-15 |
| Written month | March 15, 2024 | 2024-03-15 |
| Short month | Mar 15 2024 | 2024-03-15 |
| Excel serial | 45366 | 2024-03-15 |
If the value can't be parsed, it's passed through as-is rather than corrupted.
.txt) to avoid the issue entirely.number so Obsidian treats them as numeric properties. Make sure the values contain no letters or symbols.link type to wrap values in [[...]]. If you need multiple links in one property, use list type and manually format values as [[Note Name]] in your source data.account-holder-name). The tool slugifies automatically, but names with spaces or special characters will need bracket syntax in Obsidian Bases formulas: note["Property Name"].jszip.min.js from:
https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js
obsidian-note-generator.html, change:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"></script>
to:
<script src="jszip.min.js"></script>
@import line at the top of styles.css to drop the Google Fonts dependency too.See sample-accounts.csv for a ready-to-use test file.
2026.04.03-04