Skip to content

An Object Linking and Embedding (.xls)

.xls file signature | application/vnd.ms-excel

An Object Linking and Embedding (OLE) Compound File is a structured storage format developed by Microsoft for organizing data in a single binary container. It was used primarily by Microsoft Excel 97-2003 for spreadsheets, and also by other Office applications such as Word and PowerPoint. The format is legacy and has limited documentation; files should be treated cautiously because they can contain embedded objects, macros, or malformed content.

Safe

Magic Bytes

Offset 0
D0 CF 11 E0 A1 B1 1A E1

Sources: Apache Tika, Wikipedia, Gary Kessler

All Known Signatures

9 signature variants are documented for .xls files across multiple sources.

Hex Signature Offset Sources
D0 CF 11 E0 A1 B1 1A E1 0 Apache Tika, Wikipedia, Gary Kessler
4D 69 63 72 6F 73 6F 66 74 20 45 78 63 65 6C 20 35 2E 30 20 57 6F 72 6B 73 68 65 65 74 2080 Apache Tika
46 6F 67 6C 69 6F 20 64 69 20 6C 61 76 6F 72 6F 20 4D 69 63 72 6F 73 6F 66 74 20 45 78 63 65 2080 Apache Tika
42 69 66 66 35 2114 Apache Tika
42 69 66 66 35 2121 Apache Tika
09 08 10 00 00 06 05 00 512 Gary Kessler
FD FF FF FF 00 512 Gary Kessler
FD FF FF FF 02 512 Gary Kessler
FD FF FF FF 20 00 00 00 512 Gary Kessler

Extension

.xls

MIME Type

application/vnd.ms-excel

Byte Offset

0

Risk Level

Safe

Validation Code

How to validate .xls files in Python

Python
def is_xls(file_path: str) -> bool:
    """Check if file is a valid XLS 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 .xls files in Node.js

Node.js
function isXLS(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 .xls files in Go

Go
func IsXLS(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/xls
curl https://filesignature.org/api/v1/xls

See the full API documentation for all endpoints and parameters.

Related Formats

Frequently Asked Questions

What is a .xls file?

A .xls file is a An Object Linking and Embedding file. An Object Linking and Embedding (OLE) Compound File is a structured storage format developed by Microsoft for organizing data in a single binary container. It was used primarily by Microsoft Excel 97-2003 for spreadsheets, and also by other Office applications such as Word and PowerPoint. The format is legacy and has limited documentation; files should be treated cautiously because they can contain embedded objects, macros, or malformed content.

What are the magic bytes for .xls files?

The magic bytes for An Object Linking and Embedding files are D0 CF 11 E0 A1 B1 1A E1 at byte offset 0. These bytes uniquely identify the file format regardless of the file extension.

How do I validate a .xls file?

To validate a .xls 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 .xls files?

The primary MIME type for .xls files is application/vnd.ms-excel.

Is it safe to open .xls files?

An Object Linking and Embedding (.xls) 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.