Reminder: today at 12:29 PM
<!date^1785673793^{date_short_pretty} at {time}|Aug 2, 2026 at 12:29 UTC>
Generate
<!date^UNIX^TOKEN|fallback> syntax for messages your app posts to Slack.
Custom tokens, preset formats, live preview.
A Slack timestamp is message markup (mrkdwn) in the form <!date^UNIX^TOKEN|fallback> — a Unix timestamp in seconds, a token string such as {date_short_pretty} at {time},
and plain-text fallback — that Slack renders as a formatted date in each viewer's local
timezone. Slack documents it for app-published text: the messages your app sends through the
Web API or an incoming webhook. This generator builds the full syntax from any date, time,
and token combination, with a live preview.
Reminder: today at 12:29 PM
<!date^1785673793^{date_short_pretty} at {time}|Aug 2, 2026 at 12:29 UTC> Reminder: today at 12:29 PM
<!date^1785673793^{date_long_pretty} at {time}|Aug 2, 2026 at 12:29 UTC> Reminder: today
<!date^1785673793^{date_pretty}|Aug 2, 2026 at 12:29 UTC> Reminder: 12:29 PM
<!date^1785673793^{time}|Aug 2, 2026 at 12:29 UTC> Reminder: 12:29:53 PM
<!date^1785673793^{time_secs}|Aug 2, 2026 at 12:29 UTC> Reminder: today at 12:29:53 PM
<!date^1785673793^{date_long_pretty} at {time_secs}|Aug 2, 2026 at 12:29 UTC> Reminder: today at 12:29 PM
<!date^1785673793^{date_short_pretty} at {time}|Aug 2, 2026 at 12:29 UTC> Pick when the event happens. Slack converts the timestamp to each viewer's local timezone automatically.
Click a preset card's copy button, or use the token buttons to build a custom format. Add a fallback for email and non-Slack clients. Smart tokens like {date_pretty} automatically render as "today" or "yesterday" when appropriate.
Put the <!date^...> syntax in the text your app publishes through the Slack Web API or an incoming webhook. Slack renders it as a timezone-aware date for each viewer. The syntax is documented for app-published text, not for messages typed into the composer.
| Token | Name |
|---|---|
| {date_num} | Date (numeric) |
| {date} | Date |
| {date_short} | Date (short) |
| {date_long} | Date (long) |
| {date_pretty} | Date (smart) |
| {date_short_pretty} | Short date (smart) |
| {date_long_pretty} | Long date (smart) |
| {time} | Time |
| {time_secs} | Time with seconds |
| {ago} | Relative |
Smart tokens (date_pretty, date_short_pretty, date_long_pretty) render as "today",
"yesterday", or "tomorrow" when applicable. All date tokens except date_num omit the year when the date is
within ±6 months of now.
Slack date formatting embeds a Unix timestamp in a message using the <!date^UNIX^TOKEN_STRING|FALLBACK>
syntax and renders it in each viewer's local timezone — the same viewer-local principle
behind Discord's <t:UNIX:F> markup. The UNIX value counts seconds since January 1, 1970 UTC, so the moment it
describes is unambiguous regardless of who wrote the message or where. What sets Slack
apart is composability: the token string mixes any number of tokens with literal text, so {date_short_pretty} at {time}
renders as "May 9, 2026 at 6:00 PM" as a single unit, in the reader's own timezone and in
Slack's own date style. Slack documents the syntax for app-published text — the messages an
app sends through the Web API or an incoming webhook — and an app-published message carries
it into channels, direct messages, and threads alike. Typing the tag into the composer by
hand is not a documented use, so route announcements that need it through a webhook or
workflow you control.
The
FALLBACK field is the plain
text after the pipe character, and it is what recipients see whenever Slack cannot render
the tag — in email notifications, some third-party integrations, and older API clients. A
good fallback states the date, time, and timezone explicitly — for example, "May 9, 2026
at 18:00 UTC" — so recipients know exactly when something happens even without the
rendered version. This tool generates a matching fallback automatically from the date and
timezone you select, and you can edit it before copying.
Slack timestamps are especially useful for reminders, event invites, and release announcements published by a bot or integration to a team that spans multiple timezones. Instead of a message that hard-codes "the meeting is at 3 PM EST," a Slack timestamp adapts to each person's local time automatically. For recurring schedules, have the job that owns the schedule post the message through the Slack API on the cadence you need.
Slack's smart tokens — date_pretty, date_short_pretty, and date_long_pretty — render as
"today", "yesterday", or "tomorrow" when the timestamp falls on those days in the viewer's
timezone. For all date tokens except date_num, Slack omits the year
when the date is within roughly six months of now, keeping messages compact. Use date_num (e.g., 2026-05-09)
when you need a stable, year-included ISO-style date for log lines or audit trails.
Slack documents the <!date^UNIX^TOKEN_STRING|FALLBACK> syntax for app-published text — the messages your app posts through the Web API or an incoming webhook. The UNIX value is a Unix timestamp in seconds, the TOKEN_STRING contains one or more tokens like {date_pretty} or {time}, and the FALLBACK is plain text shown when Slack cannot render the timestamp (e.g., in email notifications or API clients). Slack renders the timestamp in the viewer's local timezone automatically. A token like {date_pretty} may also render as "today" or "yesterday" depending on when the message is read.
Multiple tokens can be combined freely in a single token string. For example, {date_short_pretty} at {time} renders as "May 9, 2026 at 6:00 PM" in the viewer's timezone. Slack substitutes each token independently and leaves any literal text between them untouched. There is no documented limit on the number of tokens, but keep the string readable.
The Slack documentation presents date formatting as a feature of app-published text, so the supported path is text your app posts through the Web API or an incoming webhook. Typing the tag into the message composer by hand is not a documented use. An app-published message renders the tag the same way wherever it lands — channel, direct message, or thread — so if you want a viewer-local date in an announcement you would otherwise type manually, post it through a webhook or workflow you control.
Slack date formatting accepts any Unix timestamp — past, present, or future. A past timestamp renders as the formatted date, exactly as a future one would, and smart tokens like {date_pretty} show "yesterday" when the date qualifies. For elapsed time rather than a date, the documented token is {ago}, which renders as a human-readable period such as "3 minutes ago". Discord takes a different approach: its relative style renders a countdown that updates live in the client, so use the Discord timestamp generator if that is the behavior you need.
The fallback text (the part after the pipe |) is shown when Slack cannot render the <!date^...> tag. This happens in email notifications, some third-party integrations, and older Slack API clients. A good fallback includes the date and timezone explicitly, for example: "May 9, 2026 at 18:00 UTC".
{date_pretty} is a smart token. Slack renders it as "today", "yesterday", or "tomorrow" if the timestamp falls on one of those days in the viewer's local timezone. Otherwise it shows the full date, e.g. "May 9th, 2026". The year is also omitted automatically when the date is within roughly six months of now. Use {date} if you always want the explicit date with no substitution.