Michael Naumov10k downloadsAllows to view/edit nested frontmatter properties.
YAML frontmatter nests, but Obsidian's Properties editor does not. Give a note a nested structure and the panel shows you nothing useful — the values are there in the file, and the only way to read or change them is to edit the raw YAML by hand and hope you get the indentation right.
This plugin renders nested objects and arrays as a collapsible tree in the Properties panel, where you can read them, edit them, change their types, and rename or delete a nested key across the whole vault.
---
level1simple: simple1
level1Nested:
level2simple: simple2
level2Nested:
level3simple: simple3
level3Nested:
level4simple: simple4
level4Nested:
level5simple: simple5
---
Inspired by this feature request.
The documentation is a demo vault. Every feature has a note whose own frontmatter demonstrates it — open the note, look at the Properties panel, and you are looking at the feature.
Start reading here — it is plain markdown, so it works on GitHub with nothing installed.
A copy of the vault ships with every release. You can access it via any of the following:
Nested Properties: Open demo vault command.nested-properties-demo-vault.zip from the Releases. It unzips into a single nested-properties-demo-vault-<version> folder.demo-vault/ in this repository.git repository, the Should commit bulk operations setting records each run as git commits, and the Undo a bulk operation... command reverts one. 09 Vault-wide rename and deleteA nested property arrives collapsed by default, and a collapsed row is readable on its own: it shows a one-line preview of its content rather than an opaque { ... }, with any complex value inside it elided so the row stays one line tall.
If you would rather some of it arrived already open, set Settings → Nested Properties → Initial expand level — 1 opens the nested property but not its children, 2 opens the children too, and so on. An array index counts as a level of its own, so in generated.foo.0 the array item sits one level below generated.foo.
A note can override the setting for itself:
---
nestedProperties:
initialExpandLevel: 2
---
| Plugin | Features | How Nested Properties differs |
|---|---|---|
Better Properties |
Unlisted; additional property types and per-property settings; object type | Narrower focus: nesting; vault-wide rename/delete and search |
Nested Frontmatter |
Unlisted; read-only nested Properties rows; clickable links | Same nesting goal; editable values |
Nested Frontmatter Properties |
Nested object/array rows in the Properties panel; add/remove keys and items | Broader nesting UI: collapsible tree, type changes, vault-wide rename/delete and search |
Solenoid Properties |
List/table/frame/cube property types; popup editor for nested tabular YAML | Broader nesting scope: arbitrary nested objects and arrays |
YAML Editor |
YAML text editor; frontmatter, blocks and files; completion, folding, snippets | Alternative UI: edits nested values through Properties rows |
YAML Properties |
Replaces in-note Properties with editable YAML text | Alternative UI: keeps Properties and gives each nested key a row |
Last searched for similar plugins on 2026-10-26.
The plugin is available in the official Community Plugins repository.
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:
Add plugin button once and wait a few seconds for the plugin to install.By default, debug messages for this plugin (id: nested-properties) are hidden.
If you need to enable them refer to the documentation.
All notable changes to this project will be documented in the CHANGELOG.
Contributions are welcome — see CONTRIBUTING to get set up.
Open issues through the issue forms, not as blank issues.
To report a bug from inside Obsidian, run the Nested Properties: Report a bug command. It opens the bug form with the plugin version, the Obsidian version and your operating system already filled in.
Filing from the CLI or the API (gh issue create --body, or an AI agent filing for you) skips the form, and gh issue create --template cannot load an issue form. In that case, open the matching form in .github/ISSUE_TEMPLATE/, copy every field as a ### <label> heading in the form's order, and fill in each one. Always state the plugin version, the Obsidian version and your operating system.