OLE Property Set

OLE Property Set is a Microsoft serialization and metadata format. It does not typically appear in a file by itself, but is used in some file formats, especially formats based on Microsoft Compound File format.

Disambiguation
OLE Property Set Storage is a particular kind of Microsoft Compound File that contains Property Sets. OLE Structured Storage apparently means something similar, or it might refer to the related APIs and ecosystem.

The data structure that is the main topic of this article (the one that begins with a "ByteOrder" field) may be more properly called a Property Set Stream. This structure usually contains exactly one set of properties, but for historical reasons, the "DocSummaryInformation" FMTID (and only that FMTID) is allowed to contain two sets of properties.

Format details
Each property is identified by a coded integer, but (with a few exceptions) the codes are not unique. Each property set has an "FMTID" field in the form of a GUID, which must be taken into account to make sense or the properties. Some FMTIDs and their associated properties are defined in the main specification, but for most you must look elsewhere. Sometimes there is a "Dictionary" segment that reveals the names of the properties.

Though the format implies that big-endian byte order could be possible, the modern specification only allows little-endian byte order.

Identification
A Property Set stream usually begins with bytes.

This field is named "ByteOrder", but be careful. While it resembles a UTF-16 Byte Order Mark, it works in the exact opposite way.

Related formats

 * In a Microsoft Compound File, some streams contain an OLE Property Set stream.
 * In a JPEG file, some FPXR segments contain an OLE Property Set stream.
 * TIFF tag 37680 contains an embedded OLE Property Set Storage document.
 * OLE Automation Date

Specifications

 * &#x5b;MS-OLEPS&#x5d;: Object Linking and Embedding (OLE) Property Set Data Structures
 * Microsoft Docs: Predefined Property Set Format Identifiers