Skip to content

Format syntax

Format syntax lets you put placeholders in anything QuickAdd creates. When a choice runs, each placeholder is replaced with a real value: today’s date, an answer you type, a link to the note you came from.

You can use placeholders anywhere QuickAdd asks for a format: file name fields, capture formats, folder paths, “Insert after” targets, and inside template files.

For example, a Capture with this format:

- {{DATE:HH:mm}} {{VALUE}}

asks you for a value, and if you answer Standup moved to Wednesday, it inserts:

- 09:42 Standup moved to Wednesday

You describe the shape once; QuickAdd fills in the blanks every run.

Ask for input

PlaceholderWhat it does
{{VALUE}}Ask for text
{{VALUE:title}}Ask for text once, reuse the answer anywhere as title
{{VALUE:Red,Green,Blue}}Pick from a list
{{VDATE:due,YYYY-MM-DD}}Ask for a date (“tomorrow” works)
{{FIELD:project}}Suggest values that property already has in your vault
{{FILE:People}}Pick a note from a folder
{{MVALUE}}Write a math formula (LaTeX)

Dates

PlaceholderWhat you get
{{DATE}}Today, like 2026-07-08
{{DATE:MMMM Do}}Today, formatted your way: July 8th
{{DATE+7}}Seven days from today
{{DATE:YYYY-MM|startof:week}}The week’s starting month, for weekly notes

The note you ran QuickAdd from

PlaceholderWhat you get
{{LINKCURRENT}}A link to it: [[That note]]
{{LINKSECTION}}A link to the section your cursor is in
{{FILENAMECURRENT}}Its file name
{{FOLDERCURRENT}}Its folder
{{selected}}The text you had selected

The note being created

PlaceholderWhat you get
{{TITLE}}The new note’s file name
{{FOLDER}}The folder the new note lands in

Other content

PlaceholderWhat it inserts
{{CLIPBOARD}}Whatever you copied last
{{TEMPLATE:Templates/Meeting.md}}The contents of a template file
{{MACRO:My Macro}}Whatever a macro returns
{{GLOBAL_VAR:Header}}A snippet you defined in settings
{{RANDOM:6}}A random ID like x7k2p9

{{DATE}} becomes today’s date in YYYY-MM-DD format.

Add +N to move the date: {{DATE+3}} is three days from now, {{DATE+-3}} is three days ago.

You write
Daily/{{DATE}}.md
Review on {{DATE+7}}
You get (on July 8th, 2026)
Daily/2026-07-08.md
Review on 2026-07-15

Put a Moment.js format after the colon to control how the date looks. The +N day offset works here too: {{DATE:YYYY-MM-DD+3}}.

You writeYou get
{{DATE:MMMM Do, YYYY}}July 8th, 2026
{{DATE:YYYY-MM-DD_HH-mm}}2026-07-08_09-42
{{DATE:[Week] w}}Week 28

Snap to the start or end of a week, month, or year

Section titled “Snap to the start or end of a week, month, or year”

Add |startof:<unit> or |endof:<unit> to move the date to the boundary of a period before formatting. <unit> is one of year, quarter, month, week, isoweek, or day (case-insensitive).

This matters when the formatted output should reflect the period rather than the exact day. The month of a week-snapped date is the month the week starts in, not today’s calendar month.

You write (on Thursday 2023-06-01)You get
{{DATE:gggg.MM.[Wk]w|startof:week}}2023.05.Wk22
{{DATE:YYYY-MM|startof:month}}2023-06
{{DATE:YYYY-MM-DD|endof:month}}2023-06-30
{{DATE:YYYY-[Q]Q|startof:quarter}}2023-Q2
{{DATE:GGGG-[W]WW|startof:isoweek}}ISO week, Monday-anchored
  • week starts on your locale’s first day of the week (matching the w/ww/gggg tokens).
  • isoweek starts on Monday (matching the W/WW/GGGG tokens).

Example: weekly notes that cross months. A weekly note named gggg.MM.[Wk]w should file the week of June 1 under May (2023.05.Wk22), while the heading inside the note still shows the actual day. Snap only the file name:

File name: {{DATE:gggg.MM.[Wk]w|startof:week}}
In the note: {{DATE:M.DD dddd}}

