Logo

MonoCalc

/

Discord Timestamp Generator

Social Media
Seconds are optional and default to 00.
Not where your readers are — where the wall-clock time above belongs.
Stands in for a reader's own timezone.

Your token

<t:1790191903:f>

Short date/time · 1,790,191,903 seconds

Style shown in the mockup below:

You

Today

Raid starts 24 September 2026 at 1:01 am

On hover, Discord shows the long form: Thursday, 24 September 2026 at 1:01 am

Only changes this preview. It is never part of the token you copy.

What readers in other timezones see

The same instant, drawn in the short date/time (f) style for each zone. A row on a different calendar day from Calcutta is marked.

Calcutta

UTC+05:30 · your zone

24 September 2026 at 1:01 am

Los Angeles

UTC-07:00

23 September 2026 at 12:31 pm

−1 day

New York

UTC-04:00

23 September 2026 at 3:31 pm

−1 day

London

UTC+01:00

23 September 2026 at 8:31 pm

−1 day

Berlin

UTC+02:00

23 September 2026 at 9:31 pm

−1 day

Kolkata

UTC+05:30

24 September 2026 at 1:01 am

Tokyo

UTC+09:00

24 September 2026 at 4:31 am

Sydney

UTC+10:00

24 September 2026 at 5:31 am

Every style for this instant

t Short time

1:01 am

<t:1790191903:t>

T Long time

1:01:43 am

<t:1790191903:T>

d Short date

24/09/26

<t:1790191903:d>

D Long date

24 September 2026

<t:1790191903:D>

f Short date/time

24 September 2026 at 1:01 am

<t:1790191903:f>

F Long date/time

Thursday, 24 September 2026 at 1:01 am

<t:1790191903:F>

R Relative

now

<t:1790191903:R>

— No style (renders as f)

24 September 2026 at 1:01 am

<t:1790191903>

About these previews
Previews are produced by your browser's Intl formatter as an approximation of Discord's renderer. The shape matches; the exact wording and ordering come from each reader's own locale. The copy buttons always copy the token, never the preview.

About This Tool

Discord Timestamp Generator – One Instant, Every Reader's Clock

Announcing a raid, a stream, a community call or the close of a giveaway in a server whose members are scattered across a dozen countries is a small nightmare. Write “20:00 CET” and half the channel does arithmetic in their head; write “8pm my time” and nobody can. Discord solves this with a piece of markdown that the client renders specially: a Discord timestamp, written as <t:UNIX_SECONDS:STYLE>. Every reader sees the same instant painted in their own timezone and their own locale. There is no way to produce that token from inside the Discord client, which is what this Discord timestamp generator is for.

What the token actually contains

Only two things: a whole number of seconds since 1 January 1970 UTC, and an optional single letter naming the style. The number is an instant, not a time-of-day — it carries no timezone at all, which is precisely why it can be rendered differently for everybody without ever being ambiguous. The seconds are whole seconds, obtained with Math.floor of the millisecond value rather than by truncation, so the conversion stays correct on the negative side of the epoch.

The seven styles

StyleNameShape
tShort time16:20
TLong time16:20:30
dShort date20/04/2021
DLong date20 April 2021
fShort date/time20 April 2021 16:20
FLong date/timeTuesday, 20 April 2021 16:20
RRelative2 months ago / in 3 hours

Those shapes are illustrative, not a contract — the wording and ordering come from each reader's locale. Two rules matter more than the shapes. First, the style letter is case-sensitive: t and T are different styles, and r is not a style at all. Anything outside the seven letters makes Discord print the token as literal text instead of a timestamp. Second, omitting the style is legal. A bare <t:1618946400> is rendered as if it carried f, which is why this tool emits it as a genuine eighth output row rather than burying it in a footnote.

Turning a wall-clock time into an instant

The hard part of this tool is not the token, it is the sentence “8pm on the 29th, Paris time”. JavaScript cannot parse a wall-clock time in a named zone directly, so the conversion is done explicitly: read the entered fields as though they were UTC, ask the zone for its offset at that guess, subtract it, then ask the zone for its offset at the result and correct once more if the first guess landed on the wrong side of a daylight-saving transition. Two passes converge for every real-world zone.

