Skip to main content
Version: Next 🚧

Format syntax

{{DATE}}​

Outputs the current date in YYYY-MM-DD format. You could write {{DATE+3}} to offset the date with 3 days. You can use +-3 to offset with -3 days.

Example: Daily/{{DATE}}.md or Review on {{DATE+7}}.

{{DATE:<DATEFORMAT>}}​

Replace <DATEFORMAT> with a Moment.js date format. You could write {{DATE<DATEFORMAT>+3}} to offset the date with 3 days.

Example: {{DATE:YYYY-MM-DD_HH-mm}} or {{DATE:YYYY-MM-DD+3}}.

{{VDATE:<variable name>, <date format>}}​

You'll get prompted to enter a date and it'll be parsed to the given date format. You could write 'today' or 'in two weeks' and it'll give you the date for that. Short aliases like t (today), tm (tomorrow), and yd (yesterday) are also supported and configurable in settings. Works like variables, so you can use the date in multiple places with different formats - enter once, format many times!

Example:

Due: {{VDATE:due,YYYY-MM-DD}}
Week: {{VDATE:due,gggg-[W]WW}}

{{VDATE:<variable name>, <date format>|<default>}}​

Same as above, but with a default value. If you leave the prompt empty, the default value will be used instead. Example: {{VDATE:date,YYYY-MM-DD|today}} will use "today" if no input is provided. Default values can be any natural language date like "tomorrow", "next monday", "+7 days", etc. Short aliases like t, tm, and yd work here too.

Example: {{VDATE:due,YYYY-MM-DD|next monday}}.

You can combine a default with the optional flag in any order: {{VDATE:due,YYYY-MM-DD|tomorrow|optional}} and {{VDATE:due,YYYY-MM-DD|optional|tomorrow}} are equivalent. See Optional fields.

Note: Pipe characters (|) cannot be used inside VDATE date formats β€” everything after the first pipe is treated as the default value (and flags). Use a different literal, e.g. wrap text in square brackets: {{VDATE:due,[Due ]YYYY-MM-DD}}.

{{VALUE}} / {{NAME}}​

Interchangeable. Represents the value given in an input prompt. If text is selected in the current editor, it will be used as the value. For Capture choices, selection-as-value can be disabled globally or per-capture. When using the QuickAdd API, this can be passed programmatically using the reserved variable name 'value'.

Inline script note: For js quickadd blocks, prefer the QuickAdd API (this.quickAddApi.inputPrompt(...)) and this.variables for transformation flows. Do not rely on {{VALUE}} inside JavaScript string literals. See Inline scripts.

Macro note: {{VALUE}} / {{NAME}} are scoped per template step, so each template in a macro prompts independently. Use {{VALUE:sharedName}} when you want one prompt reused across the macro.

Example: - [ ] {{VALUE|label:Task}}.

{{VALUE:<variable name>}}​

You can now use variable names in values. They'll get saved and inserted just like values, but the difference is that you can have as many of them as you want. Use comma separation to get a suggester rather than a prompt.

If the same variable name appears in multiple macro steps, QuickAdd prompts once and reuses the value.

Example:

---
title: {{VALUE:title}}
---
# {{VALUE:title}}

{{VALUE:<variable name>|label:<helper text>}}​

Adds helper text to the prompt for a single-value input. The helper appears below the header and is useful for reminders or instructions. For multi-value lists, use the same syntax to label the suggester (e.g., {{VALUE:Red,Green,Blue|label:Pick a color}}).

Example: {{VALUE:project|label:Client or project name}}.

{{VALUE:<items>|text:<display items>}}​

For option lists, decouples what is shown in the suggester from what is inserted. items and text must have the same number of comma-separated entries, and each text entry must be unique. If you also use |custom, typed custom text is inserted as-is.

Example: priority: {{VALUE:πŸ”½,πŸ”Ό,⏫|text:Low,Normal,High}}.

{{VALUE:<variable name>|<default>}}​

