Nested Properties

approved

by Michael Naumov

Allows to view/edit nested frontmatter properties. - This plugin has not been manually reviewed by Obsidian staff.

33 stars5,634 downloadsUpdated 10d agoMIT

Nested Properties

Buy Me a Coffee GitHub release GitHub downloads Coverage: 100%

This is a plugin for Obsidian that allows to view/edit nested frontmatter properties.

Inspired by the Feature request.

---
level1simple: simple1
level1Nested:
  level2simple: simple2
  level2Nested:
    level3simple: simple3
    level3Nested:
      level4simple: simple4
      level4Nested:
        level5simple: simple5
---

Nested Properties Screenshot

Features

  • Render nested YAML objects and arrays as a collapsible tree inside the Properties editor
  • Collapse/expand individual properties or all at once
  • Context menu (Cut, Copy, Paste, Remove) on nested properties
  • Set and persist the type of any nested property — text, number, checkbox, date, list, object, and even Tags (which Obsidian's UI won't let you assign). The choice is saved to the vault's types.json under the property's dotted path (e.g. foo.bar.property), so it survives reload and applies across notes (see Nested property types)
  • Add new properties at any nesting level
  • Horizontal scrolling for deeply nested structures
  • Toggle full display of nested property keys (see Commands)
  • Find notes by nested property in Obsidian's own search — type a dotted key such as [book.author: value] right in the search bar (see Nested property search)

Commands

The plugin adds the following commands to the command palette (they can be bound to a hotkey):

  • Toggle full key display — An on/off toggle that switches nested property keys between the default view (long keys truncated with a trailing ellipsis) and the full key text. Deeply nested keys scroll horizontally.
  • Rename a nested property in all notes — Pick a nested property path (shown with the number of notes that use it), then enter the new dotted path. The key is renamed in every note that contains it. Notes where the target path already exists are skipped so nothing is overwritten. This complements Obsidian's built-in Properties view: Show all properties, which only exposes top-level property names.
  • Delete a nested property from all notes — Pick a nested property path and confirm; the key is removed from every note that contains it.

The same on/off toggle is also available as a button in the Properties header (next to the collapse/expand-all button), so you can flip it directly from the frontmatter without opening the command palette. The button is highlighted while full key display is on.

Nested property search

Obsidian's built-in search understands top-level property operators like [author] or [status: done], but out of the box it cannot reach into nested frontmatter such as book.author. This plugin extends Obsidian's own search so a nested path written as a dotted key works directly in the search bar — no separate command, and results appear in the normal search pane:

  • [book.author] — notes that have the nested book.author property.
  • [book.author: Ursula K. Le Guin] — notes whose nested book.author equals that value.
  • [book.genres: fantasy] — a query value matches any member of a nested list.

Because this is real Obsidian search, a nested-property operator composes with every other search feature — content terms, path:, OR, - negation — and works inside embedded ```query blocks. Top-level property operators keep working exactly as before; this only adds the nested paths Obsidian could not previously reach.

The chosen state is remembered and restored the next time Obsidian starts.

Nested property types

Right-click any nested key (or click its type icon) and open the Property type submenu to convert a value to another type — text, number, checkbox, date, list, or object. Converting a rich value to a simpler one can lose data, so a confirmation dialog appears first.

Unlike Obsidian's built-in property types, the submenu also offers reserved types such as Tags, which Obsidian's own UI won't let you assign. This is handy when you want, for example, a nested tags list to behave exactly like the top-level one.

The chosen type is persisted to the vault's .obsidian/types.json under the property's dotted path, so it survives reloads and is shared across notes:

foo:
  bar:
    property: "Value"
{
  "types": {
    "foo.bar.property": "text"
  }
}

For arrays of objects, a field's type is stored once for the whole array (the item index is collapsed), so it applies to every item:

versions:
  - version: "1.0.0"
    released: 2026-03-06
  - version: "1.1.0"
    released: 2026-03-21
{
  "types": {
    "versions.version": "text",
    "versions.released": "date"
  }
}

The context menu offers two scopes for a field inside an array item: Property type (all items) writes the shared per-field key (versions.released), while Property type (this item only) writes a per-index override (versions.0.released) that wins for just that item. When a chosen type matches what the plugin would infer from the value anyway, the entry is removed from types.json to keep it tidy.

Demo vault

A ready-made demo vault ships with the plugin. Run the Open demo vault command to download the current release's vault and open it in a new window. Each note's frontmatter showcases one feature (nested objects, arrays, mixed lists, deeply nested structures, type changes, and the full-key-display toggle) — open a note and look at the Properties panel.

Installation

The plugin is available in the official Community Plugins repository.

Beta versions

To install the latest beta release of this plugin (regardless if it is available in the official Community Plugins repository or not), follow these steps:

  1. Ensure you have the BRAT plugin installed and enabled.
  2. Click Install via BRAT.
  3. An Obsidian pop-up window should appear. In the window, click the Add plugin button once and wait a few seconds for the plugin to install.

Debugging

By default, debug messages for this plugin are hidden.

To show them, run the following command in the DevTools Console:

window.DEBUG.enable('nested-properties');

For more details, refer to the documentation.

Support

Buy Me A Coffee

My other Obsidian resources

See my other Obsidian resources.

License

© Michael Naumov

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.