Snapping also works on {{VDATE}}, so one picked date can be week-snapped in the file name and day-accurate in the body: {{VDATE:d,gggg.MM.[Wk]w|startof:week}} and {{VDATE:d,M.DD dddd}} share the same prompt. Combine freely with |default, |optional, and |time in any order.

Good to know:

  • The +N day offset is applied before the snap, so {{DATE:YYYY-MM-DD+7|startof:week}} means “the start of next week”.
  • endof: snaps to the last moment of the period (23:59:59.999), so {{DATE:YYYY-MM-DD HH:mm|endof:day}} renders ... 23:59.
  • |startof: and |endof: are the only special pipe options in a date format. Any other literal | is kept as-is: {{DATE:YYYY|MM}} gives 2023|06.
  • An unknown unit (like |startof:fortnight) shows an error listing the valid units.

Introduced in QuickAdd 2.14.0.

Ask for a date: {{VDATE:<name>, <format>}}

Section titled “Ask for a date: {{VDATE:<name>, <format>}}”

{{VDATE:due,YYYY-MM-DD}} opens a date prompt and inserts your answer in the given format. You can type natural language: today, in two weeks, next monday. Short aliases like t (today), tm (tomorrow), and yd (yesterday) work too, and are configurable in settings.

The name (due above) makes it a variable: enter the date once, use it in as many places and formats as you like.

You write
Due: {{VDATE:due,YYYY-MM-DD}}
Week: {{VDATE:due,gggg-[W]WW}}
You get (after answering "friday")
Due: 2026-07-10
Week: 2026-W28

Add |<default> after the format. If you submit the prompt empty, the default is used. Defaults can be natural language too: {{VDATE:date,YYYY-MM-DD|today}}, {{VDATE:due,YYYY-MM-DD|next monday}}, {{VDATE:d,YYYY-MM-DD|+7 days}}. The short aliases (t, tm, yd) also work as defaults.

A default combines with the optional flag in any order: {{VDATE:due,YYYY-MM-DD|tomorrow|optional}} and {{VDATE:due,YYYY-MM-DD|optional|tomorrow}} are equivalent.

Add |time (aliases: |datetime, |type:datetime) to put a time picker on the date prompt - made for Date & time properties. The calendar gains an HH:mm control, and picking a day keeps the time you set. If you omit the date format, it defaults to YYYY-MM-DD HH:mm.

---
start: {{VDATE:start,YYYY-MM-DDTHH:mm|time}}
---

Combines with a default and optional in any order: {{VDATE:meeting,YYYY-MM-DD HH:mm|tomorrow at 3pm|time|optional}}. Without |time, the picker stays date-only.

Introduced in QuickAdd 2.14.0.

{{VALUE}} opens a prompt and inserts whatever you type. {{NAME}} is the same thing under another name.

You write (capture format)
- [ ] {{VALUE|label:Task}}
You get (after typing "Buy milk")
- [ ] Buy milk

If text is selected in the editor when the choice runs, the selection is used as the value instead of prompting. For Capture choices you can turn selection-as-value off, globally or per capture.

Good to know:

  • In macros, {{VALUE}} / {{NAME}} ask again for each template step. Use a named value like {{VALUE:sharedName}} when one answer should be reused across the whole macro.
  • In js quickadd blocks, don’t put {{VALUE}} inside JavaScript string literals. Use the QuickAdd API (this.quickAddApi.inputPrompt(...)) and this.variables instead. See Inline scripts.
  • From the API, pass the value programmatically under the reserved variable name value.

Name the answer so you can reuse it: {{VALUE:<name>}}

Section titled “Name the answer so you can reuse it: {{VALUE:<name>}}”

Give the value a name and QuickAdd asks once, then inserts the same answer at every other place the name appears - even across the steps of a macro.

You write (template)
---
title: {{VALUE:title}}
---
# {{VALUE:title}}
You get (after answering "Project kickoff")
---
title: Project kickoff
---
# Project kickoff

You can create as many named values as you need.

Offer a list to pick from: {{VALUE:<option>,<option>}}

Section titled “Offer a list to pick from: {{VALUE:<option>,<option>}}”

Two or more comma-separated options turn the prompt into a searchable picker.

You write
status: {{VALUE:Backlog,In progress,Done}}
You get (after picking)
status: In progress

Need a comma inside an option? Wrap the option in double quotes - the quotes are stripped from the inserted value:

