What you can do here
- PNG to JPG and JPG to PNG
- PNG to GIF and GIF to PNG
- PNG to BMP and BMP to PNG
- JPG to GIF and GIF to JPG
- JPG to BMP and BMP to JPG
- BMP to GIF and GIF to BMP
- PNG or JPG to WebP, and WebP to PNG or JPG
- HEIC or AVIF to JPG or PNG where your browser can open them
- Batch conversion with resize, quality and background options
Pick a pair from the links under the tool (each has its own address, such as /image-converter?mode=png-to-bmp) or just choose the output in Convert to: the input format is detected from each file, so one batch can mix PNG, JPG, GIF, BMP and WebP.
Which format should the output be?
| Format | Compression | Transparency | Animation | Typical use |
|---|---|---|---|---|
| PNG | Lossless | Yes (8-bit alpha) | No (APNG rarely used) | Screenshots, logos, diagrams, UI assets, anything with text or flat colour |
| JPEG | Lossy | No | No | Photographs, camera images, large images where a small file matters more than perfect edges |
| WebP | Lossy or lossless | Yes | Yes | Web images — roughly 25–35% smaller than JPEG or PNG at similar quality; supported by all current browsers |
| GIF | Lossless, 256 colours | 1-bit (on/off) | Yes | Short looping clips and simple low-colour graphics. Superseded by WebP and video for most uses |
| BMP | None (24-bit bitmap) | No | No | Legacy Windows software, embedded displays, tools that need raw pixels. Large files |
| AVIF | Lossy or lossless | Yes | Yes | Smallest files at a given quality, but slower to encode and not editable everywhere yet |
This tool writes PNG, JPEG and WebP with the browser's own canvas encoder, and GIF and BMP with encoders built into this page, because browsers do not expose those two. AVIF output is not offered.
Converting to GIF and BMP
- GIF output (PNG to GIF, JPG to GIF, BMP to GIF) is a static GIF89a. GIF is limited to 256 colours, so the tool builds an adaptive palette from the colours actually in your image (median cut) and, with Dither on, spreads the rounding error so gradients look smooth instead of banded. Flat graphics and logos convert cleanly; photos get larger and grainier than as JPG.
- GIF transparency is on or off per pixel. Untick White background for transparency to keep transparent PNG areas transparent in the GIF; soft edges become hard.
- GIF input (GIF to PNG, GIF to JPG, GIF to BMP): browsers hand the canvas the first frame of an animated GIF, so the output is a still image.
- BMP output (PNG to BMP, JPG to BMP, GIF to BMP) is an uncompressed 24-bit Windows bitmap at 96 DPI. It has no alpha channel, so transparent areas are filled with white (or black with the option off). Expect about 3 bytes per pixel: a 1920 × 1080 image is roughly 6 MB.
- BMP input (BMP to PNG, BMP to JPG, BMP to GIF): PNG gives the same pixels losslessly at a fraction of the size, which is usually the right choice.
Which format for what
- Photo that needs to be small — JPEG at quality 80–90, or WebP for a bit smaller again.
- Screenshot, logo, chart, anything with text — PNG. JPEG will smear the edges.
- Image with a transparent background — PNG or WebP. JPEG cannot keep transparency.
- Image for a website — WebP is the default choice now; keep a JPEG or PNG fallback only if you support very old browsers.
- Sending to someone who will edit it — PNG, so no new lossy generation is added.
The re-encode caveat
Converting an image here means: decode it, paint the pixels onto an HTML canvas, and call canvas.toBlob() in the target format. That has two consequences worth knowing:
- JPEG and WebP output is lossy. Every save throws away some detail. Converting JPEG → JPEG, or WebP → JPEG, stacks a second round of loss on top of the first. Convert once from the best original you have rather than re-converting an already-converted file.
- Changing the container does not undo earlier loss. A JPEG saved as PNG is larger but not sharper — the artefacts are baked into the pixels. PNG only guarantees that no further detail is lost.
- Metadata is dropped. EXIF, colour profiles, and orientation tags do not survive the canvas. Most browsers apply EXIF orientation before drawing, so the output is usually right-way-up, but the tag itself is gone.
For a photo you want to keep at a specific file size, use the image compressor instead — it re-encodes to hit a target without changing the format.
Reading HEIC and AVIF
Whether the tool can open a HEIC or AVIF file depends entirely on the browser, because decoding happens through the same <img> pipeline the browser uses for web pages:
- HEIC / HEIF (the default iPhone photo format) — decodes in Safari on macOS and iOS. Chrome and Firefox do not decode it. On those, convert on the iPhone first (Settings → Camera → Formats → Most Compatible) or use the HEIC to JPG page.
- AVIF — decodes in current Chrome, Edge, Firefox and Safari 16+.
The box above this section reports what your current browser supports. If a file cannot be decoded it will show an error next to its name and be skipped.
Questions
Does converting PNG to JPG lose quality?
Yes, a little at every save — JPEG is lossy. At quality 90+ it is hard to see on photos, but text and flat-colour edges pick up halos. Output that stays PNG is lossless.
Can I convert JPG to PNG to restore quality?
No. You get a pixel-perfect copy of the JPEG including its current artefacts, usually at a much bigger file size. PNG cannot recover discarded detail.
What happens to transparency when I convert to JPG?
JPEG has no alpha, so transparent pixels are filled — white by default here, black if you turn the option off. Use PNG or WebP to keep transparency.
Can this open HEIC or AVIF?
Only if the browser decodes them: Safari for HEIC, current Chrome/Firefox/Safari for AVIF. The page tells you what yours supports.
Can I convert PNG or JPG to GIF, or GIF to PNG?
Yes. Choose GIF as the output; each image gets its own 256-colour palette, with optional dithering, and transparency is kept if you turn the white background off. For GIF to PNG, JPEG or BMP, drop the GIF and pick the output. Animated GIFs use their first frame.
Why is my BMP file so much bigger than the PNG or JPG?
BMP here is uncompressed 24-bit: 3 bytes per pixel plus a 54-byte header, so 1920 × 1080 is about 6 MB. Convert BMP to PNG for a lossless file that is typically 3–10× smaller, or to JPG for photos.
Are my images uploaded?
No. FileReader, canvas, and canvas.toBlob — all local. It works offline after the page loads.