Supercharge your notes with dynamic data! The Live Variables Plugin v2 revolutionizes how you manage information in Obsidian. Define variables once, reuse them everywhere, and watch your notes auto-update—now with powerful code blocks, smart queries, and an intuitive form interface.
Love this plugin? Help keep it alive! Sponsor development →
Your sponsorship helps:
- Fund critical updates and bug fixes
- Prioritize feature requests from sponsors
- Keep the plugin free for everyone
Features
What's New in v2.1.0?
What's New in v2?
Demo
Contributing
License
- Dynamic Variables: Define in frontmatter, update everywhere instantly.
- Code Block Magic: Execute queries & transform data using code blocks.
- Smart Query Engine:
- Built-in functions
- Custom JavaScript execution
- Custom Function Library: Save frequent scripts (e.g., calculateTax) and call them by name!
- Form Interface: Insert queries visually—no coding skills needed!
- Cross-Note Sync: Share variables across your entire vault.
Edit existing Live Variables references without reinserting them! Just place your cursor on any variable reference and run Live Variables: Query variables
to modify it in-place.
Instantly identify dynamic content with subtle highlights that:
- Work in both light/dark modes
- Preserve Markdown formatting (disables highlight when styling is present)
- Help maintain visual hierarchy
This feature can be is enabled by default and can be disabled in the settings.
Formatting Awareness:
**boldVar**
→ No highlight to preserve bold style
plainVar
→ Highlighted for easy identification
ezgif-1a239c104ea27c.mp4
Code-block-demo.mov
- Build-in functions (SUM):
Sum-demo.mov
- Custom JavaScript Quries:
- Used Examples
- A/B Testing Content
() => { return Math.random() > 0.5 ? "New UI" : "Legacy UI"; }
- Dynamic Checklists
(tasks) => { const done = tasks.filter(t => t.completed).length; const doneBar = '▣'.repeat(done); const undoneBar = '□'.repeat(tasks.length - done); const completionPercentage = Math.round((done / tasks.length) * 100); return doneBar + undoneBar + ' (' + completionPercentage +'% completed)'; }
- Demo:
- Used Examples
custom-func-demo.mov
- Custom Fucntion Library:
custom-func-library.mov
- User friendly form for inserting queries: The form adds the arguments input dynamically and allows you the prview values of each argument and the value of the resulting query.

-
Install the Plugin:
- Install directly from the Obsidian plugin marketplace, or manually download the latest release, unzip it, and place the folder in your vault's plugin directory. Enable the plugin in Obsidian’s settings.
-
Define Variables:
- Open the note where you want to use variables.
- In the note’s frontmatter (the YAML block), define your variables. Example:
--- projectName: Obsidian Live Variables Plugin dueDate: 2024-12-31 ---
-
Insert Variables: You can insert variables using the following options:
- Local Variables: Insert a variable defined within the current note by using the command:
Live Variables: Insert local variable
. - Vault-Wide Variables: Insert a variable defined in any note within the vault by using the command:
Live Variables: Insert variable from another note
. - Query variables: Insert a live code blocks, live custom js function and your saved function by using command:
Live Variables: Query variables
.
- Local Variables: Insert a variable defined within the current note by using the command:
-
Update Variables:
- Modify the value of a variable in the note’s properties, and all references to that variable across your vault will be updated instantly.
Check out this quick demo of all of plugin's features in action:
demo.mp4
We welcome contributions! If you have suggestions for improvements or new features, feel free to open an issue or submit a pull request.
This project is licensed under the MIT License.