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:
| File | Size | Signature in the first bytes | What an image library reads it as |
|---|---|---|---|
test.webp | 964 bytes | RIFF....WEBP | WEBP, 600 x 300 |
renamed.png (a copy, renamed only) | 964 bytes | RIFF....WEBP | WEBP, 600 x 300 |
out.png (actually converted) | 4,243 bytes | \x89PNG | PNG, 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.
- Right-click the
.webpfile, choose Open with, then Paint. - 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.
| Input | Route | Output | Verified as |
|---|---|---|---|
| WebP, 600 x 300 | ffmpeg -i test.webp out.png | 4,243 bytes | PNG, 600 x 300 |
| WebP, 600 x 300 | ffmpeg -i test.webp out.jpg | 9,159 bytes | JPEG, 600 x 300 |
| AVIF, 600 x 300 | ffmpeg -i test.avif out.png | 12,071 bytes | PNG, 600 x 300 |
| WebP, 600 x 300 | Python, Pillow .save() | 3,499 bytes | PNG, 600 x 300 |
| WebP, 600 x 300 | Python, Pillow, convert("RGB") at quality 92 | 8,606 bytes | JPEG, 600 x 300 |
| WebP, 600 x 300 | copied to a .png name | 964 bytes | WEBP, 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
- Squoosh, project README, on local processing: github.com/GoogleChromeLabs/squoosh
- Google for Developers,
dwebpdocumentation: developers.google.com/speed/webp/docs/dwebp - Tom's Guide, "How to convert WEBP to JPEG or PNG" (the Paint route and the Save as type step): tomsguide.com/how-to/how-to-convert-webp-to-jpeg-or-png
- Google for Developers, "An image format for the Web", on WebP file sizes: developers.google.com/speed/webp
- Conversion tests and file signature checks: run by 1088 Labs, November 3, 2026.