Switching language on this site does not load a new page. The text denoises in place: every word that differs softens, swaps, and sharpens back over half a second, while the shader in the hero keeps drifting as if nothing happened.

The idea comes from diffusion models. Watch Mercury decode and you see text resolve from noise in a few passes, whole blocks at once. That felt right for a site that writes about AI systems: the page translates the way a model decodes.

The first attempt cycled random characters toward the target text. It looked the part, and it broke the page. Proportional type gives every glyph its own width, so each scrambled frame reflowed entire paragraphs. The second attempt faded blocks through a blur. It was calm and layout-safe, and it read as a plain crossfade with no character at all.

The version that shipped rests on one observation: the damage never came from spans or opacity. It came from changing glyphs. So the final text lands in the DOM immediately, at its final metrics, wrapped in per-character ghosts at low opacity. A quick blur hides the single reflow. Then the characters resolve in shuffled order, big chunks early, stragglers last. Nothing can rewrap, because the type itself never changes again.

A few details ended up mattering more than the idea. Text that is identical in both languages stays untouched, so names hold still like anchors while the page changes around them. The switch fetches by path on the current origin, because a single CORS miss silently degrades the whole effect to an ordinary reload. And under reduced motion the swap is instant.

Try it with the En and Sv button in the header, on the page you are reading.