Home › Developer Tools › MongoDB ObjectId to Timestamp

MongoDB ObjectId to Timestamp

Every MongoDB ObjectId starts with the second it was created. Paste one or many ObjectIds to see their creation dates in UTC and local time, or pick a date to get the matching ObjectId bounds for fast _id range queries.

Last updated:

ObjectId to date

Date to ObjectId

Advertisement
Advertisement

How to use the MongoDB ObjectId to Timestamp

  1. Paste an ObjectId into the decoder, with or without the ObjectId("…") wrapper.
  2. Read the creation time in UTC, your local time zone and as a Unix timestamp, plus the counter and random parts.
  3. Decode many at once by pasting one ObjectId per line; the tool lists each with its date and lets you download a CSV.
  4. Go the other way: choose a date and time (local or UTC) to get the smallest ObjectId for that second.
  5. Build a range query by adding an end date, then copy the generated find() query into mongosh or your driver.

ObjectId structure

A MongoDB ObjectId is 12 bytes, shown as 24 hexadecimal characters. Example: 507f1f77bcf86cd799439011.

BytesHex charsFieldIn the example
0-31-8Timestamp: seconds since the Unix epoch, big-endian507f1f77 = 1350508407 = 2012-10-17 21:13:27 UTC
4-89-18Random value, unique per machine and process (older drivers: 3-byte machine id + 2-byte process id)bcf86cd799
9-1119-24Counter, starting at a random value and incremented for each new ObjectId439011 = 4427793

Getting the timestamp in code

EnvironmentCode
mongoshObjectId("507f1f77bcf86cd799439011").getTimestamp()
Aggregation{ $toDate: "$_id" } or { $convert: { input: "$_id", to: "date" } }
JavaScriptnew Date(parseInt(id.slice(0, 8), 16) * 1000)
Python (bson)ObjectId(id).generation_time
Python (plain)datetime.fromtimestamp(int(id[:8], 16), timezone.utc)
Javanew ObjectId(id).getDate()

Querying by date without a createdAt field

Because the timestamp is the most significant part of the value, ObjectIds compare in time order. An ObjectId made of a timestamp followed by sixteen zeros is the smallest possible id for that second, so {_id: {$gte: ObjectId(startHex + "0000000000000000"), $lt: ObjectId(endHex + "0000000000000000")}} returns every document whose id was created in that interval, using the default _id index. Remember that the boundary is in UTC seconds; if you pick a local time above, the tool converts it to UTC before building the id.

Frequently asked questions

How do I get the timestamp from a MongoDB ObjectId?

Take the first 8 hex characters and convert them from hexadecimal to decimal: that is the creation time in seconds since 1 January 1970 UTC. For 507f1f77bcf86cd799439011, 507f1f77 = 1350508407, which is 17 October 2012, 21:13:27 UTC. In mongosh you can call ObjectId("…").getTimestamp().

What is inside a MongoDB ObjectId?

An ObjectId is 12 bytes: a 4-byte big-endian timestamp in seconds, a 5-byte random value generated once per process, and a 3-byte counter that starts at a random value and increments. Drivers before MongoDB 3.4 used a 3-byte machine identifier plus a 2-byte process id instead of the 5-byte random value.

How do I query MongoDB documents by creation date using _id?

Create an ObjectId whose timestamp is your start date and whose other 16 hex digits are zeros, then query {_id: {$gte: ObjectId(start), $lt: ObjectId(end)}}. Because _id is always indexed, this is fast even without a separate createdAt field. The generator on this page writes the query for you.

Is the ObjectId timestamp accurate?

It has one-second precision and comes from the clock of the machine that created the ObjectId, which is usually the application server rather than the database. ObjectIds can also be supplied by clients, so treat the time as when the id was generated, not proof of when a document was inserted.

Are ObjectIds sortable by time?

Roughly. Sorting by _id orders documents by creation second, but ObjectIds created within the same second on different machines are ordered by their random value, not by exact creation order.

When will ObjectId timestamps run out?

The 4-byte unsigned timestamp can represent dates up to 7 February 2106, 06:28:15 UTC. MongoDB treats the field as unsigned, so there is no 2038 problem.

