ARTICLE AD BOX
You can do this entirely on the client side using the Canvas API, so the image never leaves the user’s browser.
The general approach is:
1. Read the PNG file using an <input type="file"> element.
2. Load it into an Image object.
3. Draw the image onto a canvas.
4. Export the canvas as WebP using canvas.toBlob() or canvas.toDataURL("image/webp").
This keeps user data private, avoids server-side processing, and works well in modern browsers that support WebP.
High-level logic:
- FileReader reads the image
- Image.onload draws it to a canvas
- canvas.toBlob outputs the WebP file
I built a small browser-only tool that follows this exact approach using client-side processing. Disclosure: it’s my own project. I’ve added the link in the first comment for anyone who wants to see a working example.
Disclosure: I built a small browser-only converter that uses this same client-side Canvas approach. Example implementation: https://toolbly.com/file-converters/png-to-webp
