Convert JPG to BMP Online (Photo to Windows Bitmap)

Decode the JPEG pixels into a BMP with deliberate bit depth, row layout, color, and compatibility choices.

  1. Add a file Choose or drop it here
  2. Pick the format Change it whenever needed
  3. Download the result After conversion completes

JPEG Stores Compressed Samples Before BMP Stores Display Rows

A JPG is not a row-for-row RGB picture waiting behind a different extension. JPEG encodes image components in blocks, usually represents color as YCbCr, and commonly reduces chroma resolution through sampling. JFIF-compatible RGB is normally converted to YCbCr when written; an ICC profile, when present in APP2 markers, describes the resulting RGB interpretation after decoding. EXIF can also carry an orientation instruction. A BMP conversion therefore first decodes the JPEG into correctly oriented pixels, converts the color representation, and then writes a Windows bitmap layout. It cannot recover edge detail that JPEG quantization or chroma subsampling already discarded.

BMP is a raster container designed around a device-independent bitmap, or DIB. Its 14-byte BITMAPFILEHEADER begins with the bytes BM, records the file size, and gives the offset to pixel bits. A DIB header follows and tells a reader the width, height, bit depth, compression, and other rendering facts. A typical 24-bit output has three color bytes per pixel; a typical 32-bit output has four. The result may look similar at native size, yet its storage model has changed completely: compressed JPEG source data has become expanded bitmap rows.


A BMP Header Makes Pixel Order, Padding, and Dimensions Explicit

The file header's bfType must be 0x4D42, bfReserved1 and bfReserved2 are zero, and bfOffBits identifies where the pixel array starts. Microsoft documents that a BITMAPINFO or BITMAPCOREINFO structure immediately follows the file header. For broad Windows-era compatibility, writers commonly use the 40-byte BITMAPINFOHEADER. The image is then normally 24-bit BGR samples with no compression, or 32-bit data with a documented mask/header choice. Header choice matters because BMP is a family of DIB versions, not one universal byte sequence.

Rows are a frequent source of apparently damaged output. In conventional BMP storage each scan line is padded to a four-byte boundary. A 101-pixel-wide 24-bit row contains 303 image bytes but occupies 304 bytes in the file. A reader that ignores that padding begins the next row at the wrong byte and produces diagonal tearing or color noise. Positive-height DIBs traditionally store the bottom row first; a negative height denotes top-down order for supported uncompressed layouts. A converter must write the declared dimensions, row order, pixel stride, and bfOffBits consistently rather than merely add a BMP header to JPEG bytes.


What JPG to BMP Retains, Enlarges, and Drops

  • Retains decoded pixels: the chosen JPEG dimensions and visible decoded image can be preserved without another JPEG generation step.
  • Retains no hidden sharpness: JPEG blocking, ringing, and reduced chroma remain part of the decoded source.
  • Gains simple raster access: many legacy Windows programs can read uncompressed BGR rows directly.
  • Greatly enlarges storage: 24-bit BMP needs roughly width times height times three bytes, plus headers and padded rows.
  • Drops JPEG coding structure: quantization tables, entropy coding, and progressive scans do not become BMP features.
  • May drop metadata: EXIF, camera data, and an ICC profile are not automatically carried into a basic BMP.

This is a useful conversion when a named application, driver, or device specifically requires BMP. It is a poor archival substitute for an original camera JPG, because the BMP may be much larger while losing the original JPEG markers and metadata. Keep the JPG as the source master and treat BMP as a compatibility derivative with recorded dimensions, bit depth, and intended destination.


BMP Support Depends on the DIB Variant Rather Than the Filename

The Library of Congress describes BMP files as a 14-byte file header followed by a DIB header, with versions including BITMAPCOREHEADER, BITMAPINFOHEADER, BITMAPV4HEADER, and BITMAPV5HEADER. Later forms can express more information, including an ICC profile pointer in V5, but a receiver may support only the older 40-byte information header. Color tables are required for indexed depths of 8 bits or fewer; for a photographic JPG, an 8-bit indexed conversion forces palette selection and can visibly posterize gradients. Use 24-bit BGR for the safest photographic exchange unless the recipient gives an exact different requirement.

