Skip to content
Free Tool Arena

How-To & Life · Guide · Developer Utilities

How to use Discord timestamps

The <t:unix:fmt> syntax, every format flag (F, f, D, d, T, t, R), timezone awareness, event scheduling, and common mistakes.

Updated April 2026 · 6 min read

You’re scheduling a raid at 8pm Eastern. Half your guild is in Europe, two people are in Australia, and someone in California keeps showing up an hour late because they did the math wrong. Discord solved this in 2021 with dynamic timestamps — a short bit of markup that renders in each viewer’s local timezone automatically. Nobody converts anything. Nobody shows up at 3am. This guide covers the exact syntax, all seven format letters, the epoch math behind the tags, and the practical use cases (events, deadlines, countdowns, server boost expirations) that make them the single most underused feature in Discord.

Advertisement

The syntax

A Discord timestamp is a plain text tag with the form <t:EPOCH:FORMAT>. EPOCH is a unix timestamp in seconds (not milliseconds). FORMAT is a single letter that tells Discord how to render it. When another user reads your message, their client converts the epoch to their own timezone using the selected format.

<t:1713830400:F>
// Renders for viewer in New York as: Tuesday, April 23, 2024 8:00 AM
// Renders for viewer in Tokyo as:    Tuesday, April 23, 2024 9:00 PM
// Renders for viewer in London as:   Tuesday, April 23, 2024 1:00 PM

The epoch is the same number everywhere. Only the rendered output differs. This is exactly why unix time exists — it’s the timezone-neutral instant.

The seven format letters

<t:1713830400:t>  Short time       8:00 AM
<t:1713830400:T>  Long time        8:00:00 AM
<t:1713830400:d>  Short date       4/23/2024
<t:1713830400:D>  Long date        April 23, 2024
<t:1713830400:f>  Short date/time  April 23, 2024 8:00 AM    (default)
<t:1713830400:F>  Long date/time   Tuesday, April 23, 2024 8:00 AM
<t:1713830400:R>  Relative         in 2 hours / 3 days ago

If you omit the format letter entirely (<t:1713830400>), Discord defaults to f. The actual formatting respects the viewer’s locale — US users see “4/23/2024,” European users see “23/04/2024,” and 24-hour-clock users see “20:00” instead of “8:00 PM.”

How to get the epoch

You need the unix timestamp (seconds since 1970-01-01 UTC) of your target moment. Three ways to get it. Use a timestamp generator tool and paste the result. Run it in a console: JavaScript Math.floor(new Date('2024-04-23T12:00Z').getTime() / 1000). Use a shell: date -d '2024-04-23 12:00 UTC' +%s on Linux or date -j -f '%Y-%m-%d %H:%M' '2024-04-23 12:00' +%s on macOS.

The relative format is the killer feature

<t:EPOCH:R> renders as “in 3 hours,” “in 2 days,” “5 minutes ago,” and updates live as time passes. It doesn’t require a page refresh — Discord recalculates every few seconds. This makes it perfect for countdown timers, event reminders, and “posted X ago” labels.

Event starts <t:1713830400:R>!
RSVP by <t:1713744000:F>.

// Renders live as:
Event starts in 3 hours!
RSVP by Monday, April 22, 2024 8:00 AM.

Combining formats in one message

Mix formats for maximum clarity. A classic event post pairs an absolute time (so people can put it on a calendar) with a relative time (so they know at a glance how soon it is).

**Raid Night**
When: <t:1713830400:F> (<t:1713830400:R>)
Please arrive 10 minutes early for buffs.

Use case: event scheduling

The obvious one. Instead of “8pm ET” in your event post — which confuses everyone not in ET — paste a long-format timestamp. European members see it in CET, Asian members see it in JST, nobody asks “wait what time is that for me.” The Discord event feature uses the same logic under the hood, but standalone timestamps work in any channel, thread, or DM.

Use case: deadlines

For hackathons, bounties, contest submissions, and homework-group assignments, paste the deadline as <t:EPOCH:F> plus <t:EPOCH:R>. The relative tag creates automatic urgency as it ticks down from “in 3 days” to “in 4 hours” to “2 minutes ago.”

Use case: server management

Moderation bots often post timestamps for mute durations, ban expirations, and boost renewals. A log message like “user muted until <t:1713830400:R>” tells every staff member in their own timezone when the mute lifts. Same for tournament brackets, giveaway end times, and scheduled maintenance windows.

Limitations to know

Discord timestamps render only in Discord clients — the desktop app, mobile apps, and the web client. They don’t work in webhooks’ embed footer timestamps (that field is its own ISO string), and they don’t work in screen reader exports or message copy-paste to external apps. The raw <t:...> text is what gets copied. They also don’t support custom format strings — you get the seven letters and nothing else.

Bot integration tips

When building Discord bots, output timestamps using these tags rather than preformatted strings. Your bot doesn’t know the user’s timezone, but Discord does — let it do the work. For event-announcement bots, accept user input as ISO 8601 plus a timezone, convert to unix seconds, and emit <t:EPOCH:F> in the embed. Much more reliable than asking users “what timezone are you in” on every command.

Common mistakes

Using milliseconds instead of seconds. JavaScript’s Date.now() returns ms. If you paste 1713830400000 into a Discord tag, you get a date in the year 56,304. Divide by 1000 first.

Using the wrong format letter. F and f are different. Capital letters produce long forms, lowercase short forms. R is the only case-insensitive one, and it has no short form.

Forgetting the leading t:. It’s <t:EPOCH:F>, not <EPOCH:F>. The t tells Discord this is a timestamp tag.

Posting a static time next to the tag. Writing “Event at 8pm ET (<t:...:F>)” defeats the purpose — the non-ET viewer sees two different times and gets confused. Just use the tag.

Assuming the tag works in replies to webhooks. Most webhook contexts render it; some older integrations strip it. Test in your target channel before you rely on it for a scheduled announcement.

Using timestamps for recurring events. Each tag is one fixed moment. “Every Tuesday at 8pm” can’t be encoded in a single tag — you need one tag per occurrence, or a bot that rewrites the tag weekly.

Forgetting daylight saving transitions. If your event is “8pm local time” for the event organizer, the unix epoch you pick is set in stone. If DST flips before the event, your “8pm” becomes 7pm or 9pm local. Pick the epoch based on the wall-clock moment you actually want.

Run the numbers

Generate <t:EPOCH:FORMAT> tags without touching a console using the Discord timestamp generator. Pair with the unix timestamp converter to verify the epoch matches the moment you intended, and the time zone converter to sanity-check how an event reads across your audience’s regions before posting.

Advertisement

Found this useful?Email