Convert WebP to PNG or JPG on your own computer, with nothing uploaded

Short answer: renaming the file does not convert it. To get a real PNG or JPG you have to re-encode the image, and you can do that entirely on your own machine: Paint on Windows, Squoosh in your browser, or one command for a whole folder. Every route below is free, and none of them sends your image anywhere. We ran the commands and checked the output files by their signatures, not by their names.

First, the thing that does not work

Changing photo.webp to photo.png changes the name and nothing else. The bytes inside are still WebP. Some apps open it anyway, because they read the data rather than the name, which is exactly why this myth survives: it appears to work until you hit an upload form or an older editor that checks properly, and then it fails with a confusing error.

Here is the proof, from our own test on November 3, 2026. We copied a WebP file to a .png name and then asked an image library what it actually was:

FileSizeSignature in the first bytesWhat an image library reads it as
test.webp964 bytesRIFF....WEBPWEBP, 600 x 300
renamed.png (a copy, renamed only)964 bytesRIFF....WEBPWEBP, 600 x 300
out.png (actually converted)4,243 bytes\x89PNGPNG, 600 x 300

Same size, same pixels, different file entirely. The renamed one is a WebP wearing a PNG name. Note also that the real PNG is more than four times larger: that is not a mistake, it is the whole reason sites send WebP.

Windows: Paint

Already installed, and it handles this without any download.

  1. Right-click the .webp file, choose Open with, then Paint.
  2. File, then Save as, and pick PNG picture or JPEG picture.

The step people get wrong is the second one. Typing .png into the file name box while Save as type still says WebP gives you the renamed-file problem above. Change the type, not the name.

Pick PNG if the image has a transparent background, because JPG has no transparency and those areas come out white. Pick JPG for photographs if you care about file size.

Any computer: Squoosh, in your browser

Squoosh is Google's own image tool. Open it, drag the file in, choose PNG or JPEG on the right, download. It looks like an online converter but it is not one: its README states "Squoosh does not send your image to a server. All image compression processes locally." The work is done by code running in your own browser tab.

This is the route to send someone who is about to paste a private screenshot into the first "free webp to png converter" result on Google. Those sites do upload your image to their server, which is a poor idea for anything with a name, an address or a number in it.

A whole folder at once

If you have a hundred files, use one command. Each of these converts without touching the network.

dwebp, from Google's WebP tools

Google publishes a decoder for exactly this. From its documentation, the basic form is:

dwebp picture.webp -o output.png

PNG is its default output. Google's docs note it does not handle animated WebP files. It ships as part of libwebp, which is in the package manager on Linux (webp), in Homebrew on macOS (brew install webp), and as a download for Windows.

ffmpeg, which you may already have

We tested these and the results are in the table below:

ffmpeg -i test.webp out.png
ffmpeg -i test.webp out.jpg

A whole folder, in PowerShell on Windows:

Get-ChildItem *.webp | ForEach-Object { ffmpeg -i $_.Name "$($_.BaseName).png" }

And in bash, on macOS or Linux:

for f in *.webp; do ffmpeg -i "$f" "${f%.webp}.png"; done

Python, if it is installed

Three lines, and it reads AVIF as well on a current Pillow:

from PIL import Image
for f in __import__("glob").glob("*.webp"):
    Image.open(f).save(f[:-5] + ".png")

For JPG, add the conversion, because JPG cannot store an alpha channel:

Image.open(f).convert("RGB").save(f[:-5] + ".jpg", quality=92)

What we tested

One source image, 600 x 300 with a transparent area, encoded to WebP and to AVIF, then converted by each route. Every output was checked by its file signature and by reopening it, not by its extension.

InputRouteOutputVerified as
WebP, 600 x 300ffmpeg -i test.webp out.png4,243 bytesPNG, 600 x 300
WebP, 600 x 300ffmpeg -i test.webp out.jpg9,159 bytesJPEG, 600 x 300
AVIF, 600 x 300ffmpeg -i test.avif out.png12,071 bytesPNG, 600 x 300
WebP, 600 x 300Python, Pillow .save()3,499 bytesPNG, 600 x 300
WebP, 600 x 300Python, Pillow, convert("RGB") at quality 928,606 bytesJPEG, 600 x 300
WebP, 600 x 300copied to a .png name964 bytesWEBP, not converted

ffmpeg 7.0.2 and Pillow 12.1.0 on Linux, November 3, 2026. Test files encoded with ffmpeg (libwebp and libaom-av1). The Paint, Squoosh and dwebp routes are documented by their own publishers, cited below; we did not re-run those three here.

The step before all of this

Everything above happens after the file is already on your disk. If what you actually want is for the image to land as a PNG or a JPG in the first place, that is a different fix, and it is the one we build: Image Type Saver adds Save image as to Chrome's right-click menu with PNG, JPG and WebP, converts the page's image at full size on your device, and puts the file in your Downloads folder. No account, no analytics, no ads, and no site access requested when you install it.

Being clear about what it is not: it converts images on web pages, not files already sitting in a folder. For those, use one of the routes above. And in the published version 1.0.0, an image served from a different site than the page you are on, where that site does not permit other pages to read it, cannot be read: that save fails and the icon shows a warning. A fix for those images is built and will arrive in the next update. It is free for single images; Pro ($6 once) saves every image on a page and sets quality, a maximum width and file names. Chrome Web Store.

If you are here because the old right-click extension vanished, the other half of the story is in "Save image as Type" was removed: six extensions now use the name.

Sources