A 32-bit BMP is not automatically a transparent BMP. Some consumers treat the fourth byte as unused, some expect defined channel masks, and some ignore alpha entirely. JPEG has no ordinary alpha channel, so writing an invented transparent channel adds neither useful transparency nor fidelity. If a system requires 32 bits per pixel, document whether it expects XRGB, BGRA, or a specific bitfield DIB. A V5 profile-aware BMP can be appropriate in a controlled Windows workflow, but sending it to an old program that accepts only BITMAPINFOHEADER may fail before the program reads the picture.


Rotated Photos, Blue-Red Swaps, and Huge Files Have Different Causes

A sideways BMP often means the JPEG's EXIF orientation was displayed by the source viewer but not baked into decoded pixels before export. Normalize orientation first, then write BMP dimensions matching that raster. Red and blue swapped output is a BGR-versus-RGB mistake: ordinary 24-bit Windows BMP rows are conventionally B, G, R, while most decoders expose R, G, B. Tearing or shifted bands point to missing four-byte row padding, a wrong height sign, or a bfOffBits value that skips into the first row.

A BMP that is surprisingly large is usually correct. A 4000 by 3000 24-bit image needs about 36,000,000 pixel bytes before row padding, whereas its JPG source may be only a few megabytes. That size change is expansion, not proof of conversion damage. If colors differ, check whether the source has an ICC profile and whether the destination assumes sRGB; do not attempt to cure it by changing the extension. If the legacy program rejects the file, test a simple uncompressed 24-bit BITMAPINFOHEADER BMP at the original dimensions, then change only one requirement at a time.


JPEG Facts Compared With a 24-Bit Windows BMP

DetailJPG24-bit BMP
Pixel storageLossy coded component blocksExpanded BGR scan lines
Color samplingOften YCbCr with reduced chromaThree full bytes per decoded pixel
Start informationMarkers and segmentsBM file header plus DIB header
Row layoutNot direct display rowsFour-byte aligned rows
OrientationMay use EXIF instructionPositive or negative DIB height
MetadataCan contain EXIF and ICC APP2Basic headers do not carry it automatically

JPG to BMP Questions for a Valid Windows Bitmap

Does BMP make a JPEG photo lossless again?
No. It stores the already decoded JPEG pixels without a further JPEG pass, but cannot restore discarded source detail.

Why is the BMP much bigger?
Its scan lines are generally uncompressed. Calculate about three bytes per pixel for 24-bit output, then add row padding and headers.

Why are red and blue reversed?
The writer likely placed RGB bytes into a conventional BGR BMP row. Decode RGB, then serialize the target order.

Should I choose 24-bit or 32-bit BMP?
Choose the exact depth the receiving program documents. 24-bit uncompressed BMP is usually safer for an opaque photograph; JPEG brings no alpha to preserve.

Can I delete the original JPG?
Keep it. BMP is the delivery copy and may omit EXIF, the original profile markers, and the compact JPEG representation.

A dependable JPG-to-BMP record begins by identifying the JPEG's pixel dimensions, EXIF orientation, color profile status, and whether the image uses a normal three-component decode. Decode once at the original pixel dimensions. Apply orientation before measuring or choosing a DIB height. If the intended destination is a scanner utility, CNC interface, label application, or another fixed legacy import, ask for the exact width, height, color depth, header generation, and maximum file size. Those requirements determine whether the correct output is 24-bit BGR, an indexed palette BMP, or a more specialized bitfield layout. A generic claim that a program accepts BMP is not enough because it may mean only one of those variants.

Profile handling deserves a separate check. A JPEG that carries an embedded ICC profile can decode into RGB values intended for that profile. A basic BITMAPINFOHEADER BMP usually gives the receiver no embedded profile context, so an application may assume its default display space. If color matching matters, convert under a documented source-to-destination profile policy before writing the basic BMP, and retain the original JPG and proof image. BMP V5 can point to ICC information, but that added header complexity only helps when the specific recipient supports it. Do not assume a later header is automatically more compatible.

Before transfer, inspect the first bytes for BM, verify bfOffBits reaches the start of the array after the selected headers or palette, calculate the padded stride, and open the result in the actual consuming program. Compare a native-size crop containing red, blue, fine text, and a smooth gradient. This compact test exposes the usual BGR swap, wrong orientation, padding, and palette defects quickly. Record the exact output options with the delivery copy so the next conversion reproduces the accepted file rather than relying on visual guesswork.