Skip to content
$ epochly

Discord Timestamp Generator

Set a moment, copy a tag, paste it in chat. Discord renders the tag in every reader's own time zone and locale, which turns "8pm EST — wait, what's that for you?" into a line nobody has to convert. All nine style suffixes are generated at once, each with a preview.

~/epochly — discord··········
unit

detected: seconds (s)
10 digits — 1 to 11 digits is read as seconds, because 11 digits of seconds already reaches the year 5138 and nothing longer would still be a second count.

UTC · ISO 86012023-11-14T22:13:20.000Z
UTC · RFC 2822Tue, 14 Nov 2023 22:13:20 +0000
UTC · readableTuesday, 14 November 2023, 22:13:20 UTC
Local timeresolving your time zone…
Local · ISOresolving your time zone…
Relativestarting clock…Months and years are approximated as 30 and 365 days, so this is a distance, not a measurement.
Epoch · seconds1700000000
Epoch · milliseconds1700000000000
try

Discord tags for this timestamp

Paste a tag into any Discord message. The preview shows the shape each style produces; Discord renders it in each reader's own locale and zone.

t · Short Time<t:1700000000:t> 22:13
T · Medium Time<t:1700000000:T> 22:13:20
d · Short Date<t:1700000000:d> 14/11/2023
D · Long Date<t:1700000000:D> 14 November 2023
f · Long Date, Short Time<t:1700000000:f> 14 November 2023 22:13
F · Full Date, Short Time<t:1700000000:F> Tuesday, 14 November 2023 22:13
s · Short Date, Short Time<t:1700000000:s> 14/11/2023, 22:13
S · Short Date, Medium Time<t:1700000000:S> 14/11/2023, 22:13:20
R · Relative Time<t:1700000000:R> starting clock…

What the markup is

A Discord timestamp is a small piece of message markup with two parts: <t:TIMESTAMP:STYLE>. TIMESTAMP is a Unix timestamp in seconds — a bare integer, no decimal point, no separators. STYLE is a single letter choosing how it is displayed. Type that text into a message and each reader's client replaces it with a formatted local time.

The point is not brevity, it is correctness. Writing "raid at 20:00 UTC" makes every reader do arithmetic, and some of them will get it wrong, especially across a daylight-saving change where the offset they remember is no longer the offset in force. A timestamp tag moves that conversion from seven humans to one client, and it stays correct if the event is rescheduled across a clock change.

The nine styles, side by side

Every tag below encodes the same instant — 1700000000, which is 2023-11-14T22:13:20.000Z. Only the display differs.

Tags generated at build time from the reference timestamp. The preview column shows the field shape each style produces, rendered here in UTC and English so the table is stable; a real reader sees the same fields in their own zone and locale. The relative row is computed against a fixed reference three hours after the sample instant.
Style Name Tag Renders as Reach for it when
t Short Time
HH:MM
<t:1700000000:t> 22:13 A raid, stream or standup start time, when everyone already knows the day.
T Medium Time
HH:MM:SS
<t:1700000000:T> 22:13:20 Anything where the exact second matters — a countdown target or a drop time.
d Short Date
DD/MM/YYYY
<t:1700000000:d> 14/11/2023 A deadline or release date with no time attached.
D Long Date
D Month YYYY
<t:1700000000:D> 14 November 2023 The same date written out, for announcements rather than logistics.
f Long Date, Short Time
D Month YYYY HH:MM
<t:1700000000:f> 14 November 2023 22:13 The default and the safest general choice: date plus time in one line.
F Full Date, Short Time
Weekday, D Month YYYY HH:MM
<t:1700000000:F> Tuesday, 14 November 2023 22:13 Event announcements, where naming the weekday stops people misreading the date.
s Short Date, Short Time
DD/MM/YYYY, HH:MM
<t:1700000000:s> 14/11/2023, 22:13 A compact date-and-time for logs and tables, where the numeric date saves horizontal space.
S Short Date, Medium Time
DD/MM/YYYY, HH:MM:SS
<t:1700000000:S> 14/11/2023, 22:13:20 The same compact form when the second matters — audit trails and precise cut-offs.
R Relative Time
N units ago / in N units
<t:1700000000:R> 3 hours ago Countdowns and "how long ago" — the only style that keeps changing after you post it.

Two properties of that list are worth stating plainly. The letters are case-sensitive, and the case carries meaning in three separate pairs — d/D, f/F and s/S are six distinct styles, not three. And omitting the suffix entirely, writing <t:1700000000>, falls back to f.

