Skip to main content

PNG to BMP converter

Convert PNG images to BMP format

No watermarkFree & unlimited
All processing happens in your browser. No data is sent to any server.

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

Key facts about PNG to BMP converter
Bitmap flavour24 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 orderBottom-up, as classic Windows bitmaps expect, with channels written in blue-green-red order.
Row paddingEach row is padded with zero bytes to a multiple of four, so odd widths cost a little more than the arithmetic suggests.
TransparencyDropped, and not to white: only the RGB channels are copied, so a fully transparent PNG pixel is written as black.
Exact size54 bytes of header plus the padded rows. A 1920x1080 PNG always becomes a 6,220,854-byte BMP, whatever the picture shows.
Size deltaGrowth 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 tagBoth axes are stamped at 2835 pixels per metre, which is 72 dpi - print software will read that, not the PNG's pHYs chunk.
MetadataA BITMAPINFOHEADER has no field for EXIF or a colour profile, so the output is header plus pixels and nothing else.
Opens natively inWindows 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. 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. 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. 3

    Convert

    The bitmap is assembled in memory; large images take a moment because every pixel is written individually.

  4. 4

    Download and check the free space

    A batch of high-resolution bitmaps adds up fast - twenty 4K images is well over a gigabyte.

Specs & compatibility
Input and outputTakes .png only (image/png) and returns .bmp with the image/bmp type; any other extension is refused before decoding.
Conversion pathPNG 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 supportThe 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 pairNo 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 namingTwenty 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 ceilingThe 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.
Because nothing compresses it. PNG runs a filter pass and deflate over the pixels; a BI_RGB bitmap stores three bytes for every pixel regardless of content. Width times height times three, rounded up for row padding, plus 54 bytes is the whole file - a flat white image costs exactly as much as a photograph.
No. The output is 24-bit, so there is no alpha channel to keep, and the conversion copies only the red, green and blue values. Canvas pixels that are fully transparent have zero in all three, so those areas appear black. Composite your image over a background colour before converting if that matters.
None in the visible pixels - both formats store exact 8-bit RGB values. What is lost is the alpha channel and everything outside the pixel grid: the colour profile, the text chunks, the physical-size hint. Convert back to PNG later and you get the same picture, just without those extras.
The classic Windows 3.x form: BITMAPFILEHEADER plus a 40-byte BITMAPINFOHEADER, uncompressed, 24 bits per pixel, bottom-up. There is no option for RLE compression, 32-bit BGRA, top-down rows or the newer V4 and V5 headers with colour-space fields.
The decode and the canvas set the limit long before the 500 MB file cap does. Chrome refuses canvases beyond roughly 16,384 pixels on a side and a total area in the hundreds of megapixels; mobile Safari runs out considerably sooner, and a failed allocation surfaces as a conversion error rather than a silent crop.
View all

Need the opposite? Try BMP to PNG

Updated

We use anonymous analytics to improve ToolChamp. No personal data is stored or sold. Privacy Policy