Slack timestamp generator
Make Slack <!date> strings that show a date and time in each reader's own time zone. Preview every token, convert a Unix timestamp or <!date> string back to a date, and turn a message ts into a date and back. Nothing leaves your browser.
Make a Slack date string
Unix time 1392734382 = 2014-02-18T14:39:42Z
<!date^1392734382^{date_short_pretty} at {time}|Feb 18, 2014 at 2:39 PM UTC>Slack draws the date in each reader's own device time zone, so two people can see different days for the same string. Loading your time zone...
Every token for this date
Copy gives a complete string with that one token and the same fallback, such as <!date^1392734382^{date_num}|Feb 18, 2014 at 2:39 PM UTC>. The middle column is what a reader in UTC sees right now.
| Token | Reader sees | Full string |
|---|---|---|
| {date_num} Numeric date with leading zeros. Always shows the year. | 2014-02-18 | |
| {date} Full month and ordinal day. Year dropped within 182 days of now. | February 18th | |
| {date_short} Short month. Year dropped within 182 days of now. | Feb 18 | |
| {date_long} Weekday, month, and ordinal day. Year dropped within 182 days. | Tuesday, February 18th | |
| {date_pretty} Like {date}, but today, yesterday, or tomorrow when it fits. | Today | |
| {date_short_pretty} Like {date_short}, but today, yesterday, or tomorrow when it fits. | Today | |
| {date_long_pretty} Like {date_long}, but today, yesterday, or tomorrow when it fits. | Today | |
| {time} 12-hour with AM/PM, or 06:39 when the reader uses 24-hour time. | 2:39 PM | |
| {time_secs} Time with seconds. 06:39:42 in 24-hour time. | 2:39:42 PM | |
| {ago} Relative time: 5 minutes ago, 3 hours ago, in 2 days. | 1 hour ago | |
| {date_slash}not in docs Not in the docs. Month/day/year for US English readers. | 02/18/2014 | |
| {date_short_full}not in docs Not in the docs. Like {date_short}, but always shows the year. | Feb 18, 2014 | |
| {date_long_full}not in docs Not in the docs. Like {date}, but always shows the year. | February 18th, 2014 |
Read a Slack date or Unix timestamp
Paste a <!date^...> string, a Unix timestamp in seconds or milliseconds, or an ISO date.
Read as: Slack <!date> string
{date} at {time} · Fallback: February 18th, 2014 at 6:39 AM PST- In UTC
- Tuesday, February 18, 2014 at 2:39:42 PM UTC
- UTC (ISO 8601)
- 2014-02-18T14:39:42.000Z
- Unix seconds
- 1392734382
- Unix milliseconds
- 1392734382000
- Relative
- 1 hour ago
Message ts and thread_ts
Paste a message ts like 1392734382.000200 or a message link from Copy link.
- Message ts
- 1392734382.000200
- thread_ts
- 1392734300.000100
- Channel
- C024BE91L
- In UTC
- Tuesday, February 18, 2014 at 2:39:42 PM UTC
- UTC (ISO 8601)
- 2014-02-18T14:39:42.000Z
Date to ts
The date picked above, as a ts for the oldest and latest filters of conversations.history.
- ts
- 1392734382.000000
- Written in
- Feb 18, 2014 at 2:39:42 PM UTC
curl -G https://slack.com/api/conversations.history \ -H "Authorization: Bearer $SLACK_TOKEN" \ -d channel=C024BE91L \ -d oldest=1392734382.000000
Working across time zones? The Slack timezone converter shows each teammate's local time and your overlap hours.
How to add a local-time date to a Slack message
- Pick the date and time, and the time zone that time is written in. Press Now for the current time.
- Write the token string. Click a token such as {date_short_pretty} or {time} to add it, or start from a preset. Plain words around the tokens stay as typed.
- Add a link if the date should open an event page, and check the fallback text. The tool writes a fallback with the zone name for you.
- Pick a reader time zone and a 12-hour or 24-hour clock to see the text that person gets. The table lists every token for the same date.
- Copy the string into the text of chat.postMessage, an incoming webhook, or a Block Kit mrkdwn field. It does not work when typed into the Slack message box.
Frequently asked questions
How do I show a time in each reader's time zone in Slack?
Send the time as a date string: <!date^1392734382^{date_short_pretty} at {time}|Feb 18, 2014 at 6:39 AM PST>. The number is the Unix timestamp in seconds, the part in braces is the format, and the text after | is the fallback. Slack replaces it with the date in each reader's time zone, so a reader in Seoul and one in New York each see their own local time.
What is the Slack date format syntax?
The full form is <!date^timestamp^token_string^optional_link|fallback_text>. The ^ character separates the parts. The timestamp is Unix time in whole seconds. The token string is plain text with tokens such as {date} or {time}. The optional link turns the date into a link, and the fallback text is what older clients and notifications show.
Which date tokens does Slack support?
The docs list ten: {date_num} (2014-02-18), {date} (February 18th, 2014), {date_short} (Feb 18, 2014), {date_long} (Tuesday, February 18th, 2014), their _pretty versions that say today, yesterday or tomorrow, {time} (6:39 AM), {time_secs} (6:39:42 AM) and {ago} (3 minutes ago). Slack's web client also renders three tokens that are not in the docs: {date_slash} (02/18/2014), and {date_short_full} and {date_long_full}, which always show the year.
Why does Slack show the fallback text or the raw <!date> code?
We posted broken strings to a real Slack DM to check. An unknown token such as {day} makes Slack show the fallback text. Slack shows the raw code when the timestamp is in milliseconds (13 digits), negative, or has a decimal point, when the token string contains a ^, and when the fallback is missing or empty. A | inside the token string ends it early, and everything after the | becomes fallback text.
Why does the year not show in my Slack date?
Slack drops the year from {date}, {date_short} and {date_long} when the date is less than 182 days from now, past or future. A date 190 days ago shows as March 21st, 2026, and one 175 days ago as April 5th. Use {date_num}, {date_short_full} or {date_long_full} if the year must always show.
Which time zone does Slack use for <!date>?
The time zone of the reader's device, not the time zone set in Slack preferences, according to Slack's developer docs. {time} follows the reader's clock setting: 6:39 PM on a 12-hour clock, 18:39 on a 24-hour clock. The pretty tokens also count today and yesterday in the reader's zone, so one string can say today for one person and tomorrow for another.
Can I use <!date> in a message I type in Slack?
No. When we typed a <!date^...> string into the Slack message box and sent it, Slack showed the characters as typed. The syntax works in text an app sends: chat.postMessage, incoming webhooks, and mrkdwn text in Block Kit. For a date in your own message, write it in words or use Slack reminders and scheduled messages.
How do I convert a Slack message ts to a date?
A message ts such as 1392734382.000200 is the Unix time in seconds, a dot, and six more digits. The part before the dot is when the message was sent. The six digits keep the ts unique inside the channel, so treat the whole string as the message ID and never round it. Paste a ts or a message link into the ts box above to see the date.
What is thread_ts in Slack?
thread_ts is the ts of the message that started a thread. Every reply carries it, and to reply in a thread through the API you pass the parent message ts as thread_ts to chat.postMessage. A link copied from a reply has ?thread_ts= at the end. The tool reads it out of the link, together with the reply ts and the channel ID.
How do I get messages after a certain date from the Slack API?
Turn the date into a ts and pass it as oldest, or latest for messages before it, to conversations.history. The Date to ts box does this for the date you picked: it writes the Unix seconds followed by .000000, and shows a curl example you can copy.
Related reading
Slack Green does one thing: it keeps your Slack presence dot green while you are actually working, so a quiet keyboard does not mark you away. Try it free.