Same as above, but with a default value. For single-value prompts (e.g., {{VALUE:name|Anonymous}}), the default is pre-populated in the input field - press Enter to accept or clear/edit it. For multi-value suggesters without |custom, you must select one of the provided options (no default applies). If you combine keyed options like |label:, |default:, |type:, or |case:, shorthand defaults like |Anonymous are ignored; use |default:Anonymous instead. The bare |optional flag is the exception: {{VALUE:name|Anonymous|optional}} keeps the shorthand default. Because optional is now a reserved flag word, a literal default of "optional" needs the keyed form: |default:optional.

Example: status: {{VALUE:status|Draft}}.

{{VALUE:<variable name>|default:<value>}}​

Option-form default value, required when combining with other options like |label:.

Example: {{VALUE:title|label:Note title|default:Untitled}}.

{{VALUE|type:multiline}} / {{VALUE:<variable>|type:multiline}}​

Forces a multi-line input prompt/textarea for that VALUE token. Only supported for single-value prompts (no comma options / |custom). Overrides the global "Use Multi-line Input Prompt" setting. If |type: is present, shorthand defaults like |Some value are ignored; use |default: instead.

Example:

## Summary
{{VALUE:summary|type:multiline|label:Summary}}

{{VALUE|case:<style>}} / {{NAME|case:<style>}} / {{VALUE:<variable>|case:<style>}}​

Transforms the resolved value into a casing style. Supported: kebab, snake, camel, pascal, title, lower, upper, slug.

Example: {{DATE:YYYY-MM-DD}}-{{VALUE:title|case:slug}}.md.

{{VALUE:<options>|custom}}​

Allows you to type custom values in addition to selecting from the provided options. Example: {{VALUE:Red,Green,Blue|custom}} will suggest Red, Green, and Blue, but also allows you to type any other value like "Purple". This is useful when you have common options but want flexibility for edge cases. Note: You cannot combine |custom with a shorthand default value - use |default: if you need both.

Optional fields: |optional​

Marks a prompt as optional, so it can be skipped and resolve to nothing. Works on {{VALUE}}/{{NAME}}, {{VALUE:<variable>}}, option lists, and {{VDATE:...}}.

