Basify
approvedby leolaurindo
Convert lists, tables and task lists into Obsidian base. One note per item. - This plugin has not been manually reviewed by Obsidian staff.
Basify
Convert a selected list, task list, or table into an Obsidian base.
Each list item, checkbox, or table row becomes its own note with frontmatter yaml, and Basify creates a base that shows those notes as a table.
Usage
- Select a list, task list or a table in the editor (or place the cursor inside one).
- Run the command Convert selection to base.
- Adjust anything you want in the dialog, then Convert.
- Basify extracts frontmatter yaml fields and creates one note per item, then the base as file or inplace.
Your choices are remembered and prefilled the next time. Even though the parser and dialog helps normalizing file names, field names and dates, I advise you to use a Linter along with Basify.
Examples
Lists
Every item becomes a note named after it.
- Alan Turing
- Grace Hopper
Becomes Alan Turing.md and Grace Hopper.md. The .base file is named after the output folder (for example People.base for the People folder).
Task lists
Checkbox lists become notes with a boolean property for the checkbox state ([x] → true, [ ] → false).
- [x] Buy milk type: groceries
- [ ] Pay bills due:2026-08-04
Becomes Buy milk.md (with status: true and type: groceries) and Pay bills.md (with status: false and due: 2026-08-04), and the base shows a checkable status column.
Tables
One column becomes the note filenames (you can choose); every other column becomes a frontmatter property.
| Name | Author | Year |
|---|---|---|
| Rebellion in the Backlands | Euclides da Cunha | 1902 |
| What is the Third State? | Seiyès | 1788 |
| The Black Jacobins | C. L. R. James | 1938 |
| John Coltrane: His Life and Music | Lewis Porter | 1998 |
These become, depending on the normalization you choose
Rebellion in the Backlands.md
what-is-the-third-state.md # converting spaces into dashes and toggle lowercase
The_Black_Jacobins.md # converting spaces to underscores
John-Coltrane-His-Life-and-Music.md # converting spaces into dashes
... each with author and year properties, and a base that reproduces the table.
Even though obsidian's markdown don't recognize tables without a header row as tables they are supported too — columns are named Column 1, Column 2, ... and you can rename them with the field names option in the dialog.
Configs
Everything you can configure in the dialog:
Folders
- Output folder — where the notes are created.
- Base files folder — where the
.basefile is created.
Note names
- Spaces in names — separator used in the note file names: keep spaces, or replace with dashes or underscores. This adapts to your filesystem preferences; bases work with any of them.
- File name field — optional property that also stores the note name (for example
title), with its own spaces in name field separator and lowercase name field option, independent of the filename. - Lowercase file names - use lowercase letters in the note file names (the file name field, if set, keeps its original case)
- Lowercase property names — use lowercase letters in the frontmatter property names (for example
Publication Year→publication_year).
List metadata (lists and task lists)
- Extract tags —
#tag(and nested#tag/sub) become atagslist property. - Extract dates — labeled dates like
due:2025-01-01,start:2026-08-01, or@2023-04-05become fields named after the label (due,start,date, ...). An unlisted label (e.g.meeting:2026-01-01) falls back to adatefield — only the first one; extra ones stay in the name. - Dynamic field extraction — every
key:valuepair becomes a field (sotype: task→ atypefield). It supersedes the tag and date options: when it's on, tags and dates are extracted too.
Extracted metadata is removed from the note filename.
Task lists
- Status field — property name for the checkbox state (default
status).
Tables
- Filename column — which column becomes the note filenames.
- Field names — for headerless tables, name each column's property (default
Column 1,Column 2, ...).
Base
- Create base as — create a
.basefile, or Embed in this note (insert abasecode block in place of the selection). - Embed base file in this note — under
.basefile mode, also insert a link to the base file in the current note.
Fields
Property names are normalized to work in bases: spaces and dashes become underscores (for example Publication Year becomes Publication_Year), and can optionally be lowercased (publication_year).
Values are converted with minimal parsing, so Obsidian keeps useful types:
- Numbers (e.g.
1867) stay numbers. - The words
trueandfalsebecome booleans; checkbox lists always produce a booleanstatus. - Everything else stays plain text.
For better cleaning and normalization of the generated frontmatter, install the Linter community plugin and run it after converting.
Settings
In Settings → Community plugins → Basify you can control which folders the dialog is prefilled with:
- Default output folder — the folder shown for the notes.
- Default base files folder — the folder shown for the
.basefile.
Each can be one of:
- Same folder as the active note (default) — prefilled from the note you're editing.
- Last used — prefilled with the folder from your previous conversion.
- Fixed path — prefilled with a path you type in the settings.
The dialog is always the source of truth: whatever you set there is what's used, and it becomes the "last used" value for the next time.
Back up your vault
Basify creates new files but never modifies or deletes existing ones. Still, make sure you have a backup of your vault before using it, as with any vault automation.
Install
- Copy
main.js,manifest.json,styles.cssto<Vault>/.obsidian/plugins/basify/. - Enable the plugin in Settings → Community plugins.
Requires Obsidian 1.13.0+ (Bases).
Develop
npm install
npm run dev # watch mode
npm run build # production build (tsc + esbuild)
npm run test # unit tests (no extra dependencies)
npm run lint # eslint
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.