Convert BMP to PNG
BMP stores every pixel raw — PNG stores the same pixels losslessly at a fraction of the size. Same image, modern format, nothing stored.
- Never stored
- No queue, no waiting
- No signup, no watermark
How it works
Add your BMPs
Drop any number of .bmp files onto the page.
Convert
Each becomes a losslessly compressed PNG — identical pixels, much smaller file.
Download
Save singly or as a ZIP.
The same pixels, a fraction of the size
A BMP is usually not compressed at all. Every pixel is written out literally, three or four bytes each, with rows padded to a four-byte boundary — which is why a 1920×1080 screenshot lands at about 8 MB and a twelve-megapixel photograph at nearly 36 MB. PNG stores exactly the same pixels and compresses them losslessly, so nothing about the picture changes and the file typically drops by five to twenty times. For a screenshot or a diagram, with large flat areas, the ratio is at the high end of that. This is the rare conversion with no trade-off at all.
There is one detail worth checking in the result: transparency in a 32-bit BMP is unreliable, and not because of anything done here. The original Windows bitmap header had no concept of an alpha channel, so the fourth byte of each pixel was simply unused; later headers defined it properly, but plenty of software still writes the older form and plenty of decoders still ignore the newer one. So a BMP that looks transparent in the program that made it may decode as opaque, with the alpha byte read as padding. If it matters, look at the PNG before you rely on it.
Rows are the other quirk. A BMP conventionally stores its rows bottom to top, a decision inherited from how early graphics hardware addressed memory, and signals a top-down file with a negative height. Decoders handle both, so this is invisible in practice — it is simply the reason a half-written or truncated BMP appears upside down rather than cut off.
The common Windows variants all convert. The odd corners of the format — RLE-compressed 4-bit and 8-bit bitmaps, OS/2 headers from the early nineties, and the rare embedded-JPEG form — depend on the decoder, and if one of those is rejected it will say so rather than producing a scrambled picture.
When you want something else
To squeeze the PNG further, oxipng -o 4 out.png or optipng will often take another ten to thirty per cent without changing a single pixel, and pngquant goes considerably further by reducing to a palette — which is lossy, and for a screenshot or a diagram usually invisible.
For a folder of them, ImageMagick's magick mogrify -format png *.bmp converts everything in one line, and libvips does the same using a fraction of the memory on very large images. If the BMPs are photographs rather than graphics, PNG is the wrong destination altogether — a JPG will be a tenth the size at a quality difference nobody can see.
Frequently asked questions
Is any quality lost?
None — PNG is lossless. The PNG decodes to exactly the pixels the BMP holds; only the wasted bytes are gone.
How much smaller will it be?
Typically 50-95% smaller depending on content — BMPs are essentially uncompressed, so almost anything wins.
Where do BMPs even come from these days?
Windows screenshots from older tools, MS Paint, scientific instruments, embedded systems and legacy software. The format dates to Windows 3.0.
Are my files stored anywhere?
No — the conversion stores nothing.
Can PNG hold everything BMP can?
Yes, and more — PNG adds real transparency, which BMP effectively never carried.
Good to know: Exotic BMP variants (RLE-compressed, OS/2 headers) depend on your browser's decoder; the common Windows BMPs all work.
Put this tool on your website
Free for any blog, class page or help article. Paste one snippet and your visitors can use it right on your page.