PNG to BMP Converter with Real Bit Depth Control

Most converters hand you one 24-bit file and hide the decision. Bit depth is the whole decision in BMP, because the format stores raw pixels with no compression, so 8-bit output of the same image lands at a quarter the size of 24-bit. Pick the depth here, watch the byte count update before you commit, and see the palette damage on screen.

PNG to BMP conversion workbench

Drop a PNG here, paste one, or tap to browse

PNG only, up to 50MB and 40 megapixels. Pixels stay in this tab.

Choosing a bit depth when you convert PNG to BMP

BMP stores pixels the way a memory buffer stores them, one after another, with no compression in the usual case. A PNG shrinks a flat blue square to a few hundred bytes. The same square as a 24-bit BMP costs three bytes per pixel whether the image is a photograph or a solid colour. Once you know the file size is arithmetic rather than a surprise, the depth selector above stops being a setting and becomes the only choice worth making.

The file size is a formula, not an estimate

Every uncompressed BMP is a small header followed by rows of pixels, each row padded up to a multiple of four bytes. Nothing else. For a 1920 by 1080 image the four depths land here:

32-bit 1920 x 4 x 1080 + 122 bytes = 7.91 MB
24-bit 1920 x 3 x 1080 + 54 bytes = 5.93 MB
8-bit 1920 x 1 x 1080 + 1078 bytes = 1.98 MB
1-bit 240 x 1080 + 62 bytes = 253 KB

The 8-bit row shows the palette cost: 256 entries of four bytes each sit between the header and the pixels, so a tiny 8-bit BMP carries a kilobyte of colour table before a single pixel. For a 16 by 16 icon that palette outweighs the image. The size chips beside the depth buttons run this same arithmetic on your file the moment it loads, so you read the real number rather than a guess.

Rows are padded, and the padding is invisible

Each row of pixel data is rounded up to a four byte boundary. A 99 pixel wide 24-bit image needs 297 bytes per row and gets 300, wasting three bytes on every line for nothing. Widths divisible by four avoid it at 24-bit, and 32-bit output never pads at all because four bytes per pixel is already aligned. This is why an odd width sometimes produces a file slightly larger than the multiplication suggests.

Rows are also stored bottom to top. A standard BMP writes the last row of the image first, signalled by a positive height field in the header. Some capture tools write a negative height to mean top-down instead. Both are legal, and a decoder ignoring the sign is the reason a BMP occasionally opens upside down. Files from this page use the positive, bottom-up form, which every reader handles.

What each depth costs you

DepthHeader writtenGood forWhat breaks
32-bitBITMAPV4HEADER, 108 bytes, with alpha bitfieldsOverlays and sprites where transparency has to survivePaint, some older Windows dialogs and a few embedded readers drop the alpha byte and render black
24-bitBITMAPINFOHEADER, 40 bytes, BI_RGBAnything opening a BMP anywhere. The safe answerTransparency is gone, flattened onto whatever background colour you set
8-bit40 bytes plus a 256 entry paletteScreenshots, logos, line art, UI captures, embedded displaysPhotographs band across skies and skin unless dithering is on
1-bit40 bytes plus a two entry paletteMasks, stencils, fax and thermal output, e-ink panelsEverything except the shapes. Midtones collapse to one side of the threshold

Transparency has two possible endings

PNG carries an alpha channel and BMP mostly does not, so something has to happen to those pixels. At 24-bit and below, the converter composites the image onto the background colour you pick, matting semi-transparent edges into it. Pick the colour the image will sit on. A logo matted onto white and then placed on a dark panel shows a pale halo around every antialiased edge, and no later edit removes it cleanly.

At 32-bit the alpha byte survives, written with a BITMAPV4HEADER and explicit channel masks. Test the file in the program it is destined for before trusting it. Windows Paint saves 32-bit BMP files and still displays alpha as black, which trips up plenty of people who assume the file is broken. If the target is unclear, 24-bit with a matching background colour disappoints nobody.

Palette output, dithering, and where RLE8 pays off

The 8-bit path picks colours by median cut, splitting the image histogram along its widest colour axis until it has your palette size, then averaging each group. Screenshots and flat artwork survive this untouched, since they rarely hold more than a few hundred distinct colours to begin with. Gradients are where it shows: skies and shadows step into visible bands.

Dithering scatters the quantisation error into neighbouring pixels, so a band becomes a stipple. It reads better at normal viewing distance and worse under magnification. Turn it off for screenshots and UI mockups, where clean flat regions matter more than smooth ramps, and turn it on for anything photographic.

RLE8 is the one compression mode in wide BMP use. It encodes runs of identical palette indices, so it wins on flat artwork and loses on noise. A test bar of mostly one colour drops from 3078 bytes to 1640 with RLE8 on. Dither the same image and the runs vanish along with the saving. RLE8 also has a cost worth knowing: some older viewers, printer drivers and embedded parsers read only BI_RGB and reject the file outright.

