bobthearsonist35 downloadsMaintain creation and modification timestamps and daily date tags for notes edited in Obsidian.
Keep creation and modification timestamps and a daily date-tag history in your Markdown notes.
Requires Obsidian 1.5.0 or later. Templater and Linter are optional. The plugin works on desktop and mobile without network requests, accounts, or telemetry.
Install and update Date Tags Automation from the Obsidian Community Plugins directory:
main.js and manifest.json from the latest GitHub release..obsidian/plugins/date-tags/ inside your vault.The folder must match the plugin ID, date-tags; it does not need to match the GitHub repository name. If you already installed the plugin in a differently named folder, back up its settings and avoid enabling both copies.
Back up your vault before enabling automatic frontmatter changes.
created, modified, and an optional type property to new, in-scope Markdown notes.date/2026/11/03 to notes after tracked edits.modified yourself or delegate that timestamp to Linter.Tags are stored in the tags frontmatter property, not appended to the note body:
---
created: 2026-11-02 09:00:00
modified: 2026-11-03 10:30:00
type: note
tags:
- date/2026/11/02
- date/2026/11/03
---
For backdated notes, set created to the intended creation date. Template-completion processing preserves that date's tag and adds today's tag without overwriting template timestamps.
| Change | What happens |
|---|---|
| A new, in-scope Markdown note is created | Adds initial frontmatter and today's date tag. If a matching Templater creation rule is enabled, waits for Templater to finish first. |
| An existing note is edited in Obsidian | Processes the edit after the configured idle/debounce checks. Depending on settings, updates modified and adds today's tag. |
| A note is edited with Obsidian CLI on desktop | Tracks supported CLI edits after the command finishes, then applies the same checks as an editor change. Turn this off with Tag notes edited by the CLI. |
| A note changes through sync, the filesystem, or another plugin | Does not treat the change as a user edit, so it does not add today's tag. |
The default idle threshold is five seconds and the processing debounce is three seconds. Optional checks can process an edit when you switch files or move focus away from the editor. An actively open note may wait until you switch away before a check can safely update it.
The command Date Tags Automation: Add today's date tag adds a tag to the active note. It does not update the note's modified timestamp.
Templates, copilot-custom-prompts, and copilot-conversations.date.modified timestamp.type property.The plugin waits for Templater's completion event when a matching folder or regex creation rule is enabled. Templater's creation trigger is device-local in current versions, so enable it on each device where you use those templates.
If Linter manages modified timestamps, enable Delegate modified to Linter and configure Linter separately.
On desktop, edits made while commands such as append, prepend, property:set, daily:append, or eval run are tracked when the command finishes. If you are actively typing in the same note, normal idle checks still apply.
Other plugins can read the date-tag convention:
const api = app.plugins.plugins['date-tags']?.api;
const tag = api?.buildDateTag('2026-11-03'); // date/2026/11/03 by default
API version 1 exposes buildDateTag(date) and getBaseTag(). Dates may be a Date, YYYY-MM-DD, or YYYYMMDD. This read-only API does not mark notes as edited.
| Symptom | What to check |
|---|---|
| A note is not tagged | Confirm it is in scope and not in an excluded folder. Existing-note edits must come through Obsidian's editor or the supported desktop CLI. |
| A template-created note has unexpected frontmatter | Enable Templater's creation trigger on this device and confirm the folder or regex rule matches. |
modified is not changing |
Check Update frontmatter modified or configure Linter and enable Delegate modified to Linter. |
| The plugin reports malformed frontmatter | Repair the YAML before retrying. The plugin reports the problem rather than silently replacing malformed data. |
npm ci
npm test
npm run build
main.source.js is the plugin entry point. The build bundles browser-compatible dependencies and their license notices into main.js. Release tags must exactly match manifest.json's version, without a v prefix. Each release includes only main.js and manifest.json; GitHub Actions verifies these assets against the build and creates artifact attestations.
See the release guide for the full release and Obsidian directory update process.
Copyright (C) 2025 bobthearsonist.
Date Tags Automation is distributed under GPL-3.0-or-later, without warranty. Bundled third-party packages retain their own licenses; their complete notices are included in main.js.