{{VALUE:"One choice, with a comma",Second choice}}
  • Straight (") and curly (“ ”) quotes both work, so pasting from a rich-text editor is fine.
  • For a literal double quote inside a quoted option, double it: "say ""hi""" inserts say "hi".
  • Single quotes are never special: Bob's,Alice's works unchanged.
  • The same quoting works in |text: display labels and |default: values (e.g. |default:"a, b").
  • Pipes (|) inside an option are not supported. Whitespace inside quotes is trimmed.

Decouple what the picker shows from what gets inserted:

You write
priority: {{VALUE:🔽,🔼,⏫|text:Low,Normal,High}}

You pick “High”, QuickAdd inserts .

items and text need the same number of entries, and each label must be unique. A comma inside an entry needs double quotes (text:"High, urgent",Low); pipes inside an entry are not supported. With |custom, text you type yourself is inserted as-is.

{{VALUE:Red,Green,Blue|custom}} suggests Red, Green, and Blue but also lets you type anything else, like “Purple”. Useful when you have common options but want an escape hatch.

Note: |custom can’t be combined with a shorthand default; use |default: instead.

|multi turns the picker into a multi-select, and the picks are written as a YAML list. Requires an option list (2+ comma-separated values).

You write
---
tags: {{VALUE:work,home,urgent|multi}}
---
You get (after picking work and urgent)
tags:
- work
- urgent

Variants and combinations:

  • |multi:linklist wraps each pick as a wikilink, for list properties of links: {{VALUE:Alice,Bob,Carol|multi:linklist}} writes - "[[Alice]]" / - "[[Bob]]".
  • |multi|custom adds a text box to the picker for values not in the list.
  • Combines with |name:, |label:, |text:, |optional, and |trim. |case: is ignored (a list isn’t case-transformed).

Good to know:

  • The picks become a real YAML list inside front matter. In a note body they become comma-separated text.
  • In a Capture, multi-select becomes a list only when capturing into a brand-new note’s front matter (Create file if it doesn’t exist, without a template). Other capture shapes write comma-separated text.
  • With the one-page input form, avoid commas inside a single option (like |text:"High, urgent") on a |multi placeholder - the one-page picker can’t round-trip them. The default one-prompt-at-a-time picker handles them correctly.

Introduced in QuickAdd 2.14.0.

|name: gives a picker a reusable name, so one pick can drive several places. Define the options once, then reuse the answer anywhere with {{VALUE:<name>}}:

File name
{{VALUE:Personal,Work,Errand|name:category}} - {{VALUE:title}}
In the body
tags: #{{VALUE:category}}

You pick the category once; the file name and the tag both use it.

Good to know:

  • Reuse is always {{VALUE:category}}. A bare {{category}} is not QuickAdd syntax and is left untouched (it would collide with Templater and Dataview).
  • |name combines with the other options: {{VALUE:🔽,🔼,⏫|name:priority|text:Low,Normal,High|label:Pick a priority}}.
  • Within one field, definition and reuses can appear in any order. Across fields in the default one-prompt-at-a-time flow, define the named picker in the field that is resolved first (the file name comes before the body); a reuse that runs earlier than its definition falls back to a text prompt. The one-page input form removes this caveat.
  • value and title are reserved and can’t be used as names.
  • Names match case-insensitively: {{VALUE:Category}} reuses a pick named category.
  • First definition wins. If the same |name appears twice with different options in one run, the first definition’s pick is reused and the second is never shown (a warning is logged to the developer console). Use distinct names for separate prompts.

Introduced in QuickAdd 2.14.0.

These options work on text prompts and pickers alike. Combine them freely: {{VALUE:title|label:Note title|default:Untitled}}.

{{VALUE:project|label:Client or project name}} shows the helper text below the prompt’s header - handy for instructions or reminders. On an option list, the label titles the picker: {{VALUE:Red,Green,Blue|label:Pick a color}}.

{{VALUE:name|Anonymous}} pre-fills the input with Anonymous - press Enter to accept, or edit it.

Good to know:

  • Pickers without |custom ignore defaults - you have to pick one of the options.
  • If the placeholder also uses keyed options (|label:, |default:, |type:, |case:), the shorthand form is ignored; write |default:Anonymous instead. The bare |optional flag is the exception: {{VALUE:name|Anonymous|optional}} keeps the shorthand default.
  • optional is a reserved word, so a literal default of “optional” needs the keyed form: |default:optional.

Same as above, written {{VALUE:title|default:Untitled}}. Required whenever you combine a default with other keyed options like |label:.

{{VALUE:summary|type:multiline}} opens a textarea instead of a single-line input. Works on single-value prompts only (no option lists or |custom), and overrides the global “Use Multi-line Input Prompt” setting for that placeholder.

Mix single-line and multi-line in one format:

- {{VALUE:Title|label:Title}}
{{VALUE:Body|type:multiline|label:Body}}

Keyboard: submit with Ctrl/Cmd+Enter; plain Enter adds a newline. Tab inserts a tab character (with a selection, it indents every touched line), and Shift+Tab moves focus out of the field. See Controlling Prompts for all prompt shortcuts.

If |type: is present, shorthand defaults like |Some value are ignored; use |default:.

Match an Obsidian property type: |type:number, |type:slider, |type:checkbox, |type:text

Section titled “Match an Obsidian property type: |type:number, |type:slider, |type:checkbox, |type:text”

These give the prompt the right input widget for a property, and write a value Obsidian reads as the right type:

---
rating: {{VALUE:rating|type:number|min:1|max:10}}
confidence: {{VALUE:confidence|type:slider|min:0|max:100|step:5|default:50}}
done: {{VALUE:done|type:checkbox|label:Completed?}}
id: {{VALUE:id|type:text}}
---
  • |type:number shows a numeric input and writes the value unquoted (rating: 42), so Obsidian reads a Number. Constrain it with |min:, |max:, and/or |step:.
  • |type:slider shows a slider plus numeric input. |min: and |max: are required; |step: defaults to 1. If the range is missing or invalid, QuickAdd falls back to the plain numeric input instead of guessing.
  • |type:checkbox (alias |type:boolean) shows a true / false picker for checkbox properties. The |label: becomes the picker’s title, and it writes a real boolean: done: true.
  • |type:text keeps the value a string by writing it as a quoted YAML value (id: "0042"). Without it, a text property given 0042 is read as the number 42, true becomes a boolean, and values starting with # or [ are mis-parsed entirely.

Good to know:

  • Plain numbers and booleans already round-trip without |type: - count: {{VALUE:count}} answered 42 becomes a Number. The |type: options add the right widget and validation, and |type:text fixes the cases Obsidian would otherwise mis-read.
  • Dates like 2025-12-25 are always kept as text by Obsidian, so they never need |type:text.
  • |min:, |max:, and |step: are only treated as numeric options together with |type:number or |type:slider. Without those, they keep their old meaning as ordinary text.

Introduced in QuickAdd 2.14.0.

Transforms the answer’s casing. Styles: kebab, snake, camel, pascal, title, lower, upper, slug.

You write
{{DATE:YYYY-MM-DD}}-{{VALUE:title|case:slug}}.md
You get (after answering "My Great Idea!")
2026-07-08-my-great-idea.md

|trim removes leading and trailing whitespace from the answer for that one placeholder - useful in file names, links, and properties where an accidental space from a mobile keyboard would create a different note.

Raw: {{VALUE:title}}
Link: [[{{VALUE:title|trim}}]]

Trimming is per placeholder and doesn’t change the stored value, so the same answer can be used raw in one place and trimmed in another. It composes with other options ({{VALUE:title|trim|case:slug}}). For |multi values, each entry is trimmed while the value stays a list. The keyed form |trim:false turns trimming off when a shared snippet adds it.

Introduced in QuickAdd 2.14.0.

|optional marks a prompt as fine to leave unanswered: skipping it resolves to nothing instead of blocking the run. Works on {{VALUE}}/{{NAME}}, {{VALUE:<name>}}, option lists, {{VDATE:...}}, and {{FILE:...}}.

{{VALUE:reminder|optional}}
{{VDATE:due,YYYY-MM-DD|optional}}
{{VALUE:low,medium,high|optional}}

What optional changes:

  • Prompts gain a Skip button (and a hint line). Skipping - or submitting empty - counts as an answer: the placeholder becomes nothing, and you aren’t asked again for the same variable later in the run.
  • Empty beats the default. With a default, the default is pre-filled; clearing it and submitting yields empty. (Required prompts keep the old behavior: empty falls back to the default.)
  • Optional dates accept a blank instead of failing the run. A typo like “tomorow” still errors - only blank means “leave empty”.
  • Option lists show a skip shortcut in the footer (Ctrl/Cmd+Shift+Enter) instead of forcing a pick.
  • The one-page input form shows an “(optional)” badge; optional dropdowns get a “Skip (leave empty)” entry.
  • Esc still cancels the whole run - skipping is an answer, cancelling is not.

Good to know:

  • The keyed form |optional:false turns the flag off explicitly (useful when a shared snippet adds it).
  • The flag sits happily next to a shorthand default: {{VALUE:reminder|call mom|optional}}. Because optional is reserved, a literal default of “optional” needs {{VALUE:x|default:optional}}.
  • Scripting: setting a variable to the empty string (params.variables.myVar = "") counts as “answered, empty” for every placeholder type, including {{VDATE}} - it renders empty instead of prompting. To force a prompt, leave the variable unset (or delete it / set it to undefined). The old workaround of assigning a single space still works but is no longer needed.

These placeholders read from the active note - the one that was focused when you triggered QuickAdd.

Inserts a link to the active note, in [[link]] format.

You write
Source: {{LINKCURRENT}}
You get
Source: [[Meeting with Alice]]

When the append-link setting is Enabled (skip if no active file), this placeholder becomes empty instead of erroring when no note is focused.

Section titled “A link to the current section: {{LINKSECTION}}”

Like {{LINKCURRENT}}, but links to the heading your cursor is under, in [[Note#Heading]] format - clicking the link jumps to that section instead of the top of the file.

It picks the nearest heading at or above the cursor. With the cursor above the first heading (or in a file without headings), it falls back to a plain whole-file link. When a heading’s text repeats in the file, it uses the disambiguating ancestor path ([[Note#Parent#Heading]]); if even that isn’t unique, it falls back to a whole-file link rather than linking to the wrong section. Honors the same required/optional behavior as {{LINKCURRENT}}.

Introduced in QuickAdd 2.14.0.

The note’s file name: {{FILENAMECURRENT}}

Section titled “The note’s file name: {{FILENAMECURRENT}}”

The active note’s file name, without the extension: Notes from {{FILENAMECURRENT}}. Honors the same required/optional behavior as {{LINKCURRENT}} - when optional and no note is active, it becomes empty.

The active note’s folder, as a vault-relative path with no trailing slash (Projects/Alpha). For a note at the vault root it becomes empty. Not to be confused with {{FOLDER}}, which is the folder a new note is being created in.

This makes per-project captures work without a macro. With Capture To set to:

{{FOLDERCURRENT}}/Project Tasks.md

running the capture from any note inside Projects/Alpha targets Projects/Alpha/Project Tasks.md, from Projects/Beta it targets Projects/Beta/Project Tasks.md, and so on. A trailing slash ({{FOLDERCURRENT}}/) instead opens a file picker confined to that folder.

Works in capture targets, file name formats, note bodies and capture formats, and Template choice folder paths (like {{FOLDERCURRENT}}/Subnotes).

No active note: in paths (capture targets, file names, folder paths) a missing active note always stops the run with a clear error - it never falls back to the vault root. In note bodies it honors the same required/optional behavior as {{LINKCURRENT}}.

Introduced in QuickAdd 2.18.0.

Just the folder’s name: {{FOLDERCURRENT|name}}

Section titled “Just the folder’s name: {{FOLDERCURRENT|name}}”

|name keeps only the last path segment: for a note in Projects/Acme, {{FOLDERCURRENT}} is Projects/Acme while {{FOLDERCURRENT|name}} is Acme. Use it when you want the folder’s name in a file name or sentence rather than a path: Tasks for {{FOLDERCURRENT|name}}.

Whatever text is selected in the editor, or empty when nothing is: > {{selected}}.

The folder the note is being created in, as a vault-relative path with no trailing slash. For a note created at the vault root it becomes empty. (For the active note’s folder, use {{FOLDERCURRENT}}.)

Where it has a value:

  • Template choices - in the file name format (the folder is resolved before the name is built) and in the template body.
  • Capture - in the capture body, where it becomes the destination file’s folder.
  • Apply template to a note - the target note’s folder.

Where it stays empty: the capture Capture to field (that field is what chooses the folder, so there is nothing to reference yet), the format JavaScript API, and macro file-path commands.

Introduced in QuickAdd 2.14.0.

|name keeps only the last path segment: for a target folder Projects/Acme, {{FOLDER}} is Projects/Acme while {{FOLDER|name}} is Acme. Use it to put the folder’s name into a file name: {{FOLDER|name}} - {{VALUE}}.

The final file name (without extension) of the note being created or captured to. Handy as the note’s top heading:

# {{TITLE}}

Suggest values a property already has: {{FIELD:<field name>}}

Section titled “Suggest values a property already has: {{FIELD:<field name>}}”

{{FIELD:project}} scans your vault for every value the project property has anywhere, and offers them as suggestions. If no values exist, you are prompted to type one.

You write
project: {{FIELD:project}}

You get a picker listing every project name already used in your vault - no more typos creating a second “Websiet Redesign” project.

{{FIELD:topic|multi}} turns the suggestions into a multi-select. Pick several existing values, or add new ones in the picker.

You write
---
topics: {{FIELD:topic|multi}}
---
You get (after picking Alpha and Beta)
topics:
- Alpha
- Beta

Inside front matter, |multi writes a real YAML list when the placeholder is the property’s whole value. In note bodies, file names, and other text positions it writes comma-separated text. Combines with the same filters and defaults as single-value FIELD prompts: {{FIELD:topic|multi|folder:Projects|tag:active|default:Inbox}}.

Introduced in QuickAdd 2.14.0.

Default to the active note’s value: |default-from:active

Section titled “Default to the active note’s value: |default-from:active”

{{FIELD:project|default-from:active}} pre-fills the prompt with the value the active note already has for that property. This is metadata inheritance: trigger a capture from a project note, and the new content carries the project over as the default - accept it, pick another suggestion, or type something else.

Active note:

---
project: The Great Endeavor
---

Format:

project: {{FIELD:project|default-from:active}}

The project prompt defaults to The Great Endeavor. The active note is captured when the run starts, before any QuickAdd window can move focus.

Behavior:

  • The suggestion list still comes from your whole vault (honoring folder:/tag:/exclude-*/inline filters); the active note’s value is promoted to the top as the default and pre-filled in the one-page form. It is promoted even if it already exists in the suggestions.
  • If no Markdown note is active, the note lacks the property, or the value is empty, you get a normal {{FIELD:...}} prompt with no default.
  • Plain string/number/boolean values are used as-is. A YAML list value applies only to |multi prompts, where each item is pre-checked in the picker; single-select prompts skip list values. Objects and null are never used.
  • The property name matches case-insensitively: {{FIELD:Project|default-from:active}} still reads a project property.
  • This differs from |default: (a literal value), and is deliberately not spelled |default:current - that would clash with “current” as a real field value.

Combine with |multi to inherit a list property:

topics: {{FIELD:topics|multi|default-from:active}}

Introduced in QuickAdd 2.14.0.

You writeSuggestions come from
{{FIELD:status|folder:projects}}Only files in projects
{{FIELD:status|folder:goals|folder:projects}}Files in either folder
{{FIELD:status|tag:work}}Only files with #work
{{FIELD:status|tag:active|tag:project}}Files with both tags
{{FIELD:status|exclude-folder:templates}}Everything except that folder
{{FIELD:status|exclude-tag:deprecated}}Everything except files with that tag
{{FIELD:status|exclude-file:example.md}}Everything except that file
{{FIELD:id|inline:true}}Also Dataview inline fields (id:: value)
{{FIELD:id|inline:true|inline-code-blocks:ad-note}}Also inline fields inside those fenced code blocks (opt-in)

Repeated folder: filters are OR (either folder). Repeated tag: filters are AND (all tags). Exclusions remove any matching file. Filters combine freely:

{{FIELD:status|folder:goals|folder:projects|tag:work|exclude-folder:templates}}

Defaults work here too:

  • {{FIELD:status|default:To Do}} - put a default at the top of the suggestions; Enter accepts it.
  • {{FIELD:status|default:Draft|default-empty:true}} - only add the default when no values were found.
  • {{FIELD:status|default:Draft|default-always:true}} - keep the default first even when other suggestions exist.
  • {{FIELD:project|default-from:active}} - default to the active note’s value (above).

Pick a note from a folder: {{FILE:<folder>}}

Section titled “Pick a note from a folder: {{FILE:<folder>}}”

{{FILE:People}} opens a picker listing the Markdown files in your People folder and inserts your pick. Where {{FIELD}} suggests the values of a property, {{FILE}} suggests the notes themselves - made for “metadata folders” like People/ or Research Topics/ where every note is an option. Because the options are real files, the list always reflects what currently exists.

The picker labels each note by its frontmatter title if present, then its first level-1 heading, then its file name - but always inserts based on the actual file, so friendly labels never change what you get.

Output modes:

You writeYou get
{{FILE:People}}The file name: Tom
{{FILE:People|link}}A resolved wikilink: [[Tom]]
{{FILE:People|path}}The vault path: People/Tom.md
{{FILE:People|multi}}Several picks

|link follows your link settings (wikilink vs Markdown, shortest path). In a capture it resolves relative to the capture target; in a template it resolves like {{LINKCURRENT}}. Don’t wrap it in [[ ]] yourself - you’d get [[[[Tom]]]].

Example - link a research topic in a frontmatter list (quote it so the YAML stays valid):

research-topics:
- "{{FILE:Research Topics|link}}"

Options:

  • |optional - allow skipping the pick (becomes nothing).
  • |custom - also allow typing a value that isn’t in the folder.
  • |multi - pick several files. In frontmatter/property positions QuickAdd writes a YAML list; in note bodies, file names, existing-note captures, and other text positions it writes comma-separated text. Combine with |link or |path to write links or paths for every pick.
  • |label:Pick a person - set the picker’s placeholder text.
  • |name:<id> - share one pick between placeholders. FILE placeholders are cached by their full definition: placeholders that differ (folder, filters, mode, or |label:) prompt independently, while identical ones reuse one pick. To pick two different people, give the placeholders different labels ({{FILE:People|label:Author}} and {{FILE:People|label:Reviewer}}). To reuse the same pick - say, a name in one place and a link in another - give them the same |name:. Placeholders sharing an id should target the same folder and filters; the shared pick is required if any occurrence omits |optional.
  • Filters reuse the FIELD syntax: |tag:, |exclude-folder:, |exclude-tag:, |exclude-file: (each repeatable).

Good to know:

  • The folder is the first part of the placeholder. A |folder: option is FIELD syntax and is ignored here.
  • The folder matches recursively (subfolders included). Point at a leaf folder (like {{FILE:fields/people}}) to scope tightly.
  • Repeated |tag: filters are AND filters. Exclusions remove any matching file.
  • Markdown files only.
  • |link and |path insert characters that aren’t valid in file names; in the file name field, use the default mode.
  • One-page input forms collect the other inputs first, then open the FILE multi-select, because file names and labels can contain commas.

Introduced in QuickAdd 2.14.0.

Inserts the current clipboard content: Copied: {{CLIPBOARD}}. Becomes empty if clipboard access fails due to permissions or security restrictions.

In Capture content, if the clipboard has no text but holds a supported image, QuickAdd saves the image using Obsidian’s attachment settings and inserts an embedded link. Text wins when both are present. You can also paste an image straight into a value prompt while typing - no placeholder needed.

{{TEMPLATE:Templates/Meeting.md}} inserts that file’s contents. Templater syntax inside the file is supported.

In Capture choices this can be the entire capture format: keep the full capture body in a template file and set the format to {{TEMPLATE:Templates/Capture Format.md}}. QuickAdd inserts the file and then runs the usual formatting passes on the result.

A macro’s result: {{MACRO:<macro name>}}

Section titled “A macro’s result: {{MACRO:<macro name>}}”

{{MACRO:Generate summary}} runs that macro and inserts its return value.

When the macro asks you to choose an export from a script, {{MACRO:Choose project|label:Project}} shows “Project” as the placeholder - helpful when several macro calls show similar lists.

A snippet from settings: {{GLOBAL_VAR:<name>}}

Section titled “A snippet from settings: {{GLOBAL_VAR:<name>}}”

Inserts the value of a global variable defined in QuickAdd settings: {{GLOBAL_VAR:Meeting Header}}. Snippets can contain other placeholders (like {{VALUE:...}} or {{VDATE:...}}), which are processed as usual. The GLOBAL_VAR keyword is case-insensitive; the snippet name must match exactly as you defined it.

Opens a math prompt for writing LaTeX, with a live preview. Submit with Ctrl/Cmd+Enter: Equation: ${{MVALUE}}$.

Generates a random alphanumeric string of the given length (1-100). Useful for unique identifiers, like block references: ^{{RANDOM:6}}.