# Obsidian Bases
Obsidian Bases is an [[Obsidian]] core plugin that enables turning any set of notes into a database that you can query, filter, sort, ...
Another way to put it: Obsidian Bases provide filtered and sortable lists of notes & properties. Each Base can include different views, displaying the information as tables or cards, each with specific properties (actual properties on the notes, file properties or values derived by formulas)
Obsidian Bases are a bit similar to Databases in [[Notion]], but a gazillion times faster.
![[Obsidian Bases - cover.png]]
Each Obsidian Base defines a set of filters that determine which notes are included, one or multiple views, each with their own layout as well as the properties to display for each, their display name, etc.
Currently, Obsidian Bases support two layouts for views:
- Table (default)
- Cards
The Cards view supports using one of the property values as a cover. That property should either contain the path to an [attachment](https://help.obsidian.md/attachments) in the vault (e.g., the path to an image file), the URL of an image, or an hexadecimal color code (e.g., `color: "#4555dd"`)
![[Obsidian Bases - Cards view.png]]
## Interesting features of Bases
- Support for different view layouts (Table, Cards) and more to come (e.g., Kanban)
- Each Base can have 1-n views, each with its own layout
- Each view in a Base has its own sort rules (multi-column sort is supported), filters & properties
- A Base's filters can either apply to ALL views or to a specific one. Thus, 1-n filter(s) can be used to limit the number of included notes and each view can define additional filtering rules
- Filters can be grouped and chained
- Bases can be opened like any other note or Canvas
- Bases [may be embedded](https://help.obsidian.md/bases/create-base#Embed+a+base) in other notes and Canvas using the `![[Foo.base]]` syntax. The default view to show may also be defined like this: `![[Foo.base#View name]]`
- Bases support a number of Functions that may be used to manipulate data from Properties in filters and formulas
- Properties may either correspond to actual properties included in the notes, or to the result of a Formula
- Formulas are "virtual" properties. Those can use a number of JavaScript functions to manipulate data from properties (e.g., check for their existence, check if empty, compare dates, check if a list property contains a specific value, etc)
## Tips and Tricks
- Bases can be created using...
- Right clicking in the file explorer and selecting "New base"
- Clicking on the "Create new base" ribbon command
- Invoking the "Bases: Create new base command" from anywhere. This creates the new base at the root of the Obsidian vault
- Invoking the "Bases: Insert new base" command from within a note. This creates the new base at the root of the Obsidian vault and embeds at the current cursor position
- You can drag views in the "View" menu to reorder them. The first one is the default view
- Right click the "View" button to start editing it directly
- The row height of table views can be modified in the view settings
- A cover image and aspect ratio can be configured in card view settings
- You can click on the number of results next to the view selection dropdown to limit the number of results, remove that limit, copy the results to the clipboard, or export those to CSV
- Double-clicking on a column divider automatically resets the column width
- The image property used as cover image for a Cards view may be an hex color code (e.g., `color: "#4555dd"`)
- You can enable an advanced filter editor by clicking on the `</>` button next to a filter. That displays the raw syntax for the filter. Do this when you want to use complex functions that don't work with the point-and-click UI
- When filtering, you can't find the `tags` property, but you can use `file -> has tag` for filtering. See [here](https://www.reddit.com/r/ObsidianMD/comments/1mqwu5t/about_tags_in_bases) for details
- With the "Properties" menu open, you can navigate to a property in the list using arrow keys, and hold `Alt/Opt` to move the property up or down the list
- If you have the "Page Preview" core plugin enabled, you can disable Bases' "Require Ctrl to trigger preview" option in the settings. This lets you see and edit previews in real-time while hovering over any note
- When embedding an Obsidian Base in another note or Canvas, you can specify the default view to use with the following syntax: `![[File.base#View]]`. This enables embedding multiple views of the same Base
- If you embed an Obsidian Base in a Canvas, you can pin a specific view of that Base by right clicking on the file name, and selecting "Pin view..."
- When a base is embedded in a note, it uses that note as `this`. When it is placed in a sidebar, it uses the currently active note as `this`
- This enables creating dynamic Bases, where the content matches the current note. See [here](https://www.reddit.com/r/ObsidianMD/comments/1mv1lqi/bases_displaying_notes_in_the_same_folder) for details
- The look and feel of Bases may be customized [through CSS variables](https://docs.obsidian.md/Reference/CSS+variables/Editor/Bases)
- There's an undocumented `groupBy` property for Base views. As of 2025-09-30, It can only be added by editing the Base file directly, not through the UI
Bases can be fully embedded in a note using the triple-tilde syntax and the Bases syntax:
```
```base
filters:
and:
- file.hasTag("example")
views:
- type: table
name: Table
...
```
Although, I recommend to instead create and use base files. Those can be reused across multiple notes.
## Technical details
Bases are queries stored in ".base" files. Base files can either be opened "normally", which shows the view(s) and contents of the Base (i.e., the database, the results, ...) OR as text files, in which case the Base definition may be modified manually instead of through the Base UI.
Base files use the [Bases syntax](https://help.obsidian.md/bases/syntax).
## Functions
Bases support various functions. There are a number of global ones, used without a type, but most functions depend on the type of value you want to modify.
Supported types (as of 2025-08-21):
- Any
- Date
- String
- Number
- List
- Link
- File
- Object
- Regular expression
You can find the full list here: https://help.obsidian.md/bases/functions
## References
- Documentation: https://help.obsidian.md/bases
- How to create a Base: https://help.obsidian.md/bases/create-base
- Bases functions: https://help.obsidian.md/bases/functions
- Bases views: https://help.obsidian.md/bases/views
- Bases syntax: https://help.obsidian.md/bases/syntax
- CSS Variables for Bases: https://docs.obsidian.md/Reference/CSS+variables/Editor/Bases
- 2025-08 release notes: https://obsidian.md/changelog/2025-08-18-desktop-v1.9.10/
- 2025-06-26 improvements: https://obsidian.md/changelog/2025-06-26-desktop-v1.9.3/
- Initial announcement: https://obsidian.md/changelog/2025-05-21-desktop-v1.9.0
## Related
- [[Obsidian]]
- [[Obsidian Starter Kit]]