JPG to BMP converter
Convert JPG images to BMP format
Almost nobody chooses a bitmap for its own sake; they convert to it because a program refuses anything else. That program is usually a Windows utility, a test rig, a machine-vision importer or an embedded display driver that wants pixels with no decoding to do. Because a JPEG has no transparency, this direction is unusually clean - there is no alpha channel to lose and nothing turns black or white unexpectedly. The only real consequence is the size: whatever compression the JPEG achieved is completely undone, and the bitmap that results is fixed by resolution alone.
Key facts about JPG to BMP converter
| Output format | A 24-bit BI_RGB bitmap - 14-byte file header, 40-byte information header, no palette, no compression. |
|---|---|
| Byte order in a pixel | Blue, then green, then red, with rows stored from the last one upward as Windows bitmaps have always done. |
| Alignment | Every scanline is rounded up to a four-byte boundary with zero padding, so widths that are not a multiple of four waste a few bytes per row. |
| Transparency | Not applicable in either direction: JPEG has no alpha, and the 24-bit bitmap has no place to put one, so nothing is lost here. |
| Predictable length | A 4000x3000 photo becomes a 36,000,054-byte bitmap whether it was a 900 KB JPEG or a 6 MB one - only the dimensions count. |
| Quality | The JPEG's existing artifacts are copied exactly; the bitmap neither removes them nor adds anything new. |
| Physical size | The header records 2835 pixels per metre on both axes, equivalent to 72 dpi, regardless of what the JPEG claimed. |
| Stripped along the way | Camera make and model, exposure data, GPS position and the ICC profile are all absent - a bitmap header has no room for them. |
| Read by | Windows Paint, Photos and Explorer thumbnails, macOS Preview, GIMP, Photoshop, OpenCV and most industrial imaging SDKs. |
What happens to your file
No browser can encode a bitmap, so this page constructs the file directly. Your JPEG is decoded by the browser, painted onto a canvas, and its pixel array is read back with getImageData; a DataView then writes the two headers and copies the rows bottom-up into an ArrayBuffer, swapping each pixel into blue-green-red order as it goes. That buffer is wrapped in a Blob and handed to a download link. The photo stays in this tab's memory throughout - it is never sent to a server, which is worth knowing when the source is a phone picture with location data in it.
About this tool
- 1
Add your JPG files
Up to twenty per run. HEIC photos from an iPhone are accepted as well and are decoded to JPEG data in the tab first.
- 2
Think about the dimensions
The bitmap's size follows directly from width and height, so use a resize preset if the receiving software has a memory or resolution limit.
- 3
Convert
Assembly is a per-pixel loop in JavaScript; multi-megapixel images take a visible moment and very large ones can take several seconds.
- 4
Download and check capacity
A batch of twenty full-resolution bitmaps easily exceeds half a gigabyte, so make sure the destination has room.
| Input and output | Takes .jpg and .jpeg only (image/jpeg) and returns .bmp with the image/bmp type; any other extension is refused before decoding. |
|---|---|
| Conversion path | JPG to BMP runs in three steps: an <img> element decodes the JPEG, baseline or progressive, in the browser; the pixels land on a 2D canvas in this tab; then getImageData feeds a 24-bit BI_RGB writer that assembles the file in page memory. |
| Browser support | The JPEG side decodes in every browser ever shipped, while writing the BMP needs nothing from the browser, the bytes being assembled in the page. |
| Controls for this pair | No quality slider, BMP not being a lossy target here, so the max-dimension presets from 3840 down to 200 px are the only way to hold the BMP down in size against the JPG. |
| Batch, caps and naming | Twenty JPG files per run at 500 MB each; one result downloads as a single BMP, several as converted-bmp-files.zip, zipped by JSZip 3.10 in page memory. |
| Device ceiling | The canvas caps it: past roughly 16,384 px a side Chromium refuses the bitmap and iPhone Safari gives up sooner, so an oversized JPG fails before any BMP bytes exist. |
- Many applications that ask for a BMP actually want a specific width or height as well - set it with the presets before converting rather than resizing the bitmap afterwards.
- For storage or sharing, the JPG you started with is smaller by an order of magnitude and looks identical; convert to BMP only for the software that demands it.
- Machine-vision and OCR pipelines often prefer a bitmap because there is no decode step and no codec variation between machines.
- If your tool expects a 32-bit bitmap with an alpha byte, this file will not match it - the output is strictly 24-bit.
- Supplying frames to legacy Windows software, a hardware test bench or a measurement application that reads only .bmp.
- Loading an image onto an embedded panel or signage device whose firmware has a minimal bitmap reader.
- Preparing photographs for an image-processing pipeline that wants raw pixels rather than a compressed file.
Related tools
View allNeed the opposite? Try BMP to JPG
Works well with this4
Other BMP tools12
Updated