That iteration also exposes the two cases that quietly ruin event announcements. On the night clocks go forward, an hour of wall-clock time does not exist — 02:30 is skipped entirely — and this tool says so, offering the instant immediately after the change rather than silently inventing one. On the night clocks go back, an hour happens twice, so two different instants match the same wall clock. Both are shown, labelled with their UTC offsets, and you choose.

Seconds, not milliseconds
The most common mistake with these tokens is pasting a milliseconds value where seconds belong. 1618946400000 read as seconds lands somewhere around the year 54,000. The Unix mode here guesses the unit from the magnitude, tells you which one it picked, shows the resulting date immediately, and lets you override the guess.

Reading a token back

Paste an existing <t:1618946400:F> and the tool returns the instant plus every other style for the same moment. Parsing is strict and matches the whole string after trimming, with one concession: a surrounding pair of backticks is peeled off first, because people copy tokens out of code formatting. A missing <t:, a non-integer, a two-character style or an unknown letter each produce a message naming the specific fault instead of a vague refusal.

Edge cases worth knowing

Dates before 1970 produce negative seconds. The tool emits them, but flags plainly that client handling of negative timestamps is inconsistent and was not verified here. Values past 2147483647 — 19 January 2038, where a signed 32-bit counter runs out — carry a similar caution, because some clients are reported to truncate there. Values outside JavaScript's representable date range are refused outright, and empty or partial fields disable the output rather than rendering <t:NaN:f>.

Everything runs in your browser

There is no network request of any kind, no API key and no bot. The whole job is arithmetic plus the browser's built-in Intl formatters, which is also the honest limit of the previews: they are produced by your browser's locale data as an approximation of Discord's renderer, not a byte-exact reproduction of it. The shape will match; the exact separators may not. Copy buttons always copy the token itself, never the preview text.

Frequently Asked Questions

Is the Discord Timestamp Generator free?

Yes, Discord Timestamp Generator is totally free :)

Can I use the Discord Timestamp Generator offline?

Yes, you can install the webapp as PWA.

Is it safe to use Discord Timestamp Generator?

Yes, any data related to Discord Timestamp Generator only stored in your browser (if storage required). You can simply clear browser cache to clear all the stored data. We do not store any data on server.

How does the Discord timestamp generator work?

You type a date, a time and the timezone that wall-clock time belongs to. Your browser turns that into a single instant expressed as Unix seconds, and the tool wraps it as <t:SECONDS:STYLE> for each of Discord's seven styles plus the styleless form. Everything happens on this page — nothing is sent anywhere, and no Discord account or bot is involved.

Why does everyone see a different time?

That is the entire point of the token. A Discord timestamp stores one instant as a number of seconds since 1 January 1970 UTC, and each reader's own client renders that number in their timezone and their locale. You post one token and someone in Tokyo, Berlin and Los Angeles each read the time on their own clock, with no conversion in their head and no ambiguity about which one you meant.

What is the difference between the seven styles?

Lowercase t is a short time and uppercase T adds seconds. Lowercase d is a short numeric date and uppercase D spells the month out. Lowercase f combines a long date with a short time and uppercase F prepends the weekday. R is the relative style, which reads as 'in 3 hours' or '2 months ago' and updates itself as time passes. The letters are case-sensitive, and omitting the style altogether is legal — Discord then treats the token as if it were f.

How exact are the previews?

The previews are generated by your browser's built-in Intl formatter, so they show the correct instant and the correct shape, but the exact wording, ordering and separators come from your own locale rather than from Discord's renderer. Treat them as a close approximation for judging which style reads well, not as a byte-exact reproduction of what will appear in the chat window.

Why does it ask me to choose between two times?

Because the wall-clock time you typed happens twice that night. When clocks go back, the hour before the change repeats, so 01:30 exists as two separate instants an hour apart. The tool detects that and shows both with their UTC offsets so you can pick the one you meant. The reverse case also exists: on the night clocks go forward an hour never happens at all, and the tool says so rather than silently picking a time you did not ask for.

Can I read an existing token back?

Yes — paste a token into the decode mode and the tool returns the instant it points at, rendered in whichever zone you choose, together with every other style for the same moment. Parsing is deliberately strict and matches the whole string, so a mistyped style letter or a milliseconds value pasted in place of seconds is reported with the specific fault named rather than quietly accepted.