Image Converter: JPG, PNG, WebP, BMP and ICO
Most Popular Image Conversions
All Image Converters
Every image pair this site converts, 11 in all. Each page states what its own conversion keeps and what it drops before you convert anything.
| From | To | Tool |
|---|---|---|
| ICO | PNG | ICO to PNG |
| JPG | BMP | JPG to BMP |
| JPG | ICO | JPG to ICO |
| JPG | PNG | JPG to PNG |
| JPG | WebP | JPG to WebP |
| PNG | BMP | PNG to BMP |
| PNG | ICO | PNG to ICO |
| PNG | JPG | PNG to JPG |
| PNG | WebP | PNG to WebP |
| WebP | JPG | WebP to JPG |
| WebP | PNG | WebP to PNG |
Which image format should you convert to?
Start from what the picture is and where it has to go. A photograph on a web page wants a format that trades detail for bytes; a logo with clear corners wants one with an alpha channel; a tab icon wants a container that holds several sizes at once.
The six formats these pages account for are JPEG, PNG, WebP, GIF, BMP, ICO. GIF is among them because a picture you already have may be one and because the comparison needs it; no page here writes a GIF, and the section on what a browser can write says why. Each profile below is the format itself, not what a browser does with it — the two are different questions and the answers do not always agree.
JPEG saves space by throwing detail away. The baseline process, which is what a .jpg file on the web uses, is lossy and cannot be undone, and the standard defines no transparency at all.
PNG stores a picture without losing anything: the specification defines lossless as reconstructing the original data exactly, bit for bit. It carries an alpha channel, and since the Third Edition it can carry frame-based animation as well.
WebP has two modes in one container. Lossy WebP throws detail away the way JPEG does; lossless WebP keeps every pixel. Either mode can carry transparency, and the container can also hold an animation.
A GIF draws every pixel from a colour table of at most 256 entries. Transparency is one of those entries marked clear, so a pixel is either wholly transparent or wholly opaque.
A BMP stores the pixel array with no compression, which is why a bitmap of the same picture is far larger than a PNG or a JPEG of it.
An ICO file is a container. It holds several images at different sizes and colour depths, and software takes the one that suits the space it has to fill.
Which Converter Do I Need?
Changing the file, or embedding it
These pages write a new picture file you download. Putting a picture inside a stylesheet or a page of markup is a different job with a different answer — for that, turn a picture into a base64 data URI.
One picture, or every picture
Most pairs take one picture and give one back. The icon container is the exception at both ends: writing one packs several sizes into a single file, and reading one takes them all out again.
When the browser cannot do it
A page here says so and writes nothing. That matters because the platform's own failure is silent: asked for a format it cannot write, it returns a PNG and reports no error, which is how a reader ends up with a file whose name is a lie.
What Each Format Keeps and Drops
The six formats as their own specifications define them. What a browser will read and write is a separate question, answered further down.
| Property | JPG | PNG | WebP | GIF | BMP | ICO |
|---|---|---|---|---|---|---|
| Compression | lossy, discrete cosine transform (the baseline sequential process); the standard also defines a separate lossless mode that web .jpg files do not use | lossless - deflate with a sliding window of at most 32768 bytes (compression method 0) | two modes in one container: lossy in a VP8 chunk, lossless in a VP8L chunk | variable-length-code LZW over palette indices; the coding step is exactly invertible, so nothing is lost after the picture has been reduced to the palette | normally none - the pixel array is stored uncompressed | depends on the entry - each image inside is either an uncompressed device-independent bitmap or, from Windows Vista, a complete PNG |
| Alpha channel | none - neither T.81 nor JFIF defines an alpha or transparency channel | yes - a full alpha channel on colour types 4 and 6; a tRNS chunk gives a transparent colour key on types 0 and 2 and per-entry alpha on type 3 | yes, in both modes - a lossy file carries its alpha in a separate ALPH chunk, and a lossless file carries it inside the VP8L chunk | none - one palette entry may be marked transparent and is skipped when drawn | not carried by the files this converter writes; a BMP written from a browser canvas is opaque | yes - a PNG entry must be 32-bit ARGB and its mask is taken from the alpha channel; a bitmap entry carries a separate AND mask |
| Animation | none - one image per file | yes - APNG is normative in the Third Edition, using the acTL, fcTL and fdAT chunks | yes - controlled by the ANIM and ANMF chunks in the extended file format | yes - several images in one data stream, each preceded by a Graphic Control Extension whose Delay Time is in hundredths of a second. Looping is not part of the specification. | none - one image per file | none - the several images in an ICO are sizes of the same icon, not frames of an animation |
| In one sentence | JPEG saves space by throwing detail away. The baseline process, which is what a .jpg file on the web uses, is lossy and cannot be undone, and the standard defines no transparency at all. | PNG stores a picture without losing anything: the specification defines lossless as reconstructing the original data exactly, bit for bit. It carries an alpha channel, and since the Third Edition it can carry frame-based animation as well. | WebP has two modes in one container. Lossy WebP throws detail away the way JPEG does; lossless WebP keeps every pixel. Either mode can carry transparency, and the container can also hold an animation. | A GIF draws every pixel from a colour table of at most 256 entries. Transparency is one of those entries marked clear, so a pixel is either wholly transparent or wholly opaque. | A BMP stores the pixel array with no compression, which is why a bitmap of the same picture is far larger than a PNG or a JPEG of it. | An ICO file is a container. It holds several images at different sizes and colour depths, and software takes the one that suits the space it has to fill. |
- A JPG file begins FF D8 (SOI); a JFIF file follows it with FF E0 and the identifier 4A 46 49 46 00.
- A PNG file begins 89 50 4E 47 0D 0A 1A 0A.
- A WebP file begins 52 49 46 46 ("RIFF"), then a four-byte size, then 57 45 42 50 ("WEBP").
- A GIF file begins 47 49 46 38 39 61 ("GIF89a") or 47 49 46 38 37 61 ("GIF87a").
- A BMP file begins 42 4D ("BM"). The header field is the little-endian word 0x4D42..
- A ICO file begins 00 00 01 00 - a reserved word that must be zero, then the resource type, which is 1 for an icon.
- JPEG is defined by ITU-T Rec. T.81 | ISO/IEC 10918-1 (JPEG); ITU-T Rec. T.871 | ISO/IEC 10918-5 (JFIF).
- PNG is defined by PNG Specification (Third Edition), W3C Recommendation 24 June 2025; the Second Edition is ISO/IEC 15948:2004. The Third Edition is not itself an International Standard..
- WebP is defined by WebP Container Specification (Google); the bitstreams are RFC 6386 (lossy) and the WebP Lossless Bitstream Specification.
- GIF is defined by Graphics Interchange Format Version 89a (CompuServe, 1990).
- BMP is defined by no international standard; Microsoft documents the BITMAPFILEHEADER and BITMAPINFOHEADER structures.
- ICO is defined by no international standard; Microsoft documents the ICONDIR and ICONDIRENTRY structures.
- a JFIF file carries 1 or 3 colour channels at 8 bits per channel; T.81 itself allows 1-255 components in a frame
- bit depths 1, 2, 4, 8 and 16, not all legal for every colour type: greyscale 1/2/4/8/16, truecolour 8/16, indexed 1/2/4/8, greyscale with alpha 8/16, truecolour with alpha 8/16
- five: 0 greyscale, 2 truecolour, 3 indexed-colour, 4 greyscale with alpha, 6 truecolour with alpha
- at most 256 entries per colour table. The specification states the size as 3 x 2^(N+1) bytes where N is a 3-bit field, so the largest table is 2^8 entries; the number 256 is derived, not printed in the document.
- 16383 x 16383 pixels for lossy and 16384 x 16384 for lossless. The container header holds 24-bit canvas fields and requires the product of width and height to be at most 2^32 - 1, so the real limit comes from the bitstream, not the container.
- the directory header holds a reserved word (0), a type word (1 for an icon) and a count; each entry then gives width, height, colour count, colour planes, bits per pixel, byte length and the offset of its image data
- the width and height are single bytes, and the value 0 stands for 256 pixels. Microsoft documents that encoding for ICONRESDIR, the resource form of the same pair of bytes; no Microsoft page states it for ICONDIRENTRY itself.
- from Windows Vista an entry may be a complete PNG, starting with the PNG signature. It must be 32-bit ARGB, it carries no bitmap header, and it supplies no separate mask.
What Conversion Does to a Picture
What is true of moving a picture between any two of these formats, whichever pair you pick.
JPEG and lossy WebP save space by discarding picture detail, and what they discard does not come back. PNG, BMP and lossless WebP keep every pixel they are given, and GIF keeps every pixel it is left with after the palette has been applied.
PNG, GIF, WebP and ICO can carry transparency; JPEG cannot, because the standard defines no alpha channel, and a bitmap written here is opaque. Converting to a format without transparency fills the clear areas with a background colour.
Converting a picture back to the format it came from does not return the original file. Whatever a step discarded stays discarded, and the return trip writes a third file.
The browser decodes the picture to plain pixels and writes a new file from them, so the Exif data, the colour profile and anything else the original carried are not passed on.
- A GIF holds at most 256 colours at a time. A picture with more than that is mapped onto the palette, which is why smooth gradients come out banded or dithered.
- GIF transparency is a single palette entry marked clear. A pixel is either wholly transparent or wholly opaque, so a soft edge that fades out cannot survive the conversion.
- Every save as JPEG compresses the picture again. A JPEG that has been converted and saved once more carries the loss from both steps, and the second one cannot be undone by going back.
- PNG allows bit depths of 1, 2, 4, 8 and 16, and five colour types: greyscale, truecolour, indexed-colour, and each of greyscale and truecolour with alpha. Not every depth is legal for every type.
- WebP has a lossy mode and a lossless mode, and both can carry transparency. Lossy WebP discards detail the way JPEG does; lossless WebP keeps every pixel.
- One ICO file holds several images at different sizes and colour depths, and software picks the entry that suits the space it has. Common practice for a website icon is 16, 32 and 48 pixels, but no specification requires a particular set.
- Each format can be told apart by the bytes a file starts with: 89 50 4E 47 0D 0A 1A 0A for PNG, FF D8 for JPEG, 47 49 46 38 39 61 for GIF89a, 42 4D for BMP, 00 00 01 00 for ICO, and 52 49 46 46 followed four bytes later by 57 45 42 50 for WebP.
- Drawing an animated GIF or WebP takes a single picture from it - the image the format names as its default, or the first frame where there is none - so the converted file holds one picture and not the animation.
What a Browser Can Write
What the platform will and will not do, and what this site had to write itself to keep the promises on these pages.
- A browser has to be able to write PNG and may write other formats. If it is asked for a format it does not support it writes a PNG instead, without reporting an error, so a converter has to check what came back rather than trust what it asked for.
- The only formats browsers are documented as writing from a canvas are PNG, JPEG and WebP. Safari does not write WebP from a canvas at all. GIF, BMP and ICO appear nowhere in the compatibility data.
- No browser writes GIF from a canvas. A GIF has to be built in JavaScript: the colours reduced to a palette, dithered where the picture needs it, and coded with LZW.
- No browser writes BMP from a canvas. The file header and the pixel array have to be assembled in JavaScript from the canvas pixel data.
- No browser writes ICO from a canvas. The icon directory and its entries have to be assembled in JavaScript, with each entry a PNG the canvas can produce.
- A browser will display an ICO file, but it hands over one image, not the set the file contains. Reading every size means parsing the icon directory in JavaScript and decoding each entry, including the ones stored as a bitmap rather than a PNG.
- Drawing an animated image onto a canvas uses the image the format names as its default, or the first frame where the format names none. The other frames are not reachable this way.
- A canvas holds pixels and nothing else, so a file written from one carries no Exif data, no thumbnail and none of the original file's other metadata. The canvas specification never mentions Exif; this follows from writing the file out of a bitmap.
- A file written from a canvas carries a colour profile describing the canvas, not the profile the original picture came with, and formats that cannot carry a profile are converted to sRGB with a relative-colorimetric intent.
- A file written from a canvas uses the bit depth that best preserves the canvas, so an ordinary eight-bit canvas writes eight bits per sample however deep the original was.
- When a canvas is written to a format that has no alpha channel, the browser lays the picture over opaque black. A converter that wants any other background has to paint it first, and should say which colour it used.
- The quality setting applies only to formats that support variable quality, never to PNG, and it has to be a number between 0 and 1. Browsers read it differently, so the same setting does not give the same file everywhere.
- Whether a browser can be asked for lossless WebP from a canvas is not settled. The specification gives only a quality number for formats with variable quality and names no lossless option, and Safari does not write WebP from a canvas at all.
FAQs About Image Conversion
Which image formats are lossy and which are lossless?
JPEG and lossy WebP save space by discarding picture detail, and what they discard does not come back. PNG, BMP and lossless WebP keep every pixel they are given, and GIF keeps every pixel it is left with after the palette has been applied.
Do these image converters upload your file to a server?
No. Every conversion on this page runs in your browser. The picture is read, drawn and written on your own machine, and the file is not sent to a server.
Does converting an image between formats lose quality?
It depends on the pair. Writing a format that discards detail costs some; writing one that keeps every pixel costs none, though it cannot recover what an earlier step took.