PNG to BMP converter
Convert PNG images to BMP format
A BMP is close to a memory dump with a header on it: no compression, one fixed-size row after another, and the rows stored from the bottom up. Going there from PNG means giving up two things at once - the compression, which is why the file grows so much, and the alpha channel, which the 24-bit bitmap written here has nowhere to store. What you gain is a file that every Windows utility, embedded display library and vintage imaging SDK can read without a decoder. Nothing here needs a browser bitmap encoder, because browsers do not have one.
Key facts about PNG to BMP converter
| Bitmap flavour | 24 bits per pixel, BI_RGB (no compression), a 40-byte BITMAPINFOHEADER after the 14-byte file header - the most widely accepted BMP variant there is. |
|---|---|
| Row order | Bottom-up, as classic Windows bitmaps expect, with channels written in blue-green-red order. |
| Row padding | Each row is padded with zero bytes to a multiple of four, so odd widths cost a little more than the arithmetic suggests. |
| Transparency | Dropped, and not to white: only the RGB channels are copied, so a fully transparent PNG pixel is written as black. |
| Exact size | 54 bytes of header plus the padded rows. A 1920x1080 PNG always becomes a 6,220,854-byte BMP, whatever the picture shows. |
| Size delta | Growth of ten to fifty times is normal - a 300 KB screenshot PNG becoming a 6 MB bitmap is the expected outcome, not a fault. |
| Resolution tag | Both axes are stamped at 2835 pixels per metre, which is 72 dpi - print software will read that, not the PNG's pHYs chunk. |
| Metadata | A BITMAPINFOHEADER has no field for EXIF or a colour profile, so the output is header plus pixels and nothing else. |
| Opens natively in | Windows Paint, Photos and Explorer previews, macOS Preview, GIMP, Photoshop and every browser. Most web upload forms reject the extension. |
What happens to your file
There is no BMP encoder in any browser, so this one is written by the page itself. After your PNG is decoded and drawn, getImageData pulls the raw RGBA array out of the canvas, a DataView fills in the 14-byte file header and the 40-byte info header, and a loop copies pixel rows in reverse order into an ArrayBuffer that becomes a Blob. Every one of those steps is JavaScript executing in this tab - the bytes are built next to you, not fetched from anywhere.
About this tool
- 1
Pick the PNG
Drop one file or a set of up to twenty. Keep an eye on the dimensions: the output size depends only on width and height.
- 2
Decide on a downscale
The resize presets are the only lever on BMP size, since there is no quality slider for an uncompressed format.
- 3
Convert
The bitmap is assembled in memory; large images take a moment because every pixel is written individually.
- 4
Download and check the free space
A batch of high-resolution bitmaps adds up fast - twenty 4K images is well over a gigabyte.
| Input and output | Takes .png only (image/png) and returns .bmp with the image/bmp type; any other extension is refused before decoding. |
|---|---|
| Conversion path | PNG to BMP runs in three steps: an <img> element hands the file to the browser's own PNG decoder; 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 PNG 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 PNG. |
| Batch, caps and naming | Twenty PNG 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 PNG fails before any BMP bytes exist. |
- If the PNG has a transparent background, flatten it onto the colour you want first; otherwise those areas land as solid black in the bitmap.
- Software asking for a bitmap usually wants exact dimensions too - set the size before converting, not after, since scaling a BMP later means another lossless round trip.
- For archiving, PNG is the better uncompressed-quality choice: identical pixels, a fraction of the bytes. Convert to BMP only when a program demands it.
- Devices with small displays often want a specific width; the 200, 480 and 800 px presets cover most e-paper and embedded panels.
- Feeding an older Windows application, test harness or LabVIEW-style toolchain that only reads .bmp.
- Supplying uncompressed frames to an embedded display or a signage panel with a minimal image loader.
- Preparing artwork for machine-vision or OCR software that expects a plain bitmap without a decode step.
Related tools
View allNeed the opposite? Try BMP to PNG
Works well with this4
Other BMP tools12
Updated