Format Atlas

Compare

BSON vs MessagePack

BSON and MessagePack can both represent binary document-like data, but BSON is a typed document representation associated with MongoDB while MessagePack is a general-purpose object serialization format.

Which format should you choose?

Use BSON for MongoDB documents and BSON-specific values such as ObjectId and dates. Consider MessagePack for compact object exchange outside MongoDB, and agree on extension types and receiver support.

Good fit for BSON

Serializing MongoDB documents · Exchanging documents between BSON-aware tools

  • Preserving types such as dates and binary values
  • Working with drivers and tools that read and write BSON

Good fit for MessagePack

Binary serialization of JSON-like data · Structured data exchange between compatible applications

  • Encoding JSON-style arrays, maps, and basic values in binary
  • Exchanging extension values and timestamps between compatible libraries

Basic information

FieldBSONMessagePack
Extension.bson.msgpack, .mpk
MIME typeapplication/bsonapplication/octet-stream
Common usesSerializing MongoDB documents · Exchanging documents between BSON-aware toolsBinary serialization of JSON-like data · Structured data exchange between compatible applications
How to openRead it with mongorestore or a BSON-aware tool or library. To inspect its contents, convert BSON to Extended JSON or another readable representation. Do not edit the binary file in a text editor.Read it with a MessagePack-aware library or decoder. For inspection, use diagnostic output or a JSON-like view, and check how binary values and extensions are displayed.
Export or convertWhen converting to JSON, dates, ObjectId, and binary values may need Extended JSON notation or application-specific representations because standard JSON has no matching types. If you need a round trip, choose a method that preserves type information and test it with real data.When converting to JSON, binary values and extensions may need arrays, strings, or custom wrappers because standard JSON has no direct equivalents. For round trips, test actual values, numeric ranges, timestamps, map keys, and extension types.

Choose by use case

Preserving types such as dates and binary values

Serializing MongoDB documents · Exchanging documents between BSON-aware tools

BSON

Working with drivers and tools that read and write BSON

Serializing MongoDB documents · Exchanging documents between BSON-aware tools

BSON

Encoding JSON-style arrays, maps, and basic values in binary

Binary serialization of JSON-like data · Structured data exchange between compatible applications

MessagePack

Exchanging extension values and timestamps between compatible libraries

Binary serialization of JSON-like data · Structured data exchange between compatible applications

MessagePack

Key point 1

BSON defines length-prefixed documents and arrays with explicit types such as dates, ObjectId, and Decimal128. MessagePack provides general maps, arrays, numbers, strings, binary values, and application-defined extensions.

More on the differences

Key point 2

BSON fits MongoDB document models and related tools; MessagePack is designed for general serialization without requiring a particular database.

More on the differences

More on the differences

Choose BSON when MongoDB-compatible document types matter; choose MessagePack for a database-independent binary object protocol. Before conversion, map dates, integer widths, decimals, ObjectId, and extension values, then test round trips.

  • Both use binary encodings, but their structures and type systems differ; neither can be read directly as the other.
  • BSON has specific document-related types and conventions. MessagePack extension types require applications to define the meaning of their type codes.
  • Conversion may alter dates, numeric ranges, decimals, or identifier semantics. Document mappings and validate values with the receiving implementation.

Frequently asked questions

Can I rename a BSON file to MessagePack?

No. Changing an extension does not transcode the binary structure or its types; use a decoder and serializer with explicit field mappings.

Learn more

References and specifications