Back to Blog

Dynamic Tokens in Text Expansion: Dates, Clipboard, and Smart Variables

March 28, 2026by TypeFire
dynamic variables text expandertext expansion tokenssmart snippets mac

Static text expansion is useful. Dynamic text expansion is transformative. The difference is simple: static snippets insert the same text every time, while dynamic snippets insert content that changes based on context - today's date, the current time, whatever is on your clipboard, or where your cursor should land.

TypeFire supports four dynamic tokens that turn ordinary snippets into smart templates. Here is everything you need to know about each one.

Dynamic Tokens in Text Expansion: Dates, Clipboard, and Smart Variables

The Four Dynamic Tokens

{{date}} - Current Date

The {{date}} token inserts today's date when the snippet expands. Not the date you created the snippet - the date you use it.

Why it matters: Dates appear in an enormous number of professional documents. Meeting notes, invoices, reports, journal entries, file headers, correspondence - all need the current date. Typing it manually means checking the calendar and formatting it consistently. {{date}} handles both automatically.

Example - Daily standup update (;standup):

## Standup - {{date}}

**Yesterday:**
- 

**Today:**
- 

**Blockers:**
- None

Every morning, typing ;standup gives you a fresh template with today's date already filled in.

Example - Invoice header (;invhead):

Invoice #: 
Date: {{date}}
Due Date: 

Example - File header comment (;fhead):

// Created: {{date}}
// Author: [Your Name]
// Description: 

{{time}} - Current Time

The {{time}} token inserts the current time at the moment of expansion.

Why it matters: Time stamps are essential for logging, meeting notes, and time-sensitive communications. Rather than glancing at the clock and typing the time, let the token handle it.

Example - Meeting notes header (;mstart):

## Meeting Notes
Date: {{date}}
Started: {{time}}
Attendees: 

---

Example - Log entry (;logentry):

[{{date}} {{time}}] 

Example - Phone call note (;callnote):

Call with: 
Date: {{date}} at {{time}}
Duration: 
Summary: 
Action items: 

Using both {{date}} and {{time}} together gives you a full timestamp without any manual input.

{{clipboard}} - Clipboard Contents

The {{clipboard}} token inserts whatever is currently on your clipboard. This is arguably the most powerful token because it lets you build workflows that combine copying and expanding.

Why it matters: Many text tasks follow a pattern - copy something, then write a message or template that includes what you copied. The clipboard token eliminates the paste step and wraps the copied content in your template automatically.

Example - Link sharing (;sharelink):

Check out this article: {{clipboard}}

Key takeaway: 

Copy a URL, type ;sharelink, and the URL is embedded in your message template.

Example - Code review comment (;crfeedback):

Regarding this code:
{{clipboard}}

Suggestion: 

Copy the problematic code, type ;crfeedback, and the code appears inside your feedback template.

Example - Email forwarding note (;fwdnote):

FYI - passing this along as it is relevant to our discussion:

{{clipboard}}

My take: 

Example - Quote response (;quotereply):

> {{clipboard}}

My response: 

Copy their message, type ;quotereply, and you have a properly formatted quote reply.

Workflow pattern: The clipboard token enables a powerful two-step workflow:

  1. Copy the relevant content
  2. Expand a snippet that includes and contextualizes it

This is faster than: copy, start typing your message, find the right spot, paste, continue typing.

{{cursor}} - Cursor Positioning

The {{cursor}} token controls where your text cursor lands after the snippet expands. Without it, your cursor ends up at the very end of the expanded text. With it, your cursor jumps to exactly where you need to start typing.

Why it matters: Most templates have one primary field that you fill in first. Positioning your cursor there saves the step of clicking or arrowing to the right spot.

Example - Email reply (;reply):

Hi {{cursor}},

Thank you for your message. 

Best regards,
[Your Name]

After expansion, your cursor sits right after "Hi " - ready for you to type the recipient's name.

Example - Function stub (;func):

function {{cursor}}() {
  
}

Your cursor is positioned where the function name goes.

Example - Bug report (;bug):

## Bug: {{cursor}}

**Steps to Reproduce:**
1. 
2. 
3. 

**Expected:** 
**Actual:** 
**Severity:** 

The cursor lands at the bug title, the most important field to fill in first.

Combining Multiple Tokens

The real power comes from using tokens together. Each snippet can use multiple tokens for a fully dynamic experience.

Daily journal entry (;journal):

## {{date}} - {{time}}

### Gratitude
{{cursor}}

### Goals for Today
1. 
2. 
3. 

### Notes

Date and time fill in automatically. Cursor lands at the gratitude section.

Client follow-up (;clientfu):

Subject: Follow-up from our conversation on {{date}}

Hi {{cursor}},

Thank you for taking the time to speak with me today. As discussed, here are the key points:

{{clipboard}}

Next steps:
1. 
2. 

Please let me know if I have missed anything.

Best regards,

Copy your meeting notes before expanding. The date fills in, the meeting notes embed via clipboard, and your cursor lands at the recipient's name.

Deployment log (;deploy):

## Deployment Log

**Date:** {{date}}
**Time:** {{time}}
**Version:** {{cursor}}
**Deployer:** [Your Name]

### Changes
{{clipboard}}

### Pre-deployment Checklist
- [ ] Tests passing
- [ ] Staging verified
- [ ] Rollback plan ready
- [ ] Monitoring in place

### Post-deployment Status
- [ ] Health checks passing
- [ ] No error spike
- [ ] Performance nominal

Copy your changelog, expand the snippet, and your cursor is at the version field. Date, time, and changelog are already filled in.

Tips for Effective Token Usage

Place {{cursor}} Strategically

Put {{cursor}} at the field you will always fill in first - usually the most unique or important field in the template. There can only be one cursor position per snippet.

Build Clipboard Workflows

When designing snippets with {{clipboard}}, think about what you will have copied when you use the snippet. Design your workflow backward: "I will copy X, then expand Y."

Use {{date}} in File Names

If you create documents with date-based naming, a snippet like ;newdoc can expand to meeting-notes-{{date}} for consistent file naming.

Combine with Markdown

All tokens work inside Markdown snippets. A Markdown template with dynamic tokens gives you formatted, context-aware content in one keystroke.

Dynamic Tokens vs Fill-in Fields

Some text expanders offer "fill-in" fields that pop up a form asking you to type values before expansion. TypeFire takes a different approach - all tokens resolve instantly without interrupting your flow. There is no dialog box, no form to fill out, no break in your typing rhythm.

This is a deliberate design choice. The point of text expansion is speed. If you have to stop and fill out a form every time you expand a snippet, much of the speed benefit disappears. TypeFire's tokens are deterministic and synchronous - they resolve immediately from available context (system clock, clipboard contents, cursor logic).

Getting Started with Dynamic Tokens

Start simple. Take an existing snippet and add {{date}} where you currently type the date manually. Use {{cursor}} to position your cursor at the first field you fill in. Once you see how these small additions save time, experiment with {{clipboard}} workflows.

TypeFire's dynamic tokens work in all snippet types - plain text, Markdown, and rich text. They work with abbreviation expansion, keyboard shortcuts, and the launcher. No setup required - just type the token syntax in your snippet content and it resolves automatically on every expansion.

Store and manage your snippets with TypeFire

Free text expander for Mac. Type abbreviations, they expand instantly in any app.

Download for macOS