Developer Utilities2026-06-06

Discord Timestamps: Generate Dynamic Timestamps (Format Cheat Sheet)

Discord timestamps render in every reader's own timezone. Here's the <t:UNIX:F> syntax, all seven format codes, and how to generate them in seconds.

discordunix-timestampepochtimestampdiscord-markdown

Discord Timestamps: Generate Dynamic Timestamps (Format Cheat Sheet)

Discord has a feature most users never discover: you can drop a timestamp into any message that automatically renders in each reader's own timezone. Schedule an event for "8 PM" and someone in Tokyo sees their local equivalent — no "what timezone?" replies, no manual conversion.

The catch is the syntax. Discord timestamps use a raw Unix epoch number wrapped in a special markdown tag, and you have to supply that number yourself. This guide covers the exact format, all seven style codes, and the fastest way to generate one.

The Syntax

A Discord timestamp looks like this:

<t:1749243600:F>

Broken down:

<t:1749225600:F>
   │          │
   │          └─ format style (optional, defaults to f)
   └─ Unix timestamp in SECONDS (not milliseconds)
  • <t: and > are the literal delimiters.
  • The number is a Unix timestamp in seconds — the count of seconds since January 1, 1970 UTC.
  • The letter after the colon is the format style. Omit it (and the colon) to get the default short date/time.

Type that into any Discord message and it renders as a human-readable, timezone-aware date for whoever reads it.

The Format Style Codes

There are seven style codes. Same timestamp, different display:

Code Style Example output
t Short time 8:00 PM
T Long time 8:00:00 PM
d Short date 06/06/2026
D Long date June 6, 2026
f Short date/time (default) June 6, 2026 8:00 PM
F Long date/time Saturday, June 6, 2026 8:00 PM
R Relative in 3 hours / 2 days ago

The R (relative) style is the most useful one — it shows "in 2 hours" or "5 days ago" and updates live as time passes, which is perfect for event countdowns and "last seen" style messages.

How to Generate One

The only hard part is getting the Unix timestamp in seconds. A few ways:

Option 1 — Use a converter. Pick your date and time in the Unix Timestamp Converter, copy the seconds value, and drop it into the <t:...> tag. This is the fastest and avoids the most common mistakes (milliseconds vs seconds, wrong timezone).

Option 2 — JavaScript. In a browser console or Node:

// For a specific date/time in your local timezone
Math.floor(new Date("2026-06-06T20:00:00").getTime() / 1000)
// → 1749243600

// For "right now"
Math.floor(Date.now() / 1000)

Note the / 1000 — JavaScript works in milliseconds, but Discord needs seconds. Forgetting this is the #1 mistake (your timestamp lands in the year 57,000).

Option 3 — Python.

import datetime
dt = datetime.datetime(2026, 6, 6, 20, 0, 0)
int(dt.timestamp())
# → 1749243600

Worked Example: Scheduling an Event

You're announcing a community game night for June 6, 2026 at 8:00 PM Eastern. Convert that to a Unix timestamp (1749258000 for 8 PM EDT), then post:

🎮 Game night starts <t:1749258000:F> — that's <t:1749258000:R>!

Every member sees the absolute time in their own timezone and a live relative countdown:

🎮 Game night starts Saturday, June 6, 2026 8:00 PM — that's in 5 hours!

A user in London sees "1:00 AM" for the long form; a user in Los Angeles sees "5:00 PM". You never have to write "EDT" or field "what time is that for me?" again.

Common Mistakes

Using milliseconds instead of seconds. Date.now() and getTime() return milliseconds. Discord expects seconds. If your timestamp shows a date thousands of years in the future, divide by 1000.

Pasting a formatted date string. <t:June 6 2026:F> does nothing — the value must be a raw integer Unix timestamp.

Forgetting the timezone of your source. When you build the timestamp from a local datetime, make sure you're constructing it in the timezone you mean. The safest path is to compute the UTC epoch explicitly, or use the Unix Timestamp Converter, which shows the value in both UTC and your local zone before you copy it.

Expecting it to work in usernames or channel names. Timestamp markdown only renders inside messages (and embeds) — not in nicknames, channel names, or topics.

Quick Reference

  • Syntax: <t:UNIX_SECONDS:STYLE> — e.g. <t:1749243600:R>.
  • The number is seconds, not milliseconds. Divide JS/Date.now() values by 1000.
  • Styles: t T d D f F R — use R for live relative countdowns.
  • Generate the number with the Unix Timestamp Converter to avoid timezone and millisecond errors.
  • Timestamps render only inside messages and embeds, and always in each reader's local timezone.