Skip to content
Zbor Palilula Niš Niš Fortress
Post timestamps

Why posting times cannot be faked

On X and Instagram the moment of posting is not chosen by the user — it is written by the platform’s server into the post’s ID number at the moment the post is created. That number is part of the link, so anyone can compute the time.

Check it yourself

Paste a post link

Examples:

The calculation runs in your browser; nothing is sent to a server.

X (Twitter)

Snowflake: the time is built into the ID

Every post on X gets a 64-bit number (“Snowflake”). The first 41 bits are milliseconds since 4 November 2010, 01:42:54.657 UTC; the rest are a server number and a sequence number. X’s official documentation: IDs are “generated using a system called Snowflake” and encode a “Timestamp — When the object was created”.

In the system’s original code the time comes from System.currentTimeMillis() — the server’s clock, not the phone’s. If a server clock ever moved backwards, the system refuses to issue IDs (“Clock moved backwards. Refusing to generate id”). The posting API has no field that would let a user set the time or the ID.

time (ms) = (ID >> 22) + 1288834974657
  • Edits: a post can be edited for up to 1 hour, but every edit gets a new ID and the edit history is public. We checked: S-01 S-03 S-06 S-08 were never edited.
  • Scheduled posts get their ID only when they go live — the time can only be later, never earlier.
  • Deleting and reposting gives a new, later ID.
Instagram

Same principle, different epoch

Instagram’s engineering blog (“Sharding & IDs at Instagram”) describes the ID as “41 bits for time in milliseconds” + 13 shard bits + 10 sequence bits. The ID is generated in the database at the moment of insertion using clock_timestamp() — the database clock, with epoch 1314220021721 (24 August 2011). The “shortcode” in the link (e.g. DeHwKSjtjEj) is that same ID written in a base64 alphabet.

media ID = base64(shortcode) · time (ms) = (media ID >> 23) + 1314220021721
  • Instagram has no feature to backdate posts.
  • The photo or video of a published post cannot be replaced. The caption, tags, location and alt text can be edited, and since July 2026 the music on posts and since June 2026 the order on the profile grid — none of which changes the ID.
  • The method can be checked on a known post: the “egg” BsOGulcndj- gives 4 January 2019 — exactly as recorded.
Where the limits are

What a posting time proves — and what it does not

  • It proves the content existed on the platform no later than that moment (accurate to about ±1 s).
  • It does not prove when it was filmed, who filmed it, or that it is the first post — a repost (e.g. S-11) only proves the video existed by then.
  • Facebook allows posts to be backdated (Help Center; Graph API backdated_time), and Facebook IDs contain no time. That is why S-15 S-16 S-17 are marked “Unknown” and their times are not used.
  • The date inside a file (EXIF, MP4 “CreateDate”) can be changed with a single ExifTool command — so a server ID is stronger evidence than file metadata.
  • Meta does not officially document the shortcode → ID mapping, but the method is independently confirmed (known posts, and S-03 is a verified screen recording of S-02, posted 7 minutes after it).
Cross-checks

Independent confirmation of the times

  • S-03 (X, verified 19:39:25) is a screen recording of reel S-02 — so the reel existed before 19:39:25, consistent with its computed time of 19:32:02.
  • N1 embedded S-01 in its 21:17 report (M-05); nova.rs embedded S-03 at 21:13 (M-04).
  • A reply cannot have an earlier ID than the post it answers — the server generates it only once the original exists.

Sources