Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Join the community
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

MetaEdit

chhoumannchhoumann130k downloads

Manage your metadata.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates35

v554FnTthq

Features

  • Add or update Yaml properties and Dataview fields easily
  • Ignore properties to hide them from the menu
  • Auto Properties that have customizable, pre-defined values selectable through a suggester
  • Multi-Value Mode that allows you to detect and vectorize/create arrays from your values
  • Progress Properties that automatically update properties/fields
    • Works with total task, completed task, and incomplete task counts. Mark a task as completed (from anywhere), and the file will be updated with the new count.
  • Transform properties between YAML and Dataview
  • Delete properties easily
  • Auto update properties in files linked to from Kanban boards on lane change
  • Edit metadata through a filemenu
  • Edit last value in tags - works with Obsidian Tracker, too.
  • API to use in other plugins and Templater templates.

Installation

This plugin is in the community plugin browser in Obsidian. Search for MetaEdit and you can install it from there.

Manual Installation

  1. Go to Releases and download the ZIP file from the latest release.
  2. This ZIP file should be extracted in your Obsidian plugins folder. If you don't know where that is, you can go to Community Plugins inside Obsidian. There is a folder icon on the right of Installed Plugins. Click that and it opens your plugins folder.
  3. Extract the contents of the ZIP file there.
  4. Now you should have a folder in plugins called 'metaedit' containing a main.js file, manifest.json file, and a styles.css file.

Guides

Kanban Helper Guide

API

You can access the API by using app.plugins.plugins["metaedit"].api.

I recommend destructuring the API, like so:

const {autoprop} = this.app.plugins.plugins["metaedit"].api;

autoprop(propertyName: string)

Takes a string containing a property name. Looks for the property in user settings and will open a suggester with possible values for that property.

Returns the selected value. If no value was selected, or if the property was not found in settings, it returns null.

This is an asynchronous function, so you should await it.

update(propertyName: string, propertyValue: string, file: TFile | string)

Updates a property with the given name to the given value in the given file.

If the file is a string, it should be the file path. Otherwise, a TFile is fine.

This is an asynchronous function, so you should await it.

getPropertyValue(propertyName: string, file: TFile | string)

Gets the value of the given property in the given file.

If the file is a string, it should be the file path. Otherwise, a TFile is fine.

This is an asynchronous function, so you should await it.

API Examples

New Task template (requires Templater)

<%*
const {autoprop} = this.app.plugins.plugins["metaedit"].api;
_%>
#tasks 
Complete:: 0
Project::
Status:: <% await autoprop("Status") %>
Priority:: <% await autoprop("Priority") %>
Due Date::

Complete:: 0
Energy::
Estimated Time::

Total:: 1
Complete:: 0
Incomplete:: 1

---

- [ ] <% tp.file.cursor() %>

3EfcPLYkj6

Complete Task in Dataview Table (Buttons version)

Requires Dataview and Buttons.

```dataviewjs
const {update} = this.app.plugins.plugins["metaedit"].api
const {createButton} = app.plugins.plugins["buttons"]

dv.table(["Name", "Status", "Project", "Due Date", ""], dv.pages("#tasks")
    .sort(t => t["due-date"], 'desc')
    .where(t => t.status != "Completed")
    .map(t => [t.file.link, t.status, t.project, t["due-date"], 
    createButton({app, el: this.container, args: {name: "Done!"}, clickOverride: {click: update, params: ['Status', 'Completed', t.file.path]}})])
    )
```

CBrFA0qHr4

Complete Task in Dataview Table (HTML buttons version)

Requires Dataview.

```dataviewjs
const {update} = this.app.plugins.plugins["metaedit"].api;
const buttonMaker = (pn, pv, fpath) => {
    const btn = this.container.createEl('button', {"text": "Done!"});
    const file = this.app.vault.getAbstractFileByPath(fpath)
    btn.addEventListener('click', async (evt) => {
        evt.preventDefault();
        await update(pn, pv, file);
    });
    return btn;
}
dv.table(["Name", "Status", "Project", "Due Date", ""], dv.pages("#tasks")
    .sort(t => t["due-date"], 'desc')
    .where(t => t.status != "Completed")
    .map(t => [t.file.link, t.status, t.project, t["due-date"], 
    buttonMaker('Status', 'Completed', t.file.path)])
    )
```

BnAVIV4XCM


Dev Info

Made by Christian B. B. Houmann Discord: Chhrriissyy#6548 Twitter: https://twitter.com/chrisbbh Feel free to @ me if you have any questions.

Also from dev: NoteTweet: Post tweets directly from Obsidian.

69%
HealthGood
ReviewCaution
About
Edit YAML and Dataview metadata across files through a quick menu. Add, update, delete, and transform properties; use auto-properties with selectable values, multi-value arrays, and progress properties that auto-update task counts; apply changes via Kanban lane changes or the plugin API.
PropertiesEditingAutomation
Details
Current version
1.8.4
Last updated
4 months ago
Created
5 years ago
Updates
35 releases
Downloads
130k
Compatible with
Obsidian 1.4.1+
License
GPL-3.0
Report bugRequest featureReport plugin
Sponsor
Buy Me a Coffee
Author
chhoumannchhoumann
bagerbach.com/
GitHubchhoumann
  1. Community
  2. Plugins
  3. Properties
  4. MetaEdit

Related plugins

Meta Bind

Make your notes interactive with inline input fields, metadata displays, and buttons.

Update frontmatter modified date

Automatically update a frontmatter modified date field when the file is modified.

Filename Heading Sync

Keep the filename with the first heading of a file in sync.

Templater

Create and use dynamic templates.

Advanced Tables

Improved table navigation, formatting, and manipulation.

Outliner

Work with your lists like in Workflowy or Roam Research.

BRAT

Easily install a beta version of a plugin for testing.

Various Complements

Complete words similar to auto-completion in an IDE.

Linter

Format and style your notes. Linter can be used to format YAML tags, aliases, arrays, and metadata; footnotes; headings; spacing; math blocks; regular Markdown contents like list, italics, and bold styles; and more with the use of custom rule options.

Datacore

An even faster reactive query engine for the data obsessed.