toldry80 downloadsVisualizes Daylio mood data as a color-coded graph annotated by vault entries.
An Obsidian plugin that renders Daylio mood data as a color-coded graph, annotated with Obsidian vault entries.
Try out the plugin with pre-populated sample data:
Download the Example Vault Zip, extract it, and open it in Obsidian (the plugin is already installed and configured) to see a working graph with sample entries and event annotations out of the box.

Follow the link:
daylio-mood-graph at <OBSIDIAN_VAULT_ROOT>/.obsidian/plugins/<OBSIDIAN_VAULT_ROOT>/.obsidian/plugins/daylio-mood-graph In the Daylio app: More → Export Entries → CSV (table). Move the CSV file into the Obsidian vault.
e.g. <OBSIDIAN_VAULT_ROOT>/attachments/daylio_export_2026_08_19.csv
To associate entries with specific dates, the .md file names must begin with an ISO date, e.g:
2020-04-13 First Corona Lockdown.md
Settings → Community plugins → Daylio Mood Graph → CSV file path
Select the smiley-face icon in the left ribbon, or run the command
Daylio Mood Graph: Open mood graph from the command palette
(Ctrl+P / Cmd+P).
The graph opens as a horizontal split pane below the active note.
Vault notes can annotate the graph in two ways: Point Events (single-date milestones) and Range Events (multi-day timeline spans).
daylio_event.---
daylio_event: "Began university"
---
By default, the date of the event will be taken from the entry's filename. To override it, use the pipe | sytnax:
---
daylio_event: "Began university | 2003-04-05"
---
Multiple point events can be specified in a single note using Obsidian's native List property:
---
daylio_event:
- "Got a cat"
- "Got a dog"
- "Got a ferret | 2026-08-20"
---
For multi-day events that span across a date range, use the inline pipe (|) and arrow (->) syntax:
---
daylio_event: Summer Vacation | 2026-07-12 -> 2024-07-28
---
Point events and multiple range events can also be combined in list properties:
---
daylio_event:
- Got a cat
- Summer Vacation | 2026-07-12 -> 2026-07-28
- Ongoing Project | 2026-03-01 ->
---
An unspecified end-date is treated as an ongoing event.
npm install # first time only
npm run build
After building, copy build/main.js, manifest.json,
and styles.css into the Obsidian vault's plugin folder and reload Obsidian.
The shorthand npm run update:test-vault builds and copies in one step.
[!TIP] Developer Workflow Tip: It is recommended to keybind Obsidian's built-in command "Reload app without saving" to a keyboard shortcut such as Ctrl+R (Windows/Linux) or Cmd+R (macOS) under Settings → Hotkeys. This enables a rapid development loop: run
npm run update:test-vault, switch to Obsidian, and press Ctrl+R (or Cmd+R) to see changes instantly.
The test suite uses Vitest and requires no Obsidian
runtime — the Obsidian API is replaced by a minimal stub for unit tests, and
the integration tests read real files directly from obsidian_daylio_plugin_test_vault/.
For in-depth details on the plugin's internal design, data flow, and module responsibilities, see the Architecture section in AGENTS.md.