BMP

Overview
BMP is a family of simple raster graphics image file formats designed to store bitmap digital images independently of a display device. BMP was originally and is primarily used on Microsoft Windows and OS/2 operating systems. The format is sometimes known as Device-Independent Bitmap (DIB), since, when loaded into memory using Windows software, the image is held as a DIB structure.

Identification
No MIME type has been officially registered. Strings found in practice are: image/bmp; image/x-bmp; image/x-ms-bmp

The standard file extension is .bmp. Reportedly, .dib and .rle have occasionally been used.

BMP files start with bytes.

Well-known versions
Unless otherwise indicated, BMP files all use a common 14-byte file header, named BITMAPFILEHEADER. Following that is the "Info header", which begins with a 4-byte integer indicating its size. The Info header size (mostly) reveals the version of BMP that the file uses.

Windows BMP v2

 * Info header size: 12
 * Info header name: BITMAPCOREHEADER or OS21XBITMAPHEADER
 * PRONOM:

Also known as OS/2 BMP 1.0.

Windows BMP v3

 * Info header size: 40
 * Info header name: BITMAPINFOHEADER
 * PRONOM: ,

This is by far the most widely used version of BMP. It was introduced with Windows 3.x. Windows NT extended it to support 16 and 32 bits/pixel.

Windows CE also extended it, for example to allow 2 bits/pixel, but its extensions were not migrated to the BMP v4 and v5 formats.

If the compression type is 3 and the bit depth is 1, or the compression type is 4 and the bit depth is 24, then the file should be processed as an OS/2 2.0 BMP.

Windows BMP v4

 * Info header size: 108
 * Info header name: BITMAPV4HEADER
 * PRONOM:

Windows BMP v5

 * Info header size: 124
 * Info header name: BITMAPV5HEADER
 * PRONOM:

Windows BMP v1

 * PRONOM:

This is the bitmap file format used by Windows 1.0. It's not really a BMP format. It has a 10-byte file header, and is also called "DDB" (Device-Dependent Bitmap).

OS/2 BMP 2.0

 * Info header size: 16–64 (16, 40, 48, and 64 may be most common)
 * Info header name: BITMAPCOREHEADER2 or OS22XBITMAPHEADER
 * PRONOM:

See OS/2 BMP.

BITMAPV2INFOHEADER

 * Info header size: 52
 * Info header name: BITMAPV2INFOHEADER

No details known.

BITMAPV3INFOHEADER

 * Info header size: 56
 * Info header name: BITMAPV3INFOHEADER

No details known.

Specifications

 * BITMAPFILEHEADER
 * BITMAPCOREHEADER
 * BITMAPINFOHEADER
 * BITMAPINFOHEADER (Windows CE 5.0)
 * BITMAPV4HEADER
 * BITMAPV5HEADER

Sample images

 * Example BMP images (all Windows V3 except as indicated)
 * BMP Suite Image List