Palette size and file size are separate things. Dropping from 256 to 16 colours writes a shorter colour table and saves a few hundred bytes, nothing more. Each pixel still spends a full byte. The reason to reduce is longer identical runs for RLE8, or a target device with a fixed palette.

Reading the preview honestly

The result panel is not the source image with a filter over it. It is a redraw of the exact pixels written into the BMP, so 8-bit banding and 1-bit thresholding appear on screen as they will appear in the file. Turn on Sharp pixels to disable browser smoothing and inspect quantisation at close range, which is the only reliable way to judge a dither pattern.

The ratio line under the result compares the BMP against the PNG you started with. Expect it to read larger almost every time. A PNG of a screenshot commonly beats a 24-bit BMP by ten to one. Converting is about compatibility with a program insisting on the format, never about saving space.

When BMP is the right answer

For a website, an app asset, or anything travelling over a network, keep the PNG. BMP earns its place at the point where a receiving program leaves you no choice.

Limits worth knowing before you rely on this

Everything runs in this tab. The file is read into a canvas, encoded to BMP bytes in JavaScript, and offered as a download from browser memory. No upload happens at any point, which matters when the image is a screenshot of something private.

PNG to BMP questions people actually hit

Depth, transparency, file size and the reasons a converted BMP sometimes refuses to open.

Why is my BMP so much larger than the PNG?

Because BMP stores every pixel at full width with no compression, while PNG applies filtering and DEFLATE before writing anything. A 1920 by 1080 screenshot might be 180KB as PNG and 5.93MB as a 24-bit BMP, and both hold identical pixels. The size difference is the compression, not quality. Switching to 8-bit cuts the BMP to a quarter, and turning on RLE8 helps further when the artwork is flat.

Which bit depth should I pick?

Start at 24-bit. It is the form every BMP reader written in the last thirty years handles, and it costs three bytes per pixel. Move to 32-bit only when the receiving program is known to honour alpha. Move to 8-bit for screenshots, logos and UI captures, where a 256 colour palette rarely loses anything visible and the file drops to a third of 24-bit. Use 1-bit for masks and stencils.

What happens to transparent areas in my PNG?

At 24-bit, 8-bit and 1-bit they are composited onto the background colour in the panel, since those formats have no alpha channel. Semi-transparent edge pixels blend into that colour, so pick the colour the image will sit on. At 32-bit the alpha channel is preserved in a BITMAPV4HEADER file, though several Windows programs ignore it and paint transparency black.

My 32-bit BMP shows a black background. What went wrong?

The file is fine and the reader is ignoring alpha. Microsoft Paint, older image controls and a number of embedded viewers read the first three bytes of each pixel and discard the fourth. Nothing in the file fixes that. Re-export at 24-bit with the background colour set to whatever the image will sit on, and the result matches what those readers expect.

Does reducing the palette to 16 colours make a smaller file?

Barely. Each pixel still occupies one byte at 8-bit regardless of how many palette entries are in use, so the saving is limited to the shorter colour table, a few hundred bytes at most. The real reason to reduce is RLE8, where fewer colours produce longer identical runs and genuinely shrink the output, or a target device with a fixed palette.

Should I turn dithering on?

On for photographs, off for screenshots. Dithering hides banding by scattering error into neighbouring pixels, which suits gradients and skin tones. On flat UI captures it adds noise to regions that were clean, and it destroys the identical runs RLE8 depends on. Toggle it with sharp pixels enabled and judge the preview at close range.

Why does my converted BMP open upside down somewhere?

The format stores rows bottom to top when the header height is positive, which is the standard form and what this page writes. A decoder skipping the sign check displays such a file inverted. It shows up in hand-written parsers and in older embedded code more than in mainstream software. If a custom reader is flipping the image, the fix belongs in the reader.

Is RLE8 safe to use?

Only when you control the reader. RLE8 is part of the specification and handled by Windows, ImageMagick, PIL and other mainstream libraries. Plenty of older viewers, printer drivers and microcontroller parsers accept uncompressed BI_RGB alone and reject anything else. Test the target first, since a rejected file gives no clue about why.

Does the conversion keep EXIF data or a colour profile?

No. BMP has no container for EXIF, ICC profiles or text metadata, so all of it is dropped during conversion. Camera details, copyright fields and embedded profiles disappear. Read them with the metadata viewer beforehand if you need them, and treat conversion as one-way for anything except pixels.

Is my image uploaded anywhere?

No. The PNG is decoded into a canvas in your browser, the BMP bytes are built in JavaScript on this page, and the download comes from browser memory. No request leaves the tab after the page loads, which matters for screenshots of internal dashboards or client work. Closing the tab discards everything.