The anatomy of a RecipeTimer URL
Every RecipeTimer link is a plain URL with query parameters. You can build them programmatically or use the timer generator for one-off links.
URL structure
https://recipetimer.app/t?h=0&m=12&s=0&t=Pasta&src=https://yoursite.com/recipeParameters
hintegeroptionalHours component of the duration. Integer between 0 and 23. Defaults to 0 if omitted.
mintegeroptionalMinutes component of the duration. Integer between 0 and 59. Defaults to 0 if omitted.
sintegeroptionalSeconds component of the duration. Integer between 0 and 59. Defaults to 0 if omitted.
tstringrequiredTimer name, shown in the notification alert and on the timer page. URL-encode the value — spaces become %20 or +. Maximum 60 characters. Example: t=Pasta or t=Roast%20Chicken.
srcURLoptionalYour recipe page URL. Must be a valid http:// or https:// URL. When present, the timer page shows a "Back to recipe" button. Useful when readers share or bookmark the timer URL directly.
At least one of h, m, or s must be non-zero. A total duration of 0 is invalid.
Examples
12-minute pasta timer
https://recipetimer.app/t?h=0&m=12&s=0&t=Pasta1 hour 30-minute roast chicken
https://recipetimer.app/t?h=1&m=30&s=0&t=Roast%20Chicken45-second rest (sous vide plating)
https://recipetimer.app/t?h=0&m=0&s=45&t=Rest12-minute pasta with back link
https://recipetimer.app/t?h=0&m=12&s=0&t=Pasta&src=https://example.com/pasta-recipeBuilding URLs in code
Use your language's URL-building utilities to ensure proper encoding:
JavaScript
const url = new URL('https://recipetimer.app/t')
url.searchParams.set('h', '0')
url.searchParams.set('m', '12')
url.searchParams.set('s', '0')
url.searchParams.set('t', 'Pasta')
url.searchParams.set('src', 'https://yoursite.com/recipe')
// → https://recipetimer.app/t?h=0&m=12&s=0&t=Pasta&src=https%3A%2F%2F...Python
from urllib.parse import urlencode
params = {'h': 0, 'm': 12, 's': 0, 't': 'Pasta', 'src': 'https://yoursite.com/recipe'}
url = 'https://recipetimer.app/t?' + urlencode(params)
# → https://recipetimer.app/t?h=0&m=12&s=0&t=Pasta&src=https%3A%2F%2F...Notes
- →URLs never expire. A link generated today works indefinitely. On the free tier, the duration is baked into the URL — if you change the recipe, generate a new link.
- →Indie plan persistent links use a UUID path (
/t/<uuid>) instead of query parameters. The duration can be updated from the dashboard without changing the URL in your recipe. - →The timer name (
t) appears in the push notification. Keep it short and specific — “Pasta” is better than “Step 3”.
Tips & tricks
Send readers back to the exact step, not the top of the page
Recipe pages are long. When a timer fires and a reader taps the notification, the src link takes them back to your recipe — but by default they land at the top and have to scroll to find their place. Adding an anchor to src drops them exactly where the timer was.
1. Add an id to the step in your recipe HTML
<p id="pasta-timer"> Cook for 12 minutes, stirring occasionally. <a href="https://recipetimer.app/t?...">⏱ Start timer →</a> </p>
2. Add the anchor to your src URL
https://recipetimer.app/t?h=0&m=12&s=0&t=Pasta&src=https://yoursite.com/pasta-recipe%23pasta-timerThe # must be URL-encoded as %23 inside a query parameter. JavaScript's URL API handles this automatically — see the code examples above.
In JavaScript
const url = new URL('https://recipetimer.app/t')
url.searchParams.set('h', '0')
url.searchParams.set('m', '12')
url.searchParams.set('s', '0')
url.searchParams.set('t', 'Pasta')
// The # is encoded automatically — no manual %23 needed
url.searchParams.set('src', 'https://yoursite.com/pasta-recipe#pasta-timer')
// → ...&src=https%3A%2F%2Fyoursite.com%2Fpasta-recipe%23pasta-timerConvention tip: Use a consistent prefix for your timer anchor IDs, such as timer-pasta or step-pasta. This keeps your HTML predictable when you have multiple timers on one page.