Convert JXL to BMP

Converting JXL to BMP unpacks a modern compressed image into raw pixels: 24-bit uncompressed bitmap, three bytes per pixel, no alpha channel. A JPEG XL of a few megabytes becomes a BMP of tens of megabytes, and that is the format working correctly rather than failing. It runs entirely in your browser.

  • Where it runs In your browser. The file is never uploaded.
  • Lossy The colours survive exactly. BMP cannot carry transparency, so anything cut out is filled with the background colour.
  • File size limit Up to 100 MB per file, free, without an account.
  • Worth knowing Transparency is not supported by the target format and is filled with the background colour.

Up to 100 files at once. Mixed formats are fine.

What JXL to BMP actually does

JXL 7 KBBMP 450 KB 63.7× larger

A photographic scene — smooth gradients, soft edges, grain. This is the case BMP is designed for or against, and the figures show which. Both images are drawn in code and encoded by the same converter that runs on this page, so the sizes are this site's own output.

JXL 5 KBBMP 450 KB 91.9× larger

A transparent background and a gradient across the shape. BMP either keeps both, keeps one, or fills the transparency with a solid colour — which is the difference that catches people out. Both images are drawn in code and encoded by the same converter that runs on this page, so the sizes are this site's own output.

JXL 13 KBBMP 450 KB 34.8× larger

Flat colour and hard edges, as in an interface, a chart or a logo. Very different behaviour from the photograph above, and the reason the answer is "it depends what is in the file". Both images are drawn in code and encoded by the same converter that runs on this page, so the sizes are this site's own output.

Who still needs a BMP, and why a JXL will not do

Microsoft published BMP in 1987 and it has been legacy for most of the time since, yet the demand does not go away. Firmware build scripts, LED panels and small displays, laboratory and machine-vision software, older Windows applications, emulator and game modding toolchains — a great deal of code was written to read a bitmap header and index straight into pixels, and none of it will ever learn a new format.

JPEG XL is the opposite of that. It was standardised as ISO/IEC 18181-1 in 2022, it is in almost no consumer software, and decoding it requires a modern codec that the machine on the other end of your workflow certainly does not have. Converting is not a preference here; it is the only way the pixels arrive in a shape the receiver can address. The gap between the two formats is thirty-five years, and the older one is the one that has to be accommodated.

The number that decides this page: three bytes a pixel

The BMP written here has no compression of any kind. The file is a 14-byte file header, a 40-byte information header, and then the pixels — three bytes each, blue first. A 4,000 by 3,000 image comes to exactly 36,000,054 bytes, about 34 MiB, and it is the same 34 MiB whether the photograph is a detailed forest or a plain white field.

Against a JPEG XL of perhaps three megabytes that is a factor of eleven, and against the 46 MiB the same image would occupy as an uncompressed TIFF it is the one saving BMP offers, since BMP drops the alpha channel that TIFF keeps. Nothing on this page will make the file smaller except reducing the pixel count. Compress it afterwards if it has to be sent — a ZIP finds a great deal of redundancy in a raw bitmap, and on flat graphics it will recover most of the difference.

Bottom-up rows and BGR: what is actually in the BMP

BMP predates every convention a modern format follows. The rows are stored from the bottom of the image upwards, the channels run blue, green, red rather than red, green, blue, and the header records the resolution as 2,835 pixels per metre, which is 72 dpi. All three are in the specification rather than the result of a shortcut here.

The variant produced is 24 bits per pixel with a BITMAPINFOHEADER, which is the oldest and most widely accepted combination — no colour table, no bitfield masks, no compression tag to interpret. If the software you are feeding was written against the Windows API at any point in the last thirty years, this is the shape it expects, and the odd conventions are precisely why it will work. The 72 dpi figure in the header is written because a zero there makes some older viewers reject the file outright; nothing reads it for any other purpose.

Transparency in the JXL is filled in, permanently

JPEG XL carries a full alpha channel and the 24-bit BMP has nowhere to put it. Before the file is written the image is composited onto a background colour, which you choose on this page, and once that is done the original edge information is gone.

