Skip to content

Outlook/Exchange message subheader magic bytes (.msg)

.msg file signature: D0 CF 11 E0 A1 B1 1A E1 | application/vnd.ms-outlook

Category: Email & PIM

The Outlook/Exchange message subheader is a Microsoft compound document format used within Outlook message files and other OLE-based containers. It is primarily used by Microsoft Outlook and related Exchange tools to store email messages, attachments, and metadata in a structured binary form. As a legacy Microsoft format, it may appear in older documents and mail archives, and files should still be treated cautiously when received from untrusted sources.

Safe

Magic Bytes

Offset 0
D0 CF 11 E0 A1 B1 1A E1

Sources: Wikipedia, Gary Kessler

All Known Signatures

3 signature variants are documented for .msg files across multiple sources.

Hex Signature Offset Sources
D0 CF 11 E0 A1 B1 1A E1 0 Wikipedia, Gary Kessler
52 00 6F 00 6F 00 74 00 20 00 45 00 6E 00 74 00 72 00 79 00 512 Gary Kessler
FD FF FF FF 04 512 Gary Kessler

Validation Code

How to validate .msg files in Python

Python
def is_msg(file_path: str) -> bool:
    """Check if file is a valid MSG by magic bytes."""
    signature = bytes([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1])
    with open(file_path, "rb") as f:
        return f.read(8) == signature

How to validate .msg files in Node.js

Node.js
function isMSG(buffer: Buffer): boolean {
  const signature = Buffer.from([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1]);
  return buffer.subarray(0, 8).equals(signature);
}

How to validate .msg files in Go

Go
func IsMSG(data []byte) bool {
    signature := []byte{0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1}
    if len(data) < 8 {
        return false
    }
    return bytes.Equal(data[:8], signature)
}

API Endpoint

GET /api/v1/msg
curl https://filesignature.org/api/v1/msg

See the full API documentation for all endpoints and parameters.

Related Formats

Frequently Asked Questions

What is a .msg file?

A .msg file is an Outlook/Exchange message subheader file. The Outlook/Exchange message subheader is a Microsoft compound document format used within Outlook message files and other OLE-based containers. It is primarily used by Microsoft Outlook and related Exchange tools to store email messages, attachments, and metadata in a structured binary form. As a legacy Microsoft format, it may appear in older documents and mail archives, and files should still be treated cautiously when received from untrusted sources.

What are the magic bytes for .msg files?

The magic bytes for Outlook/Exchange message subheader (.msg) files are D0 CF 11 E0 A1 B1 1A E1 at byte offset 0. These bytes identify the file format more reliably than the extension alone.

How do I validate a .msg file?

To validate a .msg file, read the first bytes of the file and compare them against the known magic bytes (D0 CF 11 E0 A1 B1 1A E1) at offset 0. This is more reliable than checking the file extension alone, as extensions can be renamed.

What is the MIME type for .msg files?

The primary MIME type for .msg files is application/vnd.ms-outlook.

Is it safe to open .msg files?

Outlook/Exchange message subheader (.msg) files are generally safe to open. They are classified as low risk because they primarily contain data rather than executable code. However, always ensure files come from a trusted source.