Last updated
Key Facts About Instagram Reel IDs
- Reels use the same ID format as regular Instagram posts
- Instagram epoch: January 1, 2011 (Unix: 1293840000 seconds)
- Timestamp extracted by right-shifting the ID by 23 bits
- Reels launched August 5, 2020 — valid Reel IDs decode to dates after this
- Use BigInt in JavaScript to avoid precision loss with large IDs
- Reel IDs are monotonically increasing — larger ID = newer Reel
Paste any Instagram Reel ID to instantly decode its creation timestamp. No API access required.
Examples
Example 1: Basic Reel ID Decoding
Instagram Reel ID: 2950000000000000000
Decoded result:
Created at: 2023-11-20 09:15:42 UTC
Unix timestamp: 1700471742
Post age: ~1 year, 4 months ago
Formula:
INSTAGRAM_EPOCH = 1293840000 (Jan 1, 2011 in seconds)
timestamp_seconds = (reel_id >> 23) + INSTAGRAM_EPOCH
created_at = datetime.fromtimestamp(timestamp_seconds)
Note: Reels launched in August 2020.
Any Reel ID that decodes to a date before August 2020
indicates an invalid ID or a regular post, not a Reel.
Example 2: JavaScript Decoder
const INSTAGRAM_EPOCH = 1293840000; // Jan 1, 2011
function reelIdToDate(reelId) {
const id = BigInt(reelId); // BigInt required for large integers
const timestampSeconds = Number(id >> 23n) + INSTAGRAM_EPOCH;
const createdAt = new Date(timestampSeconds * 1000);
// Validate: Reels launched August 2020
const reelsLaunch = new Date('2020-08-05T00:00:00Z');
if (createdAt < reelsLaunch) {
console.warn('Warning: Date predates Reels launch — may be a regular post ID');
}
return {
createdAt,
iso: createdAt.toISOString(),
unixSeconds: timestampSeconds,
unixMs: timestampSeconds * 1000
};
}
// Usage:
const result = reelIdToDate('2950000000000000000');
console.log(result.iso);
// → "2023-11-20T09:15:42.000Z"
Example 3: Python Decoder
import datetime
INSTAGRAM_EPOCH = 1293840000
REELS_LAUNCH = datetime.datetime(2020, 8, 5, tzinfo=datetime.timezone.utc)
def reel_id_to_date(reel_id: int) -> dict:
timestamp_seconds = (reel_id >> 23) + INSTAGRAM_EPOCH
created_at = datetime.datetime.fromtimestamp(
timestamp_seconds,
tz=datetime.timezone.utc
)
if created_at < REELS_LAUNCH:
print(f"Warning: {created_at} predates Reels launch")
return {
'created_at': created_at,
'timestamp_seconds': timestamp_seconds,
'formatted': created_at.strftime('%Y-%m-%d %H:%M:%S UTC')
}
# Usage:
result = reel_id_to_date(2950000000000000000)
print(result['formatted'])
# → "2023-11-20 09:15:42 UTC"