Bases (Data Tables) ๐
Reading logs, habit trackers, project boardsโฆ collect your notes into a table, edit them right in the table, and even chart them. It works like a Notion database โ but all the data stays as plain text in your notes' frontmatter!
โ Home: ObsiKO 101
What is a Base? ๐ค
- A
.basefile is a "saved table" โ it remembers which notes to collect (filters), which properties to show as columns, and how to sort. - The data itself is each note's frontmatter (properties like
status: todobetween---lines at the top). One note = one row, one property = one column! - It uses the same format as Obsidian Bases, so .base files made in Obsidian open as-is, and vice versa.
Creating one โ
- Click the folder button in the sidebar โ the dropdown has New Base โธ. Hover it (or tap, on touch) and whole vault / a folder / a tag slides out beside it. Pick a scope and that's all you choose!
- Frequently used properties of the matching notes become columns automatically, and you can rename the file right in the tree the moment it's created.
- Right-clicking empty space in the sidebar โ New Base works too.
- See a whole folder as a table ๐โ๐: On a folder, hit โฏ (or right-click) โ "View this folder as a table". A
<folder name>.baseis created inside that folder and opens right away, already filtered to that folder with sensible columns. If one already exists it opens instead of overwriting โ so once you make it, that file sitting at the top of the folder is your folder table. - Rename or move the folder later and the table's filter follows along (we'll tell you how many were updated).
What you can do in the table ๐ ๏ธ
- Sort: click a column header to cycle ascending โฒ โ descending โผ โ off.
- Columns: hover a header for the โ menu (right-click works too) to rename, move left/right, or remove; the ๏ผ button at the far right adds a column from properties found in your vault.
- Filters ๐ฝ: the funnel button next to the title opens a popover with the active conditions as chips; ๏ผ Filter adds one ("has tag โโ", "status is done") and ร removes it โ three dropdowns, no syntax needed. When filters are on, the button shows a count badge, so a collapsed panel never hides the fact that filtering is active.
- Colored cards ๐จ: if a note has a
colorproperty in its frontmatter, its card takes that color in both the card view and the kanban board (a soft tint plus a colored left rail โ the text stays perfectly readable). Label chips and D-day badges still show as usual. (Bookshelf covers and PARA boards keep their own color systems.) It follows the same color rule as the note's title band and file-tree icon, so there is nothing extra to set up. โ 04-1 Frontmatter Properties - View tabs: one .base can hold several views (table/cards/kanban/chart/project). The tab's โ menu offers rename, switch tableโcardsโkanbanโchartโproject, duplicate, delete, and Export CSV.
Edit right in the cell โ๏ธ
- Click a cell to edit it in place. Column types are detected automatically โ
- โ boolean columns toggle with one click, ๐ date columns get a date picker, ๐ข number columns a numeric input
- ๐ท๏ธ list/tag columns are comma-separated, โ๏ธ text columns get autocomplete from existing values in the column!
- Clearing a value removes the property. Enter=save, Esc=cancel.
- Check several rows with the left checkboxes and a bulk actions bar appears โ change a property on all of them at once, or delete them all in one go.
The ๏ผ new item row ๐ฑ
Type a note name in the dashed input at the bottom of the table and press Enter โ a new note is created pre-filled with frontmatter matching the current filter (tags, folder, properties). Great for entering many items in a row!
To have new cards come with a body outline too, add one line to the .base file: template: Template/Tasks.md (put it under a specific view if you want it per-view). Cards made with ๏ผ then start from that form, not just the properties โ the same slot as Notion's database templates. With no declaration, the card's kind (type) template is used instead โ 17 Structuring Knowledge. On conflict the kanban column's value wins (otherwise the card would land in the wrong column).
โจ Fill with AI (column menu)
Pick Fill with AI in a column's โ menu and AI reads each note's content to decide the value. Try columns like "genre", "difficulty", or "one-line summary". You can fill empty cells only, or refill everything. โ AI Agent
Chart view ๐
Switch a view to chart and the table becomes a graph โ just pick Group by (which property), Aggregate (count/sum/average), and Chart (bar/horizontal bar/line/area/pie/donut/lollipop). Date values and created/modified times are grouped by month automatically, so "books read per month" is one click away.
Reuse it everywhere โป๏ธ
- Embed in a note: one line
![[Reading List.base]]renders a live table right there! Pick a view with#, like![[Reading List.base#Chart]]. It refreshes automatically when notes are saved. - Dashboard board: in Dashboard, pick Show a Base from the query-board presets.
- Mind map card: drop a .base file onto a mind map and the card renders a table snapshot. And if you select that card and press the 'Auto Mind Map' button, you can pick a board (view) and the whole table unfolds into a mind map (status boards get wrapped in colored groups, aligned like a kanban)!
- Export CSV: one click in the view menu โ opens straight in Excel or Google Sheets.
- Ask the AI: on desktop, ask the agent things like "find notes where status is todo" โ it queries properties like a database.
- Ask the AI to build tables: the desktop agent doesn't just query โ it can create and edit .base files themselves โ "make a reading log from the notes in this folder", "as a kanban board by status", "add a monthly-count chart view", "set it up as a project view" (and it seeds matching notes when needed). โ Recipes by Scenario
Kanban board ๐งฎ
Use As kanban in the view menu (tab โ) to see notes as columns by property value (e.g. a status board). Drag a card to another column and that property value is written to the note (press-hold on phone/iPad; edges auto-scroll). For example, move a card from the "In progress" column to the "Done" column and that note's status changes to Done. The ๏ผ in a column header creates a note with that status pre-filled. Columns in the toolbar reorders columns and pre-creates empty ones (like "in progress") that have no cards yet.
- Group by a property that doesn't exist yet: in the group select (or the section โฎ), use '๏ผ Group by new property' and type a name like status into the autocomplete dropdown to start a board from a property no note has yet. Build the columns, drag a card, and that property gets filled in.
- A heads-up when a card drops out of the filter: if the view is filtered by the group property (e.g. a view where status == "todo"), moving a card to another column takes it out of the filter and it vanishes from the list โ but instead of disappearing silently, a toast lets you know ("Changed to Done โ hidden because it no longer matches this list's filter"). The note is safe, so if you keep several per-status sections, the moved card shows up in the matching status section.
- Put cards exactly where you want (manual order) โ: drag cards up and down within a column to set priority โ an insertion line shows where the card will land, and cross-column drops land between the cards you choose too. The order is saved as a small
orderproperty on each note, so it survives sync and renames. If the view has a sort, that sort wins (dragging won't reorder); remove the sort and your manual order comes right back. Right after a move, an Undo pill appears to reverse slips instantly. - ๏ผ is an inline input: press ๏ผ in a column header and an input opens right there โ keep pressing Enter to add cards in a row (new cards land at the top of the column). Paste multiple lines and each line becomes a card โ perfect for transplanting a whole to-do list. Esc closes it.
- Label color chips ๐ท๏ธ: add
labels: [urgent, writing]to a note and colored chips appear on its card. Set colors in the .base withlabelColors:(names like red ยท blue); labels without one get a stable auto color. Click a chip to filter the board to that label (multiple = OR). Want tags as labels? One line:labelProp: tags. - Right-click a card = a mini card window: without opening the note, edit properties, due date, labels โ and check off or add checklist items right there. When an item outgrows the list, hit โคด to promote it to a card in the same column (the original line becomes a link). โโ buttons reorder too.
- Card density presets: the 'Cards' select above the board switches Default / Simple (title + due only) / Cover (image banner). Set a WIP limit per column in column management โ the count turns red when exceeded (never blocks) โ and fold a column with the โพ in its header.
Cards show 1โ2 leading properties of the view, plus a D-day badge when there's a due date (due ยท deadline; soon = amber, overdue = red) and a checklist progress โ 1/2 when the note body has checkboxes. Right-clicking a card edits properties in place without opening the note.
Ready-made preset boards ๐
You don't have to build these from scratch โ pick them from the sidebar ๏ผ menu or the command palette and they're made instantly.
- PARA board ๐๏ธ: gathers notes that have a para value into a kanban with four columns โ project ยท area ยท resource ยท archive. Drag a card to another column and its para changes โ off to Archive when a project wraps up! โ Structuring Knowledge
- Library ๐: a vertical bookshelf (front-facing gallery) view that collects your type: book notes. Drag a cover onto the Done shelf to mark it read, with a reading-progress bar under each cover. โ Library & Reading Log
- Ledger ๐ฐ: gathers your expense and income entry notes into a table plus a summary panel โ income, expenses, and balance by period, budgets, and category shares all on one screen. โ Ledger
Project view ๐๏ธ
Manage a whole project with one base โ a home with cover, status, D-day and progress, with the other views stacked as sections below. Eight templates (web novel, reading, research, tasks, trip, blog, studyโฆ), info-note embed, โจ AI briefing, dashboard and calendar integration โ see 12-1 Project View for the full guide!
Curious about the source? โ View menu โธ Source ๐งโ๐ป
Use ๐ View menu โธ Source (โโงO) at the top to edit the raw YAML (pick it again to return to the table). It's the same place and the same action as Source view for markdown notes. Complex filters the UI doesn't build (nested or/not, date arithmetic) and formula columns (formulas:) can be written in source and are computed in the table.
Formula Columns โ ObsiKO Does the Math โจ๐งฎ
Add expressions under formulas: and each note gets a computed read-only column (formula.<name>). Use property names directly, and reference other formulas as formula.<name>.
No need to open the source โ use ๏ผ โ 'ฦ Add formula column' at the right end of the table to build one in a form, and edit or delete any formula later via โ โ 'ฦ Edit formula' on its column header.
You don't need to know the formula language ๐
Pick a preset and the properties it needs appear right below it. Tap Progress, for example, and you get [Current โผ] [Total โผ] โ choose your own properties and the expression writes itself. No extra screen, no second dialog; it all happens in place.
- If there's exactly one candidate, it's picked for you. If there are several, you choose โ a wrong guess wouldn't be an error, it would be a plausible wrong answer.
- Star rating and Checkbox are never auto-picked. Clicking those in the table writes to a real note property, so ObsiKO always asks.
- The Properties in this table chips drop a property name in at your cursor (no typing property names by hand). Names with spaces can't be used in formulas, so they're dimmed with the reason.
- Presets this table can't use are dimmed โ with no date property, D-day fades out. They're never hidden, and you can still tap them.
- The preview shows what produced what โ Demian ยท read_pages 300 ยท total_pages 300 โ 100.
๐ก The property names in the presets are just examples. If your notes use different names, the preview tells you "No note in this table has a โโ property yet" and gives you
deadline โ [replace with โผ]right there to swap in a property this table actually has. Notes that don't have the property yet simply stay blank, not an error, and saving is never blocked (you can add the property later).
formulas:
total: price * qty
grade: score >= 90 ? "A" : score >= 80 ? "B" : "C"
dday: dateDiff(today(), due)
dueweek: dateFormat(due, "MM.DD") + " (" + weekday(due) + ")"
avgscore: round(scores.avg(), 1)
authors: author.split(",").unique().sort().join(" ยท ")
budget: coalesce(budget, 0) > 0 ? "set" : "TBD"
Group, split, and count links ๐งฉ
- Group by: on a column header, โ โ 'Group by this column' โ matching values gather under a group header. Click a header to collapse it, and use another column's โ โ 'Group summary' to show that group's sum ยท average ยท min ยท max ยท count right in the header. (Table and card views.)
- Show each value separately (unroll): for a multi-value column like
owner: [Minsu, Yuna], โ โ 'Show each value separately' splits that note into one row per value. Perfect for counting or grouping per person or per tag! (The unrolled column becomes read-only โ there'd be no way to tell which value you meant to edit.) - Links are data too: count
file.inlinks(notes pointing at this one) andfile.outlinks(notes this one points at) directly โ afile.inlinks.count()column makes notes nobody links to obvious at a glance. (Ready as the Link count and Task progress formula presets.) - Also available:
file.taskCountยทfile.taskDone(checkboxes in the body) andfile.day(if the filename is2026-08-15, that date โ no frontmatter needed for date-named notes).
It reads properties written in the body too ๐
Values written in the body as status:: in progress โ not in frontmatter โ are picked up by tables all the same (so opening an Obsidian Dataview vault doesn't make your data vanish). Mid-sentence works too: I'd rate it [rating:: 9].
- Frontmatter always wins โ if the same name exists in both, the frontmatter value is used.
- ObsiKO never writes in this syntax (frontmatter is the standard home for properties). It only reads.
- Flashcards use the same symbol (front::back), so notes tagged #flashcards are skipped entirely โ no card ever turns into a property!
Automatic values in your text: = expression โจ
Write `= dateDiff(today(), deadline)` mid-sentence and the computed value shows up right there. It's the exact same syntax as the formulas above โ nothing new to learn!
- Put the cursor on that line and the original expression comes back so you can edit it. The file keeps the expression, so Obsidian shows the same value.
- Anything works: `= file.inlinks.count()`, `= round(cost * 1.1)`. If it isn't a valid expression, nothing is changed and the text stays as written.
What you can use:
- Operators: + - * / %, comparisons (== != > <โฆ), && || !, ternary cond ? a : b, parentheses. Date ยฑ duration works too (due + duration("1 week")).
- Numbers: abs round(x, digits) floor ceil sqrt pow clamp(v, min, max) min max sum average(avg) number
- Dates: now() today() date("2026-07-17") duration("3 days") year month day hour minute weekday (day name) dateFormat(d, "YYYY.MM.DD HH:mm ddd") dateDiff(from, to, "days")
- Conditions & defaults: if(cond, a, b) (= choice) ยท coalesce(v1, v2, โฆ) (= default, first non-empty value โ great for missing frontmatter)
- String methods: .lower() .upper() .trim() .slice(0,5) .replace("a","b") .split(",") .padStart(3,"0") .repeat(n) .contains() .startsWith() .endsWith() .isEmpty() .toFixed(1) .length
- List methods (tags, multi-value props): .first() .last() .count() .sort()/.sort("desc") .reverse() .unique() .sum() .avg() .join(" ยท ")
Widget formulas โ star rating โญ ยท checkbox โ ยท progress โฐ
Formula columns aren't just text! Three of them are drawn as widgets right in the table.
- Star rating stars(rating): the cell shows 5 stars. Click (tap) a star and that count is written straight to the rating property; click the same star again to clear it to 0!
- Checkbox checkbox(done): the cell shows a checkbox that toggles the done property true/false.
- Progress progress(read_pages, total_pages): the cell shows a bar and a %, turning green when full. Already have a percentage? progress(completion) with a single value works too.
- Progress is display only (unlike stars and checkboxes you can't click to change it โ the percentage comes from the underlying properties).
- Notes where the total is 0, or the values are missing, stay blank instead of showing a strange number.
- Columns you built earlier with round(read_pages / total_pages * 100) become bars too โ no need to touch the file.
- Pick 'Star rating', 'Checkbox' or 'Progress' from the presets in the add-formula form and it's set up in one go. Picking a preset fills in the formula name too (a name you typed yourself is left alone). Sorting and aggregation use the underlying values as usual.
Linking notes and calculating across them โ relations & rollups ๐๐งฎ
Notion's Relation and Rollup, right here in ObsiKO. Except there's no separate database โ a [[wiki link]] in your frontmatter simply is the relation.
---
title: New product launch
para: project
parent_area: "[[Marketing]]" # โ this one line is the "relation"
done: false
---
That's all it takes to pull values from the note on the other end straight into your table.
Grab a value from the other note โ just one dot .
In a formula column, write relationProperty.propertyToFetch.
formulas:
Area status: parent_area.status # the status of the parent area note
Area name: parent_area.file.name # the other note's file name
Author country: authors.country # several links? several results!
- If there are multiple links (
authors: ["[[A. Kim]]", "[[B. Lee]]"]), you get a list of values back. - If a link is broken or the note doesn't exist, you quietly get an empty value (no errors!).
- When several notes share a name, we pick smartly: โ same folder โ โก shallower path โ โข most recently edited.
Counting the notes that point at you โ rollups with backlinks()
It works in reverse too! Gather "every note that points at me via parent_area" and count or total them. Especially handy in a table of Area notes.
formulas:
Projects: backlinks("parent_area").count()
In progress: backlinks("parent_area").where("done", "!=", true).count()
Total budget: backlinks("parent_area").sum("budget")
List: backlinks("parent_area").join(" ยท ")
- Add conditions with
.where(property, comparison, value)โ==!=><>=<=are available. - Aggregations include
countsumavgminmaxjoinuniquefirstlastanyallvaluescountNonEmpty. - Mix them with the functions above:
round(backlinks("parent_area").avg("progress"), 1)
Want it more explicit? Use the function form
Functions do exactly the same thing as the dot notation โ handy when property names contain dots or spaces.
| Written as | Meaning |
|---|---|
link(parent_area).status |
follow one link and read a value |
links(authors).count() |
treat several links as a list |
backlinks("parent_area") |
notes pointing at me via that property (= inbound(...)) |
๐ก Why build it this way: put relations in a separate database and they vanish the moment you move a note or open it in another app. In ObsiKO a relation is just one line of Markdown, so Obsidian sees an ordinary wiki link โ and it shows up naturally in the Connections panel and Graph View too. โ Structuring Knowledge
Dress up the view title โ banner color & name ๐จ
- Every base view's title line has the type icon plus ๐ฝ (filters), ๐จ (header color), โ (rename) and ? (help) buttons side by side. When you paint a header color, these buttons flip to white or black along with the title so nothing sticks out.
- Press ๐จ for 6 preset colors โ the whole top of the view becomes a color banner, from the tab row down through the title (like a Notion cover!). Text color flips automatically between white and black to match the background brightness. Press โ to go back to normal.
- For a colour outside the presets, the palette button in the last slot opens the Colors panel โ pick a colour there and press Set as note colour (on a base that means the header colour). Merely opening the popover no longer drags the panel open with it.
- A title renamed with โ is stored separately from the file name (clear it to follow the file name again).
- Bookmark ๐: keep a table you use often with the bookmark ribbon at the top right โ the very same spot as markdown notes and mindmaps. If you picked a header colour, the ribbon goes light or dark to match it. โ 07 Search & Navigation
Good to know ๐ก
- Round-tripping with Obsidian is safe โ settings ObsiKO doesn't know are preserved (though comments in the source are lost when you edit via the UI).
- Since the data is your note files themselves, backup, sync and migration are effortless, and it connects naturally with tags and the graph view.
โ Previous: Map Drawing ยท Home ยท Next: Project View โ