Convert PNG, JPG and WebP without uploading them

The pixels stay the same; only the container changes — JPEG for Word, WhatsApp and Shopee, WebP for a faster website, PNG when transparency has to survive.

🔒 100% client-side · zero server upload

Results

    Everything runs in this browser tab. Nothing is uploaded.

    Malaysian rules & edge cases

    Nine conversions, one rule. Any of JPEG, PNG and WebP can become any of the three. The output type is read from the bytes the encoder actually produced — not from the label you picked — so a file named .webp is a real WebP or the tool says why not.

    OutputTransparencyQuality dialTypical size
    JPEGNo — transparent pixels take the background colour you choose (white by default)0.3–0.95Smallest for photos; the format every form, portal and print shop accepts
    PNGKeptNone — losslessLargest. A photo converted from JPEG to PNG is usually 3–5× bigger, because PNG cannot throw detail away
    WebPKept0.3–0.95Smallest of the three at the same visual quality; every current browser reads it, older Office installs do not

    What happens to the pixels. The EXIF orientation is read first and baked into the image, so a portrait photo stays portrait once the tag that described it is gone. Then the image is redrawn through a canvas and encoded again — which is why every conversion drops the camera model, the GPS fix, the timestamp, the software tag and the colour profile. Wide-gamut photos (Display P3, Adobe RGB) come back as sRGB: slightly less saturated, never shifted in hue.

    What it does not do. It does not resize: 4000 px in stays 4000 px out, except an image above 16.7 megapixels, which is scaled into the canvas limit and says so on its row. It does not read HEIC, AVIF or GIF, and it cannot make a JPEG transparent — no tool can add an alpha channel that was never recorded.

    Honest limit. WebP output needs a browser that can really encode it. Safari on iOS and macOS cannot, and asking for image/webp there silently returns a PNG — so this tool checks the type of the bytes it got and, when it is not WebP, saves a JPEG named .jpg and says so. AVIF output is not offered at all: no browser's canvas can encode it (Chrome answers a request for AVIF with a PNG), and a fake would be worse than an omission.

    A batch is one download. Two or more images arrive as a single ZIP, built inside the tab, with duplicate names numbered (baju.jpg, baju-1.jpg) instead of overwriting each other. Nothing leaves the device: open the Network panel, press Run, and no request appears.

    Before and after

    Before

    logo-kedai-kopi.png — 1000×1000 — transparent background
    produk-shopee-01.jpg — 1200×900 stored, EXIF orientation 6 — iPhone 15 Pro — GPS 3.1390, 101.6869

    After

    logo-kedai-kopi.jpg — 1000×1000 — transparency filled with white
    produk-shopee-01.webp — 900×1200 upright — camera, GPS and date removed

    How it works

    1. Drop your images, or press "Load sample data" for a transparent PNG logo and a product photo that really carries camera, GPS and orientation tags.
    2. Choose the output format. For JPEG, pick the colour that goes under transparent pixels; quality applies to JPEG and WebP only, because PNG is lossless.
    3. Press Run, check each row — real size, real dimensions, what was removed — then download one image or the whole batch as a ZIP. Nothing left this tab.

    FAQ

    Are my images uploaded to a server?

    No. The file is read with the browser File API and re-encoded by a canvas in this tab. Open the Network panel and press Run: no request is made. That matters because a phone photo usually carries the GPS coordinates of where it was taken, plus the exact date and the camera model.

    Why did it save a JPEG when I chose WebP?

    Safari on iOS and macOS cannot encode WebP in a canvas: asking for image/webp silently returns a PNG. This tool reads the type of the bytes it actually got, and when it is not WebP it re-encodes as JPEG, names the file .jpg and says so on the row. A PNG renamed to .webp would break the next program that opens it.

    Why is the file called photo-converted.jpg?

    Because it was already a JPEG. Converting a file to the format it already has means encoding it again at the quality you chose, so the name gets a -converted suffix rather than colliding with your original. The row says "same format — re-encoded" so nobody mistakes that for a free operation: every JPEG re-encode loses a little.

    Why is the PNG bigger than the JPEG I started with?

    PNG is lossless: it stores every pixel exactly, so a photograph becomes its full uncompressed-ish size — usually three to five times the JPEG. The percentage on the row is signed, so growth shows as a plus. Convert to PNG only when something downstream needs lossless pixels; convert to WebP if the goal was a smaller file.

    Can it convert HEIC photos from my iPhone?

    Not yet. A HEIC decoder is a 9–26 MB download with its own licence, so it is planned as a separate opt-in page. For now set the iPhone camera to Formats → Most Compatible, or share the photo as JPEG. HEIC, AVIF and GIF files are reported as unsupported here instead of being silently mislabelled.