Which style to actually use

For a scheduled event, F is usually right: naming the weekday removes the most common misreading, where someone sees a date and assumes the wrong day of the week. For a countdown, R is the only style that keeps working — it re-renders every time the message is viewed, so a pinned post stays useful without anyone editing it.

The combination worth knowing is posting two tags for one instant: <t:1700000000:F> (<t:1700000000:R>). The first gives the absolute time for anyone planning around it; the second gives the distance for anyone skimming. Readers get both without a single conversion between them.

Getting the timestamp itself

The tool at the top of this page is the shortest route: switch to date → epoch, pick the moment in your own zone, and the generated tags follow. Three other routes for when you are already somewhere else:

  • You have a date in mind. Use the date to Unix timestamp page, set the zone deliberately, and take the seconds value. Getting the zone right here is the whole job — an hour's error produces a tag that is confidently, precisely wrong for everyone.
  • You have a 13-digit number. That is milliseconds. Divide by 1000 and drop the remainder, or paste it into the tool above and let it floor for you. A 13-digit value pasted straight into a tag renders a date tens of thousands of years out — 1700000000000 becomes +055840-11-08T22:13:20Z.
  • You want "right now". date +%s in a shell, or the live readout on the current Unix timestamp page.

When a tag does not render

A tag that shows as literal text has one of a small number of causes, and they are quick to check in order. The angle brackets are missing, or an autocorrect turned them into typographic characters. The timestamp is not a bare integer — a decimal point, a comma or a stray space breaks it. The style letter is not one of the nine documented above, which is usually a case slip such as r for R. Or the tag sits inside a code block or an inline code span: Discord's reference does not document how <t:> behaves inside code formatting, but in practice the markup is shown literally there rather than rendered, the same way bold and links are — that one is an observation from using it rather than a documented guarantee. Paste it as ordinary message text and it renders.

One more thing worth setting expectations on: how a specific client draws the rendered text — the separator it uses, whether it writes the month in full, how it words a relative label — follows the reader's locale, so it is not something this page can predict. What the style letter reliably controls is which fields appear: time only, date only, both, and whether the weekday is included. That part is what the table above documents.

Related pages

Discord timestamp FAQ

01 How do I make a Discord timestamp?
Post the literal text <t:UNIX:STYLE> in a message, where UNIX is a Unix timestamp in seconds and STYLE is one of the nine letters below. For example <t:1700000000:F> renders as a full date and time in each reader's own zone. Set the moment in the tool above and copy the row you want.
02 Does Discord want seconds or milliseconds?
Seconds — a 10-digit value. If you took the number from JavaScript's Date.now() or Java's System.currentTimeMillis() it is 13 digits and must be divided by 1000 first, or the tag will render a date tens of thousands of years in the future. The tool above handles that for you: paste the 13-digit value and the generated tags already contain the floored seconds. Background on the two units is on the milliseconds to date page.
03 What are the nine style letters?
t Short Time, T Medium Time, d Short Date, D Long Date, f Long Date, Short Time (the default), F Full Date, Short Time (adds the weekday), s Short Date, Short Time, S Short Date, Medium Time, and R Relative Time. They are case-sensitive, and the case carries meaning in both directions: d and D are different styles, and so are s and S.
04 What happens if I leave the style off?
Writing <t:1700000000> with no colon and no letter falls back to the f style — short date and time. It is a reasonable default, but naming the style explicitly is worth the two extra characters when the message matters.
05 Why does my tag show as plain text instead of a time?
Three usual causes. The angle brackets are missing or mismatched. The timestamp has a decimal point or a comma in it — it must be a bare integer. Or the tag is inside a code block or an inline code span: Discord's reference does not document how <t:> behaves inside code formatting, but in practice the markup is shown literally there rather than rendered, the same way bold and links are — an observation from using it, not a documented guarantee.
06 Do other people see my time zone or theirs?
Theirs. That is the entire reason the feature exists: you post one instant and every reader sees it converted to their own local zone and locale automatically, with no "8pm EST" arithmetic in the replies. It also means the preview on this page — rendered in UTC in the table, and in your own zone in the tool above — is not what a reader in another country will see, and that is correct behaviour rather than a mismatch.
07 Can I use a timestamp for a past date?
Yes, and the R style is the interesting one for that: it renders as "3 hours ago" or "2 months ago" and keeps updating for as long as the message exists. Negative timestamps for pre-1970 dates form valid tags too — <t:-14182940:F> is a well-formed tag — though how any given client renders a date that old is not something this page can promise.

Related tools