Choose the colour the image will actually be displayed against rather than a default. White is right for a document or a print preview; black is right for a display panel or an overlay that runs on a dark surface; magenta is right if the receiving software treats a specific colour as a transparency key, which a surprising amount of older game and display tooling does. Getting this wrong shows up as a coloured fringe around every soft edge, and the only fix is to convert again from the JPEG XL.

Rows padded to four bytes, which is where odd widths go

Every row in a BMP is padded to a multiple of four bytes. At 24 bits per pixel a width divisible by four needs no padding at all, while a width of 1,001 pixels produces rows of 3,003 bytes and one padding byte each. The converter writes those bytes; they are part of the format, not slack.

This is the detail that breaks hand-written readers, and it is worth knowing if you are the one writing the code at the far end. Software that assumes the stride equals width times three will read a correct BMP as a progressively skewed image — the classic diagonal smear. If your output looks sheared, the padding is where to look, and choosing a width divisible by four sidesteps it entirely.

Nothing the JXL knew about itself reaches the BMP

JPEG XL can hold EXIF, XMP and an ICC profile. BMP has no standard place for any of them, and this conversion decodes to raw pixels and writes them out, so the camera model, the capture date, the GPS coordinates and the colour profile all stop here. That is unconditional: the page has no switch that keeps any of it, because the encoder never sees it in the first place.

That is a privacy improvement and a colour hazard in the same step. There is no profile in the output, so whatever reads the BMP will interpret the numbers as ordinary sRGB — which is fine for a display panel or an instrument and wrong for a wide-gamut photograph you cared about. Where the colour is the point, keep the JPEG XL as the reference copy.

No quality control, because there is nothing to trade

Every lossy target on this site offers a quality number. This one does not, and its absence is honest rather than an omission: BMP records the pixel values it was given, so there is no rate to set and no detail to spend. Two conversions of the same JPEG XL produce byte-identical files.

What that leaves is the pixel count, and the maximum-width control is therefore the only setting with any effect on the result. Halving the width quarters the file, from 34 MiB to about 8.6 MiB on the example above. If the destination is a 320 by 240 display, resize to 320 pixels and the whole conversation about size disappears.

PNG instead, unless the reader genuinely insists

PNG does everything BMP does and more: lossless, an alpha channel that survives, and a file typically a fraction of the size. It has been readable by everything since 1996 and there is no image-quality argument for BMP over it. If the software at the other end will take a PNG, that is the conversion to run instead of this one.

BMP wins in exactly one situation, and it is a real one: the receiving code wants to read a header and then treat the rest of the file as an addressable array of pixels, with no decoder in the loop. Firmware, embedded displays and instrument software are full of that pattern. When that is the constraint, the size is not a drawback, it is the specification. TIFF is the other candidate in that situation, and it is worth checking which of the two your tool prefers before assuming BMP.

The indexed and 32-bit BMP variants this does not write

BMP is a family rather than a single layout. It also defines 1-, 4- and 8-bit paletted images with a colour table, 16-bit packed forms, and a 32-bit variant that can carry an alpha channel through bitfield masks. This converter writes one member of that family — 24-bit, uncompressed, no colour table — because it is the one nothing refuses.

If the thing you are feeding demands a specific variant, say an 8-bit indexed bitmap for a small display or a 32-bit BMP that keeps transparency, this conversion will not satisfy it and no setting here will change that. Those are jobs for a tool that lets you name the pixel format outright, such as ImageMagick, and it is better to know that before you convert a folder than after the loader rejects the first file.

Converting locally, and the limit that applies

The decode, the flatten and the bitmap write all happen in your browser, so nothing is uploaded and there is no queue. Files up to 100 MB are accepted on the free tier, and that ceiling applies to the JPEG XL going in rather than to the bitmap coming out — a 100-megapixel source would produce a 300 MB BMP, which is a question of your machine's memory rather than of any limit here.

Drop a folder to convert a set in one pass; each file keeps its name with the extension swapped and the batch returns as a ZIP, which for uncompressed bitmaps is a considerably smaller download than the files themselves. Keep the JPEG XL originals: the BMP holds the pixels but not the transparency, the metadata or the depth that were in them.