{{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 an empty input β€” accepts "empty" as the answer: the placeholder resolves to nothing, and you are not re-prompted for the same variable later in the run.
  • Empty beats the default. For optional tokens with a default, the default is pre-filled in the input box; clearing it and submitting yields empty. (Required tokens keep today's behavior: an empty submission falls back to the default.)
  • Optional dates accept blank input instead of failing the whole choice. A typo like "tomorow" still errors β€” only a blank input means "leave empty".
  • Option lists show a skip instruction in the suggester footer (Ctrl/Cmd+Shift+Enter) instead of forcing a pick.
  • In the One-Page Input modal, optional fields show an "(optional)" badge and may be left empty; optional dropdowns get a "Skip (leave empty)" entry.
  • Esc still cancels the whole choice β€” skipping is an answer, cancelling is not.

The keyed form |optional:false turns the flag off explicitly (useful when a shared snippet adds it). The flag can sit next to a shorthand default: {{VALUE:reminder|call mom|optional}}. Because optional is a reserved flag word, a literal default of "optional" needs the keyed form: {{VALUE:x|default:optional}}.

Tip β€” make decoration disappear with the date: put literal text inside the moment format using square brackets. With

- [ ] {{VALUE}} {{VDATE:due,[πŸ“… ]YYYY-MM-DD|optional}}

an answered date renders πŸ“… 2026-06-14, and a skipped date renders nothing at all β€” the emoji vanishes with it. The same works for prefixes like [Due: ]YYYY-MM-DD.

Scripting note: setting a variable to the empty string (params.variables.myVar = "") now counts as "answered, empty" for all token types, including {{VDATE}} β€” it renders empty instead of re-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.

{{LINKCURRENT}}​

A link to the file from which the template or capture was triggered ([[link]] format). When the append-link setting is set to Enabled (skip if no active file), this token resolves to an empty string instead of throwing an error if no note is focused.

Example: Source: {{LINKCURRENT}}.

{{FILENAMECURRENT}}​

The basename (without extension) of the file from which the template or capture was triggered. Honors the same required/optional behavior as {{LINKCURRENT}} - when optional and no active file exists, resolves to an empty string.

Example: Notes from {{FILENAMECURRENT}}.

{{MACRO:<MACRONAME>}}​

Execute a macro and write the return value here.

Example: {{MACRO:Generate summary}}.

{{MACRO:<MACRONAME>|label:<label>}}​

Executes the macro but shows the label as the placeholder when the macro prompts you to choose an export from a script object. This is helpful when multiple macro calls show similar lists.

Example: {{MACRO:Choose project|label:Project}}.

{{TEMPLATE:<TEMPLATEPATH>}}​

Include templates in your format. Supports Templater syntax.

Example: {{TEMPLATE:Templates/Meeting.md}}.

{{GLOBAL_VAR:<name>}}​

Inserts the value of a globally defined snippet from QuickAdd settings. Snippet values can include other QuickAdd tokens (e.g., {{VALUE:...}}, {{VDATE:...}}) and are processed by the usual formatter passes. Names match case‑insensitively in the token.

Example: {{GLOBAL_VAR:Meeting Header}}.

{{MVALUE}}​

Math modal for writing LaTeX. Use CTRL + Enter to submit.

Example: Equation: ${{MVALUE}}$.

{{FIELD:<FIELDNAME>}}​

Suggest the values of FIELDNAME anywhere {{FIELD:FIELDNAME}} is used. Fields are YAML fields, and the values represent any value this field has in your vault. If there exists no such field or value, you are instead prompted to enter one.

Example: project: {{FIELD:project}}.

Enhanced Filtering Options:

  • {{FIELD:fieldname|folder:path/to/folder}} - Only suggest values from files in specific folder
  • {{FIELD:fieldname|tag:tagname}} - Only suggest values from files with specific tag
  • {{FIELD:fieldname|inline:true}} - Include Dataview inline fields (fieldname:: value)
  • {{FIELD:fieldname|inline:true|inline-code-blocks:ad-note}} - Include inline fields inside specific fenced code blocks (opt-in)
  • {{FIELD:fieldname|exclude-folder:templates}} - Exclude values from files in specific folder
  • {{FIELD:fieldname|exclude-tag:deprecated}} - Exclude values from files with specific tag
  • {{FIELD:fieldname|exclude-file:example.md}} - Exclude values from specific file
  • {{FIELD:fieldname|default:Status - To Do}} - Prepend a default suggestion; the modal placeholder shows it and pressing Enter accepts it.
  • {{FIELD:fieldname|default:Draft|default-empty:true}} - Only add the default when no matching values are found.
  • {{FIELD:fieldname|default:Draft|default-always:true}} - Keep the default first even if other suggestions exist.
  • Combine filters: {{FIELD:fieldname|folder:daily|tag:work|exclude-folder:templates|inline:true|inline-code-blocks:ad-note}}
  • Multiple exclusions: {{FIELD:fieldname|exclude-folder:templates|exclude-folder:archive}}

Examples: status: {{FIELD:status|default:Draft|default-always:true}} or id: {{FIELD:Id|inline:true|inline-code-blocks:ad-note}}.

This is currently in beta, and the syntax can changeβ€”leave your thoughts here.

{{selected}}​

The selected text in the current editor. Will be empty if no active editor exists.

Example: > {{selected}}.

{{CLIPBOARD}}​

The current clipboard content. Will be empty if clipboard access fails due to permissions or security restrictions.

Example: Copied: {{CLIPBOARD}}.

{{RANDOM:<length>}}​

Generates a random alphanumeric string of the specified length (1-100). Useful for creating unique identifiers, block references, or temporary codes.

Example: ^{{RANDOM:6}}.

{{TITLE}}​

The final rendered filename (without extension) of the note being created or captured to.

Example: # {{TITLE}}.

|text: limitations (current): commas and pipes inside individual items/text entries are not supported.

Mixed-mode example​

Use single-line for a title and multi-line for a body:

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