Docs Tokens and AI

Dynamic tokens

Watch the videoDynamic tokens1:29
Open on YouTube

Placeholders that resolve when the snippet expands. Wrap in double braces: {{token}}.

Date and time

Token Output
{{date}} 2026-04-12
{{date:YYYY}} 2026
{{date:MMMM DD, YYYY}} April 12, 2026
{{date:dddd}} Saturday
{{time}} 02:30 PM
{{time:HH:mm}} 14:30
{{datetime}} 04/12/2026, 02:30:00 PM

Date math

{{date:+1d}} tomorrow 路 {{date:-7d}} a week ago 路 {{date:+1M}} next month 路 {{date:+1y}} next year.

Units: y years, M months, d days, h hours, m minutes, s seconds.

Add a format after the shift to control how it reads: {{date:+1M:MMMM}} gives you next month's name, {{date:+1d:dddd}} gives tomorrow's weekday, {{date:-7d:MMM D}} gives Apr 5. Without a format a shifted date comes out as 2026-04-12.

The same works for {{time:}} and {{datetime:}}: {{time:+2h:HH:mm}} is two hours from now. Only the first colon separates the shift from the format, so a format may contain colons of its own.

Everything else

Token What it does
{{clipboard}} Pastes current clipboard contents
{{cursor}} Puts your cursor here after expansion (plain text only)
{{snippet:abbr}} Expands another snippet by abbreviation
{{note:Vault::Title}} Inserts a note's current text
{{key:enter}} Newline
{{key:tab}} Tab character
{{nbsp}} Non-breaking space
{{fill:Label}} Stops and asks you for a value, see below

The Tokens toolbar above the editor inserts these for you. It shows fewer options for script types, since only some tokens are safe inside script source.

Fill-in placeholders

Some snippets are the same every time apart from a name or an amount. {{fill:...}} is the gap you fill in as it expands.

Write {{fill:Name}} anywhere in the body. When the snippet expands, TypeFire opens a small form, you type the values, and the finished text goes into whatever you were writing in.

You write What happens
{{fill:Name}} A field labeled Name
{{fill:Amount|0.00}} A field labeled Amount, prefilled with 0.00

The Cursor group in the Tokens toolbar inserts both for you.

Good to know:

  • The label is required. {{fill}} on its own does nothing, because the label is what the form puts above the box.
  • Each field is asked once. Use {{fill:Name}} twice and you are asked once; both places get the same answer.
  • Enter inserts, Escape cancels. Canceling leaves your abbreviation exactly as you typed it, so nothing is lost.
  • An empty field disappears from the finished text, which is how you make an optional line.
  • It works with AI tokens. Fill-ins are collected first, so {{ai:custom:translate {{fill:Text}} to Hindi}} asks you for the text, then sends the result to the AI.

Documentation for TypeFire 5.1.0. Updated 2026-09-15.