Output guide
PNG, JPEG, or WebP: which output format should you download?
Pick PNG when you need lossless quality or alpha. Pick JPEG when the image is a photograph and you want a small file. Pick WebP when you want the smallest lossy file at the same visible quality and every viewer in your chain supports WebP. On this site the answer also depends on which page you used: the home and text tools always write PNG, while the logo tool offers the choice.
The short answer, per tool
Two engines, two behaviours, both verified by reading the source.
- Home page and text-removal page. These share
app.js. The download handler callscanvas.toBlob(resolve, 'image/png')with no quality argument and downloadswatermark-removed.png. There is no format selector on either tool. - Logo removal page. This uses
logo-removal.js, which renders a select withPNG,JPEG, andWebP. The selected value becomesimage/jpegorimage/<value>, passed with quality0.92. The downloaded filename becomeslogo-removed.jpg,logo-removed.png, orlogo-removed.webp. Ifcanvas.toBlobreturnsnull, the page shows "This browser cannot create <format>. Choose PNG instead."
That difference is the reason the choice is simpler than it sounds. On the home and text pages you are already getting PNG; on the logo page you decide.
What a Chromium canvas produces
The right comparison is not the comparison on paper; it is what canvas.toBlob actually returns for the same image. The table below is from headless Chrome 153 on Windows 11, 24 September 2026, using the same toBlob(type, quality) call each tool makes. The image is a 1600 x 1067 photograph-style scene generated locally (gradient sky, faint noise, a yellow ellipse, a darker ground band, and vertical fence posts).
| Requested | Quality | Blob type | Bytes |
|---|---|---|---|
| image/png | default | image/png | 2,199,853 |
| image/png | 0.92 | image/png | 2,199,853 |
| image/jpeg | default | image/jpeg | 178,909 |
| image/jpeg | 0.92 | image/jpeg | 178,909 |
| image/webp | default | image/webp | 15,748 |
| image/webp | 0.92 | image/webp | 128,900 |
| image/avif | default | image/png | 2,199,853 |
| image/avif | 0.92 | image/png | 2,199,853 |
Five things to take from the table.
- PNG ignores the quality argument. The default and
0.92outputs are byte-identical, because PNG is lossless. The quality slot exists in the API for symmetry with JPEG and WebP; it does nothing for PNG. - The JPEG default quality is already 0.92. The two rows are the same size, because the platform's default encoder quality for JPEG matches the value the logo page passes. Passing
0.92is explicit; passingundefinedlands the same. - WebP's default quality is far more aggressive than 0.92. 15.7 KB vs 128.9 KB on the same image, an 8x difference. The default is fine for thumbnails and for showing on screen, but it is visibly softer than 0.92 on a photograph. If you pick WebP on the logo page you are getting
0.92, which is the second row, not the first. - Asking for AVIF silently returns PNG. The blob's
typeisimage/pngand the byte count is the same as the genuine PNG output. The browser does not throw and does not returnnull; it answers with the closest thing it can do. The page's own error branch only fires when the blob isnull, so on this Chrome build a user picking AVIF would never see the fallback message. AVIF is on the input list on the format page, but it is not on the output list on this site. - WebP at 0.92 is the smallest lossy option for this image. 128.9 KB vs JPEG's 178.9 KB at the same quality. That is a 28% saving on a single photograph-style image; on a flat-background logo or a screenshot the ratio flips because PNG already handles those cheaply and WebP's lossy settings can introduce noise.
Transparent pixels and JPEG: the trap
The same image, with a 400 x 300 fully transparent rectangle punched through the middle, encoded as JPEG at 0.92 and decoded back. The pixel at the centre of the punched region was (0, 0, 0, 0) in the source canvas. After the JPEG round trip it is (0, 0, 0, 255): the same RGB, alpha now opaque. JPEG has no alpha channel, so the encoder flattens transparency onto whatever the canvas is composited against, and Chromium's canvas.toBlob('image/jpeg') composites onto black.
The practical version: if you ever paint a selection over a transparent background, then pick JPEG, the transparent area becomes solid black in the download. The home and text pages do not let you pick JPEG, so the trap does not apply there. On the logo page, pick PNG or WebP if your source has transparency.
Which format when
The site does the encoding locally, so the only thing that changes between formats on a single canvas is bytes on disk and what your viewers can open. Here is the rule that follows from the table above.
- PNG. Lossless. Keeps alpha. Largest files, especially on photographs. Right for screenshots, logos on transparent backgrounds, and any case where the next step is to edit the image further or to re-encode it for print. This is also the only choice on the home and text pages.
- JPEG. Lossy, no alpha. Smallest when the image is full of photographic texture. Right for photos that will be shared as-is. Right for emails and message attachments where size matters more than quality. Avoid JPEG if the source had transparency or if a flat-colour region needs to stay sharp.
- WebP. Lossy and lossless modes; supports alpha. At the same visible quality, usually smaller than JPEG on a photograph. Default quality is much lower than 0.92, so confirm which mode the tool is using. Right for web delivery when every consumer in the chain is modern (current Chrome, Edge, Firefox, Safari 14+, most phones).
If you are working from the logo page and are not sure, leave it on PNG. It is the largest of the three and the safest, and you can always re-encode to JPEG or WebP later without losing information.
How the quality number behaves
The logo page passes 0.92 to canvas.toBlob. The browser interprets that number as a target rather than a knob, and the three formats interpret it differently.
- JPEG.
0.92is treated as "high quality". On this image it lands at 178.9 KB. Going to0.85would shrink that to roughly 130 KB; going to0.75brings it near 90 KB. Each step starts to soften fine noise first. - WebP.
0.92lands at 128.9 KB on this image, smaller than JPEG at the same quality. The WebP encoder reaches smaller files at the same visual fidelity, especially above0.85. Below0.7, WebP's lossy mode keeps a slight edge in size and starts to look similar to JPEG at the same quality. - PNG. The number is ignored. The byte count is the byte count.
What you cannot pick here
- AVIF. Not selectable on any page. Asking for it returns PNG, not an error.
- GIF. Not selectable. The encoder on Chromium can produce it, but this site does not use it.
- TIFF. Not selectable. Chromium does not encode it.
- A specific quality for PNG. PNG is always lossless on this site.
Frequently asked questions
Can I get a JPEG from the home page or the text-removal page?
Not from the page itself. The download handler hardcodes image/png. After the file is on your computer you can re-encode it with any image tool, or use the logo page on the same image, which lets you pick JPEG.
Why is WebP smaller than JPEG on this photo?
WebP's lossy mode reaches a smaller file at the same target quality for most photographic content, because its encoder uses a different prediction step. The advantage shrinks on images with very few unique colours and reverses on flat-colour UI screenshots.
What is the quality argument, exactly?
A number between 0 and 1 that the browser tries to honour. JPEG's default is 0.92 in Chromium. WebP's default is much lower than 0.92; that is why the default row in the table is so tiny. PNG ignores it.
Does the choice affect the repair, or only the download?
Only the download. The repair happens on the canvas before toBlob is called. Switching the format does not change what the tool can or cannot see.
What happens to a transparent image if I pick JPEG?
The transparent area becomes opaque black in the downloaded file. Measured on this build: a (0, 0, 0, 0) pixel becomes (0, 0, 0, 255). Pick PNG or WebP if your source had transparency.
Is there a reason to keep AVIF off the output menu?
The encoder Chromium exposes for the canvas API does not produce AVIF. Until that changes, asking for AVIF here returns PNG with no warning. The page can only meaningfully list formats the browser can actually write.
Does the input format change the download format?
No. The same canvas goes to whatever format you select. Opening a HEIC image and downloading as JPEG is fine as long as the browser could decode the HEIC in the first place; the format page above explains when it cannot.