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
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

Calendar Ledger

MillionMillion19 downloads

Manage dates, records, ranges, tags, and statistics in one Markdown file.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates1

中文版 | English

An Obsidian plugin for keeping a continuous multi-year calendar, records, tags, links, and date ranges in one Markdown file. It provides quick navigation, inline record entry, an outline-style sidebar, statistics, heatmaps, and yearly summaries.

Features

  • Generate a continuous calendar covering any start and end year.
  • Store all records in one normal Markdown file; no separate database is required.
  • Open a sidebar view with Content, Upcoming, Stats, Heatmap, and Year tabs.
  • Jump to today or any date, and add a record to today or a selected date from the command palette.
  • Choose English or Chinese weekday names.
  • Choose Monday or Sunday as the first day of visual layouts.
  • Show or hide ISO week headings (W01, W02, ...).
  • Support multiple tags, Obsidian wikilinks, and date ranges.
  • Display activity heatmaps, event timelines, monthly distributions, and date-range views by tag.
  • Count range events separately from their deduplicated covered days.
  • Migrate legacy nested date structures to the current inline format while preserving existing text, links, and tags.
  • Refresh the sidebar automatically when the calendar file changes.

Screenshots

Content

Calendar Ledger Content view

Upcoming

Calendar Ledger Upcoming view

Stats

Calendar Ledger Stats view

Heatmap

Calendar Ledger Heatmap view

Year

Calendar Ledger Year view

Installation

Community plugins

In Obsidian, open Settings → Community plugins → Browse, search for Calendar Ledger, then install and enable it.

BRAT or manual installation

For beta testing, install the GitHub repository with BRAT. For a manual installation, download main.js, manifest.json, and styles.css from a release and place them in:

.obsidian/plugins/calendar-ledger/
├── manifest.json
├── main.js
└── styles.css

Then reload Obsidian and enable Calendar Ledger under Settings → Community plugins.

Getting started

  1. Install and enable Calendar Ledger.
  2. Open Settings → Calendar Ledger.
  3. Set the calendar file path. The default is Calendar.md.
  4. Choose the start year, end year, weekday language, week start day, and week-number display.
  5. Run Generate calendar file from the command palette.
  6. Open the plugin view by clicking the calendar ribbon icon or running Open calendar outline.
  7. Add records with Add item to today or Add item to specified date.

Before using a migration or overwrite command, make a backup of the calendar file.

Calendar format

The generated file uses standard Markdown headings and date bullets. A typical entry looks like this:

# 2026

## Jul

### W30

- **07-20 Mon** | #travel Beijing [[Trip notes]] 07-20~07-25; #fitness Running
- **07-21 Tue** | #live Concert

Rules:

  • # Year, ## Month, and optional ### Wxx headings provide the calendar structure.
  • Date rows use - **MM-DD Weekday** and inherit the year from the nearest year heading.
  • Use the full-width separator | between the date marker and its first record.
  • Use the Chinese semicolon ; between independent records on the same date.
  • Tags are written as #tag; text after a tag is used as the record text for statistics.
  • Wikilinks such as [[Trip notes]] are supported as record links.
  • Date ranges can use forms such as 07-20~07-25 or 07-20~07~25.

The parser also accepts older heading-based and nested-bullet formats. Use Migrate to latest format to normalize an existing file.

Sidebar tabs

  • Content: all dates that contain records, grouped by month; click a row to jump to the source line.
  • Upcoming: future records and the dates covered by future date ranges.
  • Stats: per-tag counts, recorded days, event lists, and monthly summaries for enabled tags.
  • Heatmap: tag-based activity heatmaps, event timelines, monthly distributions, and range views.
  • Year: a selected year's recorded-day summary, configured summary cards, timeline, and tag overview.

Settings

  • Calendar file path: vault-relative path such as Calendar.md or Journal/Calendar.md.
  • Start year / End year: controls the generated calendar range. Appending a year extends the end year automatically.
  • Week starts on: Monday or Sunday for heatmaps and visual layouts. Calendar week headings always use ISO weeks starting on Monday.
  • Calendar content language: English or Chinese weekday names in generated date rows.
  • Show week number: adds or removes Wxx headings and updates the existing calendar structure while preserving records.
  • Stats tags: choose which tags appear in the Stats tab.
  • Visualization tag mappings: assign a tag to Activity, Event, Monthly, Range, or None in the Heatmap tab, with an optional display name.
  • Year Summary cards: choose recorded days and tag cards to show in the Year tab.

Commands

  • Generate calendar file: create a calendar when the configured file does not exist.
  • Overwrite calendar file: rebuild the calendar after confirmation. Existing records may be replaced, so back up first.
  • Append year: add the next year to the end of the calendar.
  • Jump to today: navigate to today's date.
  • Jump to specified date: enter a date such as 7-30 or 2026-7-30 and navigate to it.
  • Add item to specified date: insert an inline record on a selected date.
  • Add item to today: insert an inline record on today's date.
  • Migrate to latest format: convert legacy nested or space-separated records to the current inline format.
  • Open calendar outline: open the plugin's sidebar view.

Compatibility

  • Minimum Obsidian version: 1.7.2
  • Desktop and mobile supported (isDesktopOnly: false)
  • MIT License

Feedback and contributions

Please open an issue at millioncheung/calendar-ledger and include your Obsidian version, plugin version, a small sanitized calendar example, and any console errors.

Pull requests are welcome.

HealthExcellent
ReviewSatisfactory
About
Generate a continuous multi-year calendar in a single Markdown file and store records, tags, wikilinks, and date ranges inline without a separate database. Open a sidebar with content, upcoming, stats, heatmap and year views to jump to dates, add inline entries, view heatmaps, timelines and yearly summaries, auto-refreshing and migrating legacy date structures.
CalendarDatesSidebar
Details
Current version
1.0.0
Last updated
7 days ago
Created
4 weeks ago
Updates
1 release
Downloads
19
Compatible with
Obsidian 1.7.2+
Platforms
Desktop, Mobile
License
MIT
Report bugRequest featureReport plugin
Author
MillionMillionmillioncheung
GitHubmillioncheung
  1. Community
  2. Plugins
  3. Calendar
  4. Calendar Ledger

Related plugins

Chronology

A calendar and a timeline of the note's creation and modification.

Day Planner

Turn tasks from daily notes, the Tasks plugin, and calendars into time blocks on an editable timeline, with built-in time tracker.

Full Calendar Remastered

Complete Calendar HUB experience. Work with all your calendars in one place. Analyze your time and take action!

Periodic Notes

Manage your daily, weekly, and monthly notes.

Journals

Manage your journals.

Calendarium

Craft mind-bending fantasy and sci-fi calendars.

Journal Review

Review your daily notes on their anniversaries, like "what happened today last year".

Yearly Glance

Year at a glance - overview of annual events with customizable management options.

Calendar

Explore your daily notes.

Prisma Calendar

Prisma turns any note with a date into a flexible planning system inside Obsidian. There are no rigid schemas or predefined structures — just your data, your rules, fully under your control.