MarkVanish
Watermark remover Remove text from image About Privacy Contact

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 calls canvas.toBlob(resolve, 'image/png') with no quality argument and downloads watermark-removed.png. There is no format selector on either tool.
  • Logo removal page. This uses logo-removal.js, which renders a select with PNG, JPEG, and WebP. The selected value becomes image/jpeg or image/<value>, passed with quality 0.92. The downloaded filename becomes logo-removed.jpg, logo-removed.png, or logo-removed.webp. If canvas.toBlob returns null, 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).

One source image, one canvas, real toBlob outputs.
RequestedQualityBlob typeBytes
image/pngdefaultimage/png2,199,853
image/png0.92image/png2,199,853
image/jpegdefaultimage/jpeg178,909
image/jpeg0.92image/jpeg178,909
image/webpdefaultimage/webp15,748
image/webp0.92image/webp128,900
image/avifdefaultimage/png2,199,853
image/avif0.92image/png2,199,853

Five things to take from the table.

  1. PNG ignores the quality argument. The default and 0.92 outputs 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.
  2. 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.92 is explicit; passing undefined lands the same.
  3. 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.
  4. Asking for AVIF silently returns PNG. The blob's type is image/png and the byte count is the same as the genuine PNG output. The browser does not throw and does not return null; it answers with the closest thing it can do. The page's own error branch only fires when the blob is null, 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.
  5. 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.92 is treated as "high quality". On this image it lands at 178.9 KB. Going to 0.85 would shrink that to roughly 130 KB; going to 0.75 brings it near 90 KB. Each step starts to soften fine noise first.
  • WebP. 0.92 lands 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 above 0.85. Below 0.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.

MarkVanish ยท Private image cleanup in your browser
AboutPrivacyContact