How to write a BMP from a JXL file

  1. Drop your JXL files onto this page, or click to choose them.
  2. Pick the background colour that will replace any transparency.
  3. Download the BMP files, or take the batch as a ZIP.

JXL versus BMP: compression against raw pixels

JXL compared with BMP
JXLBMP
Full nameJPEG XLWindows Bitmap
File extension.jxl.bmp, .dib
Media typeimage/jxlimage/bmp
CompressionEither, depending on the settingUncompressed
First published20211987
Published byJoint Photographic Experts GroupMicrosoft
SpecificationISO/IEC 18181
LicensingOpen standardPublished, not standardised
Standing todayNicheLegacy, still read everywhere
Bit depth328
Colour it can describeRGB, greyscale, wide gamutRGB, indexed palette
Opens in a browserSome browsersEvery browser
Considered insteadAVIF, WebP, PNGPNG, TIFF

What is lost

BMP has no alpha channel. A transparent JXL comes out with those areas filled in — white unless something else is set — and no setting in BMP brings the transparency back.

BMP holds a single still image. An animated JXL keeps its first frame and loses the rest, so a conversion is a way to take a still out of one, not a way to move it.

JXL carries up to 32 bits per channel and BMP stores 8. The extra precision is what survives heavy correction without banding, so the conversion is best made after the editing rather than before it.

Opening the result

BMP opens in every current browser. JXL has narrower browser support than that. If the file is going onto a web page or into a form, that is usually the whole reason for the conversion.

GIMP reads both JXL and BMP, so there is a way to check the result against the original without a second tool.

What each format is for

The two are aimed at different work: JXL at archiving and photography, BMP at moving data between programs. That is worth weighing before converting, because the reason one exists is usually the reason the other is awkward.

JXL is Joint Photographic Experts Group's format, published in 2021. It records 32 bits per channel.

BMP comes from Microsoft and dates from 1987. Microsoft Paint, GIMP and IrfanView all read it.

BMP was published in 1987 and JXL in 2021. The older one is generally the safer file to hand to somebody; the newer one usually does the job in fewer bytes.

JXL to BMP: size, colour depth and transparency

Are my JXL files uploaded anywhere?

No. This conversion runs entirely inside your browser, so the file never leaves your device. You can confirm it yourself: open the network tab of your browser's developer tools and convert something. You will see the page load, plus the analytics and advertising the site is paid for with — and nothing carrying your file. The engine behind this particular pair is jSquash, WebAssembly builds of the reference image codecs; your browser fetches it once and caches it.

Why is the BMP so much bigger than the JPEG XL?

Because BMP stores every pixel literally. There is no compression in the file this converter writes: three bytes per pixel plus a 54-byte header. A 4,000 by 3,000 image is 36,000,054 bytes, about 34 MiB, whatever the picture shows.

What kind of BMP is produced?

24-bit uncompressed, with a BITMAPINFOHEADER, rows stored bottom to top and channels in blue-green-red order. That is the variant every BMP reader ever written accepts, which is the entire reason for choosing it.

Does transparency survive?

No. The output is 24-bit with no alpha channel, so transparent areas of the JPEG XL are filled with the background colour you choose before converting. Pick the colour the image will actually sit on, because the fill is permanent.

Is the conversion lossless?

From the decoded pixels onward, yes — the BMP holds exactly the values the decoder produced. The reduction happens earlier: JPEG XL allows up to 32 bits per channel and the decoder returns 8, so a high-bit-depth original is cut down before the BMP is written.

Why is there no quality setting?

Because there is nothing to trade. BMP writes the pixels as they are, so the only control over the file size is the number of pixels — which is what the maximum-width setting changes.

Should I use PNG instead?

If the receiving software accepts PNG, yes, without hesitation. PNG is lossless too, keeps the alpha channel, and is typically a small fraction of the size. BMP is the right answer only when the reader genuinely cannot handle anything else.

More about these formats