Quick Start
What is til.re?
til.re is a no-signup, instant timer supporting both countdown and countup modes. Just type your time in the address bar and press Enter to start.
Core philosophy: URL is the State — All settings are encoded in the URL, no backend storage needed. Share and bookmark anytime.
Get Started in 5 Seconds
til.re/25m
25-minute countdown
til.re/pomodoro
Pomodoro (25 min + 5 min break)
til.re/17:00
Countdown to 5 PM
til.re/2020-01-01
Elapsed since 2020 (countup)
Key Features
- Zero Signup: No account needed, start instantly
- Easy Sharing: URL is the state, just copy the link to share
- Countdown & Countup: Future time → countdown, past date → countup (elapsed time)
- Multiple Themes: Various visual styles to choose from
- Shortcut System: Semantic shortcuts (e.g., pomodoro, weekend)
- Loop Mode: Support for work/rest alternating cycles
URL Protocol
Basic Format
https://til.re/[TimeExpression]?[Parameters]
Examples:
til.re/25m?title=Focus&theme=ringtil.re/pomodoro?theme=zen
Time Expressions
til.re supports four types of time expression formats:
Relative Time
Start counting from the current moment. Supports seconds (s), minutes (m), hours (h), and days (d).
| Example | Meaning |
|---|---|
25m | 25 minutes |
90s | 90 seconds |
1.5h | 1.5 hours (90 minutes) |
2d | 2 days |
Absolute Time
Countdown to a specific time point. Supports multiple formats:
Date Only (supports countup)
Format: YYYY-MM-DD or YYYY/MM/DD
| Example | Meaning |
|---|---|
2026-01-01 | January 1, 2026 at midnight (local time) |
2020-01-01 | Past date → shows elapsed time (countup mode) |
DateTime (supports countup)
Format: YYYY-MM-DDTHH:MM or YYYY-MM-DD HH:MM, with optional timezone
| Example | Meaning |
|---|---|
2026-06-15T09:00 | June 15, 2026 at 9 AM (local time) |
2026-06-15T09:00Z | June 15, 2026 at 9 AM UTC |
2026-06-15T09:00+08:00 | June 15, 2026 at 9 AM (UTC+8) |
2026-06-15 09:00 | Space separator also works |
Time Only (recurring daily, no countup)
Format: HH:MM or HH:MM:SS. Automatically rolls over to tomorrow if time has passed.
| Example | Meaning |
|---|---|
17:00 | Today at 5 PM (tomorrow if passed) |
09:30:00 | 9:30:00 AM with seconds |
Month-Day (recurring yearly, no countup)
Format: MM-DD or MM/DD, optionally with time. Automatically rolls over to next year if date has passed.
| Example | Meaning |
|---|---|
01-01 | January 1st at midnight (this year or next) |
12/25 | December 25th at midnight |
02-14T09:00 | February 14th at 9 AM |
7/4 12:00 | July 4th at noon |
Note: Month-Day format is recurring (yearly) and does not support countup mode. Feb 29 in non-leap years will roll to the next leap year. Use full date format (e.g., 2020-01-01) for countup.
Cyclic Time (A of B)
Periodic time points with automatic rollover to the next cycle. Format: [unitA]of[unitB][value]
| Example | Meaning | Use Case |
|---|---|---|
minuteofhour30 | The 30th minute of every hour | Scheduled reminder |
hourofday12 | 12 PM every day | Lunch reminder |
hourofday17 | 5 PM every day | End of work countdown |
dayofweek5 | Every Friday (0=Sunday) | Friday countdown |
dayofweek6 | Every Saturday | Weekend countdown |
dayofmonth15 | 15th of every month | Payday |
monthofyear6 | June every year | Annual event |
Cyclic time uses a metadata-driven algorithm, supporting any combination from seconds to years, such as minuteofday720 (noon every day).
Shortcuts
Semantic shortcuts that include predefined time and configuration. See Shortcut Reference for details.
| Shortcut | Equivalent Time | Default Config |
|---|---|---|
pomodoro | 25m | loop, rest: 5m |
weekend | dayofweek6 | - |
hiit | 30s | loop, rest: 10s, color: ff4444 |
Parameters
Common Parameters
Configuration parameters supported by all themes.
| Parameter | Alias | Type | Description | Example |
|---|---|---|---|---|
title | h | string | Title text | ?title=Focus |
timeup | end | string | Completion message | ?timeup=Take a break |
theme | t | string | Theme ID | ?theme=ring |
loop | l | boolean | Enable loop | ?loop=true |
rest | r | duration | Rest duration | ?rest=5m |
rest_title | rt | string | Rest phase title | ?rest_title=Rest |
color | c | hex | Primary color (without #) | ?color=ff6600 |
bg | - | hex | Background color (without #) | ?bg=000000 |
font | - | string | Font | ?font=mono |
scale | - | number | Scale multiplier | ?scale=1.5 |
mute | - | boolean | Mute sound | ?mute=true |
wakelock | w | boolean | Keep screen on (default: true) | ?wakelock=false |
cursor | cur | number | Cursor auto-hide delay (0=disabled, default: 3) | ?cursor=5 |
overflow | o | string | Overflow behavior | ?overflow=continue |
units | u | string | Time display units | ?units=ms |
compact | - | number | Minimum units to display | ?compact=2 |
Units Parameter
Controls which time units are displayed. Default is hms (hours:minutes:seconds).
| Unit | Meaning |
|---|---|
y | Years |
M | Months (30 days) |
d | Days |
h | Hours |
m | Minutes |
s | Seconds |
S | Milliseconds |
Examples:
til.re/25m?units=ms- Minutes:Seconds onlytil.re/7d?units=dhms- Days:Hours:Minutes:Secondstil.re/2026-01-01?units=yMdhms- Full format
Overflow rule: The highest unit has no upper limit. For example, with units=s, 300 seconds displays as 300 (not 05:00).
Compact Parameter
Controls hiding leading zeros:
0(default): Show all units- Positive integer N: Keep at least N units, hide leading zeros
Examples (with units=hms):
| compact | Input | Output |
|---|---|---|
0 | 00:25:30 | 00:25:30 |
2 | 00:25:30 | 25:30 |
2 | 01:25:30 | 01:25:30 (non-zero high unit kept) |
1 | 00:00:45 | 45 |
Overflow Parameter
Controls behavior when using absolute time with complete date (e.g., 2020-01-01):
| Value | Description |
|---|---|
detect | Default. Auto-detect: past time → countup, future time → countdown |
stop | Always stop at zero, never enter countup mode |
continue | Trigger notification at zero, then switch to countup |
Countup Mode: When target time is in the past, til.re shows how much time has elapsed since that point. Only works with complete date format (e.g., 2020-01-01). Pure time format like 17:00 is recurring and won't enter countup mode.
Font Options
| Value | Effect |
|---|---|
pixel | Pixel-style font (Press Start 2P) |
mono | Monospace font (SF Mono) |
serif | Serif font (Georgia) |
Parameter Applicability by Mode
Some parameters only apply to countdown mode. In countup mode (elapsed), parameters related to "completion" are ignored:
| Parameter | Countdown | Countup | Note |
|---|---|---|---|
title | ✓ | ✓ | |
timeup | ✓ | ✗ | No completion in countup |
theme | ✓ | ✓ | |
loop | ✓ | ✗ | No completion in countup |
rest | ✓ | ✗ | No completion in countup |
rest_title | ✓ | ✗ | No rest phase in countup |
color | ✓ | ✓ | |
bg | ✓ | ✓ | |
font | ✓ | ✓ | |
scale | ✓ | ✓ | |
mute | ✓ | ✓ | |
wakelock | ✓ | ✓ | |
cursor | ✓ | ✓ | |
overflow | ✓ | - | Only at initialization |
units | ✓ | ✓ | |
compact | ✓ | ✓ |
Configuration Priority
When the same configuration is defined in multiple places, the priority is:
URL Parameters > Shortcut Defaults > Global Defaults
Interaction Controls
Themes are divided into two categories with different interaction methods:
| Type | Themes | Interaction Method |
|---|---|---|
| Functional | default, ring, neon, pixel, flip | Control bar buttons + Keyboard |
| Immersive | zen, matrix | Click/Double-click + Keyboard |
Functional Themes
Provide visual control buttons. Shown on mouse movement or touch, auto-hide after 3 seconds (Pixel theme always visible).
| Button | Function |
|---|---|
| ⏸ / ▶ | Pause / Resume |
| ♪ / ✕ | Sound On / Mute |
| ⌜⌝⌞⌟ | Enter / Exit Fullscreen |
Immersive Themes
No control bar, uses implicit interaction to maintain visual immersion.
- Single Click: Pause / Resume
- Double Click: Toggle Fullscreen
Keyboard Shortcuts (All Themes)
| Key | Function |
|---|---|
Space | Pause / Resume |
M | Toggle Mute |
F | Toggle Fullscreen |
default Default
Clean, large-font countdown display. Ideal for focus and minimalist scenarios.
Theme-Specific Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
color | hex | - | Text color |
bg | hex | 1a1a2e | Background color |
font | string | - | Font (pixel/mono/serif) |
scale | number | 1 | Scale multiplier |
Examples
til.re/25m- Basic usagetil.re/25m?color=ff6600&bg=000000- Custom colorstil.re/25m?scale=1.5&font=mono- Scaled + Monospace font
Loading themes...
Shortcut Reference
Shortcuts are semantic presets that include predefined time expressions and configurations. Just use the shortcut name directly in the URL.
Loading shortcuts...
Shortcuts can be combined with other parameters, e.g., til.re/pomodoro?theme=zen uses the zen theme for Pomodoro.
External Plugins
til.re supports loading themes and shortcuts from external GitHub repositories via jsDelivr CDN.
URL Format
Use @user/repo:name format to specify user plugins:
User Theme
til.re/25m?theme=@username/my-themes:aurora
User Shortcut
til.re/@username/my-shortcuts:deep-work
Official Plugins
Official plugins (themes without @ prefix) are loaded from the til-re/plugins repository. See the Themes section above for available themes.
Create Your Own Plugin
Use our official template to get started quickly:
👉 github.com/til-re/plugin-template
The template includes:
- Example themes (beginner + advanced)
- Example shortcuts
- Local development server
- Complete API documentation
Theme Structure
your-repo/
├── themes/
│ └── my-theme/
│ ├── manifest.json
│ ├── my-theme.js
│ └── my-theme.css
Theme Manifest
{
"id": "my-theme",
"version": "1.0.0",
"name": "My Theme",
"files": {
"js": "my-theme.js",
"css": "my-theme.css"
},
"defaults": {}
}
Shortcut Pack
{
"id": "my-shortcuts",
"version": "1.0.0",
"shortcuts": {
"deep-work": {
"time": "90m",
"config": {
"title": "Deep Work",
"loop": false
}
}
}
}
For detailed plugin development guide, see the plugin-template repository.