Niš Fortress
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.
Paste a post link
The calculation runs in your browser; nothing is sent to a server.
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.
- 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.
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.
- 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.
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).
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
- X Developer Platform — X IDs (Snowflake)
- Twitter Snowflake — README (41 time bits, 10 machine bits, 12 sequence bits)
- Twitter Snowflake — IdWorker.scala (twepoch = 1288834974657, server clock)
- X API — Create Post (no field for time/ID)
- X API — Edit Posts (every edit = new ID)
- Instagram Engineering — Sharding & IDs at Instagram
- Instagram Help — editing a post (caption, alt text)
- Facebook Help — changing a post’s date (backdating)
- Graph API — page/feed: backdated_time
- Bellingcat — TikTok timestamp
- ExifTool — editing dates inside a file
- sunrise-sunset.org API — Niš, 5 Oct 2026