You have a logo on a transparent background, saved as a PNG. You convert it to JPG, open the result, and the transparent area is now a solid white rectangle. Every converter you try does the same thing. This is the single most common surprise in image conversion, and it is worth understanding properly, because the fix is not a setting — it is choosing a different format.
A PNG pixel carries four values: red, green, blue, and alpha. That fourth value is the opacity, running from 0 for fully invisible to 255 for fully solid. It is what lets a logo sit cleanly on any background colour.
A JPG pixel carries three values: red, green, and blue. That is the entire format. There is no alpha channel, no transparency index, and no flag that marks a pixel as see-through. The JPEG specification dates from the early 1990s and was designed for photographs, which do not need transparency.
So when a converter reads your transparent PNG and writes a JPG, it is not deciding whether to keep the transparency. It is dealing with the fact that the destination format has no way to represent it. Something has to go in those pixels, and the only options are actual colours.
Since this site runs conversions in your browser, I can tell you exactly what happens rather than describing it in general terms. Before your image is drawn, the canvas is filled with solid white, and then the image is composited on top:
if (targetFormat === 'jpg') {
ctx.fillStyle = '#FFFFFF';
ctx.fillRect(0, 0, canvas.width, canvas.height);
}
ctx.drawImage(img, 0, 0);
That fillRect is the whole story. Every transparent pixel ends up white, and every semi-transparent pixel gets blended proportionally towards white.
This is a deliberate choice rather than a default we inherited. Without that fill, the result depends on how the browser treats an empty canvas during JPEG encoding, which has historically varied and can produce black backgrounds. Painting white first means the file you download matches the preview you saw, in every viewer, every time.
Fully transparent areas becoming white is obvious straight away. The subtler problem shows up at the edges.
Well-made graphics have anti-aliased edges: a border of partly transparent pixels that makes curves and text look smooth instead of jagged. Drop shadows work the same way, fading gradually from partly opaque to fully transparent. When those pixels are composited onto white, they blend towards white — permanently.
Place that JPG on a white page and it looks perfect. Place it on a dark background and you get a pale halo tracing every edge, plus a visible rectangle where the shadow used to fade out. The image is not broken; it is a picture of your logo on white, which is precisely what you asked for.
If your reason for converting was file size — the usual reason — then WebP gives you what you actually wanted. It supports a full alpha channel, so transparency and semi-transparency survive intact, and it reaches file sizes in the same territory as JPG. Anti-aliased edges and soft shadows come through properly.
So for a logo, icon, sticker, screenshot with rounded corners, or any cut-out graphic, PNG to WebP is the conversion to reach for. Current versions of Chrome, Firefox, Safari, and Edge all support it.
The remaining reason to accept the white box is compatibility: some older desktop software, print workflows, and upload forms still want JPG specifically. If that is your constraint, the white background is the price, and it is worth knowing before you overwrite your only copy.
Sometimes white is wrong — you need the graphic matted against the exact colour of the page it will sit on. Our converter cannot do this; the fill is hardcoded to white, which is a real limitation and not one I want to paper over.
The approach that works is to flatten the image deliberately before converting. Open the PNG in any image editor, add a background layer in the colour you need, flatten it, and export. Then convert the already-opaque PNG to JPG, where there is no transparency left to lose. Doing it in that order means you control the result instead of discovering it.
If you have decided JPG is genuinely what you need, the PNG to JPG converter runs in your browser. If you would rather keep the transparency, start with PNG to WebP instead.