Dynamic tokens
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.