Emoji Merge

Train a tiny neural net on emoji your browser can draw — then merge any two by blending them in the network's learned latent space and watch a brand-new in-between emoji appear. Everything runs locally in your browser with TensorFlow.js — no server, no API key.

We render each emoji from your browser's built-in emoji font onto a small 32×32 canvas over white — that rasterized set is the training data. No dataset to download; the emoji font generates the corpus for free.

Faces merge best: they share a shape (round, two eyes, a mouth), so blends between them stay coherent. All emoji is more chaotic — merges between very different shapes get blurry in the middle.

4

Extra copies of each emoji at a slight random rotation & size. This gives the model more views of each shape so it learns a smoother, less memorized version — sharper reconstructions. 0 = originals only.

0 emoji rendered · 0 kept

A tiny variational autoencoder learns to squeeze each emoji into a short vector (its latent code) and rebuild it. Because that space is smooth, the straight line between two emoji decodes into believable blends — that's the merge.

Training settings
3000
faster / softerslower / sharper
4.0
sharper / holey-ersmoother / blurrier
16
smoother mergessharper / holey-er
32
step 0 · loss · β
Build a corpus, then press Train.
reconstruction KL

As it trains, the model merges a fixed pair across 7 steps. Its ends are the model's reconstructions of those two emoji. Early on it's gray mush; as the space organizes, the merge sharpens and the ends start matching the real inputs — that's the model learning.

A representative sample. With adjustments on, some tiles are shown slightly rotated / resized — the extra views the model learns from.

?
A (t = 0)
?
merged
?
B (t = 1)

Click an emoji to set A, then another for B.

0.50
← past AA · blend · Bpast B →

Drag to blend from A into B. Push past the ends (the magenta zones) to over-extrapolate the merge beyond either emoji.

Slerp follows the curved path the model was trained on, so mid-merges stay sharp. Lerp takes the straight line — simpler, but dips through fuzzy territory in the middle.

Pick two emoji to see their merge.

Everything — rendering the emoji, building the corpus, and training the merge model — runs locally in your browser with TensorFlow.js. Emoji are drawn live from your device's own installed emoji font, so the look matches your platform.

A sibling of Uppestcase & Lowestcase, which does the same trick with letters. "Merge" here means interpolating in a variational autoencoder's learned latent space.