DevKitHub

Programming

Discord Timestamp Generator — Every Style, Previewed

Enter a date and time, a Unix timestamp or an existing tag to get the <t:…> markup for every Discord style, with a preview of how each one renders.

Every style — read as a date and time

Short Time
<t:1793476800:t>
Medium Time
<t:1793476800:T>
Short Date
<t:1793476800:d>
Long Date
<t:1793476800:D>
Long Date, Short Time
<t:1793476800:f>
Full Date, Short Time
<t:1793476800:F>
Short Date, Short Time
<t:1793476800:s>
Short Date, Medium Time
<t:1793476800:S>
Relative Time
<t:1793476800:R>
No style (default)
<t:1793476800>

The instant

Unix seconds
1793476800
ISO 8601 (UTC)
2026-10-31T20:00:00.000Z
OffsetUTC
UTC+00:00

A tag shows every reader the time in their own time zone and their own Discord language — that is the point of using one. The previews are what a reader in UTC using the language chosen above would see, near enough. Relative Time is approximate: Discord does not publish its exact wording or rounding. A date and time typed without an offset is read in the selected time zone.

This tool runs entirely in your browser. Your input is never uploaded, stored or logged.

How it works

A Discord timestamp is a piece of message markup, <t:SECONDS:STYLE>, that each reader’s client replaces with a date. The number is a Unix timestamp in seconds and names one instant; the client writes it out in the reader’s own time zone and the language their Discord is set to. That is the whole reason to use one: an event posted as <t:1790000000:t> reads 15:13 in London and 10:13 AM in New York, and nobody has to convert anything. The letter picks the format. Discord documents nine — t and T for the time, d and D for the date, f, F, s and S for both, and R for relative time such as “in 2 hours” — and a tag with no letter is shown as f.

Input is read in one of three ways. A date and time with no offset, such as 2026-10-31 20:00, is wall-clock time in the selected zone, which starts as your browser’s; an explicit offset or Z overrides it. A number is a Unix timestamp whose unit comes from its length: ten digits is seconds, and thirteen is milliseconds, which is converted with a warning because it is the commonest way these tags go wrong. JavaScript’s Date.now() returns milliseconds, Discord reads the number as seconds, and the result is a date some 56,000 years away. An existing tag is decoded exactly as Discord would read it, so a broken one reproduces the broken date and the warning gives the tag that was meant. Locale formats such as 10/03/2026 are refused rather than guessed.

Clock changes are handled, not ignored. When the clocks go forward, an hour of wall-clock time never happens; when they go back, an hour happens twice. A skipped time is moved on by the length of the gap and a repeated time takes its first occurrence — the same rules Temporal and java.time apply by default — and either case produces a warning, with the tag for the second occurrence where there is one. The previews come from your browser’s Intl.DateTimeFormat in the chosen zone and language, which reproduces Discord’s documented examples closely, but the real rendering happens in each reader’s client. Relative Time is the loosest: Discord does not publish its rounding or wording, so the preview here is an approximation.

Common problems

Every example below is run against this tool in our test suite, so what it says here is what the tool actually does.

The part after <t: is not a whole number of seconds, so Discord would show this tag as plain text.

<t:abc:R>
Why:
A placeholder, a template variable that was never filled in, or a formatted date where the number belongs. Discord only turns the markup into a date when the part after t: is an integer.
Fix:
Put the Unix time in seconds there, e.g. <t:1790000000:R>, generated from the date rather than typed.

"x" is not a Discord timestamp style, so Discord would show this tag as plain text.

<t:1790000000:x>
Why:
An unknown style letter. There are nine and they are case-sensitive, so <t:1790000000:r> is not the relative style either, and a tag Discord does not recognise stays as literal text in the message.
Fix:
Use one of t, T, d, D, f, F, s, S or R, or leave the style off for the default, f.

The tag shows a date tens of thousands of years in the future.

Why:
A millisecond timestamp, usually from JavaScript’s Date.now(), went into the tag. Discord reads the number as seconds, so <t:1790000000000:R> lands in the year 58692.
Fix:
Divide by 1000 first: Math.floor(Date.now() / 1000). Paste the 13-digit number here and it is converted, or paste the broken tag to get the corrected one.

Not a date, time or timestamp this tool reads.

10/03/2026 19:30
Why:
A locale-style date. It is 10 March in most of the world and 3 October in the United States, and guessing wrong would move the event by seven months.
Fix:
Write the date year first — 2026-03-10 19:30 — which means the same thing everywhere.

A time during the spring clock change came out an hour later than typed.

Why:
That wall-clock time does not exist in the chosen zone, because the clocks jump over it: 02:30 on 8 March 2026 never happens in New York.
Fix:
Pick a time outside the gap. The warning states what the time was read as — 03:30 EDT in that example.

Frequently asked questions

How do I make a Discord timestamp?
Write <t:SECONDS:STYLE> in a message, where SECONDS is a Unix timestamp in seconds and STYLE is one of t, T, d, D, f, F, s, S or R. Enter the date and time here, check the time zone, and copy the tag for the style you want.
What do the Discord timestamp letters mean?
t is Short Time and T Medium Time, with seconds. d is Short Date and D Long Date. f is Long Date with Short Time, and the default; F adds the weekday. s is Short Date with Short Time, S Short Date with Medium Time, and R is Relative Time, such as “in 2 hours”. The letters are case-sensitive. Many generators list only seven styles; Discord’s documentation now lists nine, including s and S.
Why does my Discord timestamp show the wrong year?
It almost certainly holds milliseconds. Discord expects seconds, so a 13-digit number from Date.now() shows a date tens of thousands of years ahead. Divide it by 1000, or paste the tag here to get the corrected one.
Does everyone see the same time?
Everyone sees the same instant, written in their own time zone and their own Discord language — that is the point of the tag. The previews here show one zone and language at a time; switch them to see what other readers will see.

Last updated