JPG to BMP Converter

Drop your JPGs, choose a bit depth, and read the exact byte size of the bitmap before you write it. Conversion runs in the tab, nothing uploads.

Drop JPGs here or tap to choose

.jpg and .jpeg only. Add as many as your tab holds.

A 2 MB JPG photo lands as a 35 MB BMP. Nothing broke. BMP stores every pixel as raw bytes with no compression pass at all, so the output size follows straight from width, height, and bit depth. The queue above prints that number before you convert, which beats finding out after a folder of holiday photos fills a USB stick.

The size of a BMP is arithmetic, not a guess

JPEG size depends on image content. Bitmap size does not. Each row of pixels gets padded out to a multiple of four bytes, then every row is written end to end after a 54 byte header.

row bytes = ceil(width x bytes-per-pixel / 4) x 4
file size = header + (row bytes x height)

A 4000 x 3000 photo at 24-bit works out to 12000 bytes per row and 36,000,054 bytes on disk. Shoot the same scene at a higher JPEG quality and the BMP stays exactly that size, because the format has no quality dial to turn.

Three bit depths, three different files

The dropdown above changes both the byte layout and the size total. Pick by what reads the file, not by which number looks bigger.

DepthBytes per pixelWritten for
24-bit BGR3, rows padded to 4The default almost every reader accepts
32-bit BGRA4, no padding neededDirectX textures and tools wanting word-aligned rows
8-bit grayscale1, plus a 1024 byte paletteScans, OCR input, embedded displays

The alpha byte in the 32-bit output is set to fully opaque on every pixel, since JPEG carries no transparency to begin with. You are paying a third more disk space for row alignment, not for a real alpha channel. The grayscale mode averages channels with the luma weights (77, 150, 29) and writes a matching 256 entry palette, so a color photo drops to roughly a third of its 24-bit size and loses hue permanently.

Bottom-up versus top-down rows

Original Windows bitmaps store the bottom row of the image first and record a positive height in the header. The top-down variant writes rows in reading order and records a negative height instead. Both are legal. Both produce byte-identical file sizes.

Limitation

Converting to BMP recovers nothing. JPEG discarded detail when the photo was first saved, and blocking artifacts around sharp edges survive the trip into the bitmap at full fidelity. What you get is a lossless copy of an already lossy image, sitting in a much larger file. If the goal is archiving without further loss, JPG to PNG reaches the same fidelity at a fraction of the size.

Where a raw bitmap still earns its place

Running a batch

  1. Drop the JPGs in. Each row shows its pixel dimensions next to the size the bitmap will take.
  2. Set bit depth. Watch the growth figure move before committing to anything.
  3. Leave row order on bottom-up unless the target software asked for otherwise.
  4. Write the files, then download each card. Names carry over with the extension swapped.

Every file is read, drawn to a canvas, and encoded by JavaScript inside this page. No request carries your photo anywhere, which also means the browser tab holds the whole uncompressed buffer in memory. Twenty phone photos at 24-bit runs near a gigabyte of allocation. Split large folders into smaller runs when the tab starts crawling.

What this page will not do

No resizing, no cropping, no RLE-compressed BMP variant, and no 16-bit or 1-bit output. Failed decodes are reported per file rather than silently skipped. Animated or progressive sources outside the JPEG family are rejected at the drop zone instead of half-converted.

Nearby conversions

Going the other direction is BMP to JPG. Transparent sources belong on PNG to BMP, which keeps alpha in view before flattening. Frame-by-frame work starts at GIF to BMP, and a heavy source folder deserves a pass through the image compressor first.

Encoder rewritten and tested August 2026 against 24-bit, 32-bit, and 8-bit output in Chrome, Firefox, and Safari. Headers follow BITMAPINFOHEADER at 40 bytes.

JPG to BMP questions

Answers about the byte layout this page writes and the sizes it produces.

Why is my BMP twenty times larger than the JPG?

BMP applies no compression. Every pixel occupies its own bytes, so a 12 megapixel photo needs about 36 MB at 24-bit no matter what the scene looks like. JPEG reached 2 MB by throwing detail away. Removing the compression does not remove the pixels.

Does converting to BMP improve image quality?

No. The JPEG artifacts already baked into the source are copied across byte for byte. BMP prevents further loss from that point forward, which matters only if the file faces repeated re-encoding.

Which bit depth should I choose?

Start at 24-bit. Move to 32-bit when the receiving software wants four byte aligned rows, such as a texture importer. Choose 8-bit grayscale when color is irrelevant and size matters, for example scanned documents heading into OCR.

My BMP opens upside down in another program. What happened?

That program is reading row order the opposite way. Switch the row order dropdown to the other setting and write the file again. Bottom-up with a positive header height is the classic Windows layout and works in most readers.

Is there a file size limit?

No hard cap in the code, but the browser holds the full uncompressed buffer in memory. Very large panoramas past roughly 100 megapixels hit allocation limits and report a memory failure on that card instead of downloading.

Do my photos get uploaded anywhere?

No. File reading, canvas drawing, and BMP encoding all run in your browser. Closing the tab clears everything, and no network request carries the image data.