Free tool · runs in your browser
Real transparency, not a painted checkerboard
Image models cannot output an alpha channel, so they paint a flat background instead — sometimes even a fake checkerboard. This removes it properly, seeding from the canvas edge so the whites inside your emote survive.
Drop an emote with a flat background
or
Nothing is uploaded.
Why "make white transparent" breaks emotes
A colour key removes every pixel of a given colour, anywhere in the image. Emote art is full of whites that are not background: eye highlights, teeth, a cream belly, the shine on a helmet. A global key punches holes straight through them.
The fix is to only remove background that is connected to the canvas edge. The algorithm seeds a flood fill from the border and follows contiguous background-coloured pixels inward, stopping at the subject's outline. Interior whites are never reached, so they survive.
Why generated emotes look like they have a transparent background
Ask an image model for "a transparent background" and it usually paints a grey checkerboard, because that is what transparency looks like in its training data. You get an opaque image of a transparency pattern. Generating on a flat solid colour and cutting it out as a second pass is the only reliable route.
Getting a clean cut
- Flat background. A solid colour cuts cleanly; a gradient or scene does not.
- Contrast. A background close in colour to the subject will need a wide tolerance and may still bite.
- Raise tolerance gradually. Start low and increase until the backdrop is gone — going too far eats thin outlines first.
- Keep feather on. It converts the flood fill's stair-step edge into a clean anti-aliased rim.
Questions
Is my image uploaded?
No. Decoding, the flood fill and the PNG export all happen in your browser. There is no upload request.
The subject lost an outline — what happened?
The tolerance is high enough that part of the subject matched the background colour. Lower it, or set the background colour manually so the comparison is exact.
Can I remove a background that is not a flat colour?
Not well. This is a colour-similarity flood fill, not a segmentation model. A photographic background needs a matting model; a generated emote on a flat colour is the case this is built for.