Upload a photo. Mugmoji cuts out the background, you pick from 73 motion presets, and it exports an animated GIF already sized and compressed for Slack's 128KB emoji limit. Free, no account, nothing to install. Runs entirely in your browser.
Hey Product Hunt π
I'm Ben. I built Mugmoji, and I'm the whole team.
This started because I wanted one animated emoji of my own face for a Slack workspace, and it took me most of an evening. Cut the background out by hand. Find a bounce that doesn't look terrible. Export a GIF. Get told the file is too big. Export again. Get told it's still too big. Somewhere around the fourth attempt I stopped wanting the emoji and started wanting the tool.
What it does: you upload a photo, the background comes off automatically, you pick a motion, and you get a GIF that Slack will accept on the first try. In testing the background removal took about a second and the whole flow ran well under ten. There are 73 motions across six categories β Energetic, Silly, Cute, Cinematic, Menacing and Glitch β including Headbang, Laser Eyes, Banana Dance, Poop Drop, Coffee Sip, Its Fine and ZZZ Sleep. There's also a GIF Remix mode where you search GIPHY for a transparent GIF and layer it behind or in front of your subject.
The parts that were genuinely hard:
The motion presets are math, not video. Each of the 73 is a pure function of time β you hand it t between 0 and 1 and it returns position, rotation, scale and opacity. The engine samples that function once per frame and paints it onto a canvas. That's why there are 73 of them and not 8: adding one is writing a couple of lines of trigonometry, not producing an animation. It also means speed and size are free β resample the same function differently and you get a different GIF, no re-rendering pipeline required.
The GIF encoding all happens on your machine. Frames are encoded client-side in a web worker via gif.js. Nothing goes to a server to be turned into a GIF.
Slack's 128KB ceiling is the actual boss fight. An animated GIF that looks good is almost always too big, and "almost small enough" is the same as failing. So the encoder runs a compression loop β encode, measure, and if it's over the line, drop frames and coarsen the palette and go again. Six passes, targeting 96KB so there's headroom under Slack's 128KB. A real export in my testing came out at 58.5 KB. This one loop is responsible for more of my debugging hours than every visual effect combined, and it's the reason the emoji uploads on the first attempt instead of the fourth.
The whole thing is a fake Mac OS Classic desktop, because I wanted it to feel like a toy rather than a tool. Drag the windows around. The icons move too.
What's missing, honestly: background removal is good but not perfect on hair and glasses, so there's a manual brush ("Edit Background") to erase or restore areas when it misses β I'd rather it just never missed. There's no bulk export yet, so making the same face in six motions means six trips through the flow. And there's no shareable link for an emoji you've made. Those three are what I'd like to fix next, roughly in that order.
It's free, there's no account, there's no signup, and nothing installs. It's localised into 30 languages. There is no paid tier waiting behind a door.
What I'd love from you: make one, and tell me where the flow annoyed you. Specifically β is the right motion easy to find among 73, or is that just too many things to scroll past? That's the design question I'm least sure I got right. And if a photo of yours comes out badly, I'd genuinely like to see it.
Thanks for taking a look. I'm here all day and I'll answer everything.
β Ben
On the 73 motions, any thought of a "surprise me" shuffle for people who don't want to scroll?
Report
Ah this is so fun! Love this concept lol. It reminds me of the 90s web for some reason haha.
Kinda want like a "community" gallery where users can publish their stickers for others to embed (but only if they choose so obvs). Sort of like GIPHY - so users can find cool stickers to use like emotes in Slack etc
GrammarPaw β AI Writing assistant on Mac
@ben_shihΒ Awesome Launch Ben!
On the 73 motions, any thought of a "surprise me" shuffle for people who don't want to scroll?
Ah this is so fun! Love this concept lol. It reminds me of the 90s web for some reason haha.
Kinda want like a "community" gallery where users can publish their stickers for others to embed (but only if they choose so obvs). Sort of like GIPHY - so users can find cool stickers to use like emotes in Slack etc
Congrats on the launch!