Are all the tools on FreeToolCabin tested for quality and accuracy?

Yes! Every tool on our site undergoes automated Q/A testing in real browser environments to ensure high precision, correct output, and zero errors. If you happen to spot a bug or have a suggestion, please contact us at [email protected] and our team will review it right away.

Related tools

Unix Timestamp ConverterConvert epoch timestamps to dates and back.UUID Decoder & ValidatorDecode any UUID: version, variant, v1/v6/v7 timestamp and MAC node, plus bulk validation.ULID GeneratorGenerate sortable ULIDs and UUID v7 in bulk, monotonic option, and decode their timestamps.Nano ID GeneratorGenerate secure Nano IDs with custom alphabet, length and count, plus a collision calculator.Snowflake ID to TimestampDecode Discord, X/Twitter and custom snowflake IDs into creation date, worker ID and sequence.Password GeneratorCreate strong passwords and passphrases.Hash GeneratorGenerate MD5, SHA-1, SHA-256 and SHA-512 hashes of text or files.MD5 Hash GeneratorGenerate MD5 hashes of text, lines or files and verify checksums.SHA-256 Hash GeneratorSHA-256 and HMAC-SHA256 hashes of text, lines or files, in hex or Base64.Base64 Encoder DecoderEncode or decode Base64 text and files, and make data URIs.URL Encoder DecoderPercent-encode or decode URLs, query strings and form data.HTML Entity Encoder / DecoderEscape and unescape HTML entities, named or numeric.Bcrypt Hash Generator & CheckerCreate bcrypt password hashes and check a password against a hash.Binary TranslatorConvert text to binary, hex, octal and back.HMAC GeneratorGenerate and verify HMAC signatures with SHA-256, SHA-512, SHA-1 or MD5.CRC32 Checksum CalculatorCalculate CRC-32, CRC-32C, CRC-16 and Adler-32 checksums of text or large files.JWT DecoderDecode JSON Web Tokens, read the claims and expiry, and verify HS256 signatures.JWT GeneratorCreate and sign HS256, HS384 or HS512 JSON Web Tokens in your browser and verify them.Password Strength CheckerSee how strong a password really is, how long it takes to crack and how to improve it.Caesar CipherEncode and decode Caesar shift ciphers and crack unknown shifts with a ranked brute force.Vigenère CipherEncrypt and decrypt Vigenère and Autokey ciphers, and crack unknown keys with frequency analysis.Atbash CipherEncode and decode Atbash ciphers (A↔Z, B↔Y) in Latin or Hebrew, with a live letter mapping table.ASCII TableFull ASCII code chart 0–255 in decimal, hex, octal, binary and HTML, with search and copy.Unicode Character LookupFind Unicode characters by name or code point and copy them with UTF-8, HTML and code escapes.Punycode ConverterConvert international domain names, emails and URLs between Unicode and xn-- Punycode, in bulk.JSON Escape / UnescapeEscape text for a JSON string, unescape \n and \" back to text, or stringify a whole object.Binary to HexConvert binary to hex instantly with steps and signed mode.Hex to BinaryConvert hex to binary instantly with steps and signed mode.Binary CalculatorAdd, subtract, multiply, divide, AND, OR, XOR and shift binary numbers with decimal values.Hex CalculatorHexadecimal + − × ÷ and AND, OR, XOR, NOT, shifts with decimal and binary equivalents.Base32 Encoder / DecoderEncode and decode Base32 (RFC 4648), Base32hex, Crockford and z-base-32 from text, hex or files.Base58 Encoder / DecoderEncode and decode Base58 and Base58Check (Bitcoin alphabet) from text or hex, with checksum verification.Unicode Escape / UnescapeConvert text to \uXXXX, \u{...}, \x, &#...; or CSS escapes and decode them back.File Hash CheckerGet MD5, SHA-1, SHA-256 and SHA-512 checksums of files and verify them against a hash.TOTP GeneratorGenerate 2FA one-time codes from a secret key, create otpauth QR codes and verify codes.RSA Key GeneratorGenerate 2048, 3072 or 4096-bit RSA key pairs as PEM, PKCS#1, JWK or OpenSSH, locally.SSL Certificate DecoderDecode PEM SSL/X.509 certificates: subject, issuer, expiry, SANs, key and fingerprints.Text Encryption ToolEncrypt and decrypt text with a password using AES-256-GCM, entirely in your browser.SHA-1 Hash GeneratorSHA-1 and HMAC-SHA1 of text or files in hex or Base64, plus Git blob hashes and verify.SHA-512 Hash GeneratorSHA-512 and SHA-384 hashes of text or files in hex or Base64, HMAC and hash verification.SRI Hash GeneratorCreate Subresource Integrity hashes (sha256/384/512) and ready <script> or <link> tags.SSH Key GeneratorGenerate Ed25519 or RSA SSH key pairs in your browser: OpenSSH public key plus private key.String Escape / UnescapeEscape or unescape strings for JavaScript, Java, C#, Python, C, SQL, regex, CSV and shell.UTF-8 Encoder / DecoderConvert text to UTF-8 bytes in hex, decimal, binary, \x or % and decode bytes back to text.Base64 to FileDecode Base64 or a data URI to a downloadable file; detects the real file type and previews it.File Encryption ToolEncrypt and decrypt any file with a password using AES-256-GCM, entirely in your browser.Passphrase GeneratorMake strong, memorable diceware passphrases from a 7,776-word list, with entropy in bits.CSR DecoderDecode a PEM certificate signing request: subject, SANs, key size, signature and CA readiness checks.Enigma Machine SimulatorEncrypt and decrypt with a virtual Enigma I, M3 or M4: rotors, rings, plugboard and lampboard.Hex Opacity CalculatorConvert opacity percent to a 2-digit HEX alpha code and full #RRGGBBAA color, with a 0-100% table.Playfair CipherEncrypt and decrypt Playfair ciphers from a keyword, with the 5x5 key square and every digraph step.Pwned Password CheckerCheck if a password appeared in data breaches; only 5 characters of its SHA-1 hash are sent.RSA Encryption ToolEncrypt text with an RSA public key and decrypt it with the private key using RSA-OAEP in your browser.SAML DecoderDecode SAMLRequest and SAMLResponse messages to readable XML, attributes and validity times.SSL Certificate ConverterConvert SSL certificates and keys between PEM, DER, PFX/P12 and P7B in your browser.Checksum CalculatorCompute 8-bit sum, two's complement LRC, XOR/BCC, NMEA, Fletcher and Internet checksums of bytes.PBKDF2 Hash GeneratorDerive PBKDF2 keys from a password, salt and iteration count with SHA-1, SHA-256 or SHA-512.Protobuf DecoderDecode raw Protocol Buffers hex or Base64 without a schema, or add a .proto for field names.XML Escape / UnescapeEscape & < > " ' for XML text and attributes, unescape entities back, or wrap text in CDATA.Binary Search Tree VisualizerInsert, delete and find in BST, AVL and red-black trees with animated rotations and traversals.Argon2 Hash GeneratorHash passwords with Argon2id, Argon2i or Argon2d and verify them against an encoded hash.Base64 to PDFDecode a Base64 string to a PDF with preview and download, or encode a PDF to Base64.Bitwise CalculatorCalculate AND, OR, XOR, NOT and bit shifts at 8–64 bits with a bit grid and all bases.CSR GeneratorCreate a certificate signing request (CSR) and private key with SANs, RSA or ECDSA, in your browser.PGP Encrypt / DecryptEncrypt, decrypt, sign and verify PGP messages with your armored keys, entirely offline.PGP Key GeneratorGenerate an OpenPGP key pair (Curve25519, NIST ECC or RSA) with passphrase and expiry, offline.Quoted-Printable Encoder / DecoderEncode or decode quoted-printable email text (MIME) with UTF-8 and 76-character soft line breaks.Self-Signed Certificate GeneratorCreate a self-signed SSL certificate and key for localhost or dev servers, as PEM or PFX.
See all 65 Encoders, Hashes & Crypto →