Skip to content

79 hearts.
Five ways to move them.

Our logo has a small coral heart in it, and I wanted it to have more character. Claude and I explored 79 of them in Paper. Choosing one on a board was easy enough. Picturing the logo moving through them wasn’t, so I asked for five quick HTML animation prototypes. Here’s the exploration, the prompt, every animation playing live with eight hearts, and what to check before an animated logo goes anywhere near production.

The 34-second promo, made the same way as our first promo: storyboarded in Paper, timed with a scratch voice, then Archer from ElevenLabs. Every logo in it runs on the real animation engine.

Transcript

Seventy-nine hearts. Five ways to move them. Claude and I explored them in Paper. I picked the retro key. Then I picked the moves. Four of my ideas, plus a wildcard. Claude built them in eleven minutes. Slide. Pixelate. Glitch. CRT. Key press. I picked the glitch. Five more came back. Feel it. Don’t imagine it. Play with them live on I Love Vibe Coding.

A heart with more character

The heart in our logo was a plain coral outline. I wanted it to have more character, so Claude and I started drawing alternatives in Paper. Each heart got its own board: the heart large, the full logo, a header-size mark and a set of favicon tiles.

The first ten were pixel hearts: a censored mosaic, a game sprite, a half-rendered outline, one breaking away into squares, a power-up and a signal glitch, among others.

Ten pixel-art hearts in coral on light grey cards, from soft mosaic outlines and a thin sprite outline to a shaded mosaic, a half-rendered outline, a heart breaking into squares and chunky filled hearts
Boards 01 to 10: the pixel hearts, exported from Paper. Select the image to see it full size.

Then we switched to the house illustration style we use for our banners: black stipple ink on flat yellow. Codex drew each heart with GPT Image, and we recoloured the ink to our coral, #FF4D57, so it sits on white. An anatomical heart, a neon tube, a foil balloon, hands, a padlock, a love sweet, a latte, origami, a cherub, brick walls, keycaps, flames and a robot with a heart in its chest. That made 69 more, and 79 boards in all.

Sixty-nine coral stipple heart illustrations on white, including a neon tube, an anatomical heart, a foil balloon, hands making a heart, a padlock, a love sweet reading VIBE CODE, keycaps, robots, flames, origami folds and brick hearts
Boards 11 to 79: every stippled heart, recoloured to coral. Select the image to see them all full size.

I chose 57, the retro key: a worn 1980s keycap with a heart on top. Home computers are where a lot of us first fell for making things. It sits between an I and a yellow VIBE chip, with the wordmark in JetBrains Mono.

Paper board 57, Retro key: the black stipple keycap on yellow, the full I love Vibe Coding .com logo with the keycap in coral, a header-size mark and favicon tiles
The board for 57 · Retro key. Every heart was judged the same way: large, in the logo, in a header and as a favicon.
The chosen logo: I, the coral retro keycap heart, VIBE on a yellow chip, CODING and .com, set in JetBrains Mono
The chosen lockup: the retro key with a JetBrains Mono wordmark and the yellow VIBE chip.

A board can’t show you movement

Picking one heart didn’t settle it. I loved the variety, and I wondered whether the logo could keep some of it: one mark that cycles through several hearts.

That’s hard to judge from still boards. How long should each heart stay? Does the swap feel playful or fidgety? Does it still work when the logo is 22 pixels tall in a header, or a 64-pixel tile? I could imagine answers, but I couldn’t see them.

So instead of imagining it, I asked for prototypes I could watch.

The prompt

This is what I sent on 11 October. I dictated it, so it’s lightly edited for clarity:

animate-the-logo.txt
I’d also love you to give me some versions of how we might animate the logo, because I love the variation in the hearts. I’d love to see five HTML animation examples to look at and see how they work.

I’d like to flip between the different hearts: the key, the brick heart, the real heart and the cherub. Let’s just look at the animations: whether they slide up, or they kind of pixelate in. That would be quite nice. Maybe they jitter in, as in they flash a couple of times and swap, like a glitch. Another one maybe like an old CRT, where the lines come in and it just swaps.

Come up with five really fun, creative animations of the brand.

It’s rambly, but it does three useful things. It names the output: five HTML examples. It names the content: four hearts. And it offers a few starting ideas while leaving room for the agent to add its own.

Here’s a reusable version for your own logo. Replace the placeholders with your logo file, the versions of the mark you want to flip between, your ideas and your brand guide:

animate-your-logo.txt
I’d love to see some versions of how we might animate my logo [LOGO_FILE]. Make five standalone HTML animation examples I can open and compare.

The logo should flip between these versions of the mark [MARK_FILES]. Keep the rest of the logo still: give the mark a fixed box so nothing else moves when it swaps.

Some starting ideas: [ANIMATION_IDEAS]. Then add your own. Make them fun and creative, but on brand [BRAND_GUIDE_URL].

Show each one large, at header size and as a small app tile. Add pause, replay and speed controls, and a gentle crossfade for people who ask their device to reduce motion.

What came back, 11 minutes later

A Claude Code subagent running Claude Opus 5.5 took about 11 minutes to build five standalone HTML prototypes and a viewer to flip between them. Four were my ideas. The fifth was its own.

  • Slide up. A slot-machine reel: the heart rolls up and the next one rides in from below.
  • Pixelate. A stepped mosaic of 2, 4, 8 and 16 pixels that swaps hearts at its blockiest.
  • Glitch jitter. Flashes, an RGB split and sliced offsets, with the VIBE chip jolting.
  • Old CRT. Scan lines, then a squeeze to a glowing line and a dot, then the next heart blooms back.
  • Key press. The agent’s idea. The keycap thunks down and springs back up as the next heart.

A few decisions under the bonnet made them easy to review:

  • One clock. Every animation is a pure function of a single virtual clock. Pausing, slowing down, replaying and capturing any frame all come down to moving one number.
  • A fixed box. The heart sits in a fixed 84-pixel box, so the wordmark never moves, whichever heart is showing.
  • Reduced motion. If your device asks for reduced motion, every animation falls back to a gentle crossfade with longer pauses.
  • Checked frame by frame. The agent captured mid-transition frames in headless Chrome and looked at them before handing over.

I reviewed them on my phone. The agent bundled all five into one self-contained page and dropped it into our chat thread, so I could tap through them away from my desk.

“I absolutely love all the animations you did for the ilove logo. They’re all great.”

— Simon Bloom

Then I asked for two CRT refinements: one that doesn’t shrink to a dot, and one where the dot is obvious. They came back as 04b, a rolling picture with no dot, and 04c, a big glowing power-off dot. Both are in the demo below.

Play with them here

Here’s the same engine running on this page: the five animations, the two CRT refinements and eight hearts. Four are the hearts from my prompt. The other four are favourites from the exploration: hands, the foil balloon, the felt-tip drawing and the love sweet.

Live demo · 7 animations · 8 hearts

Retro key

A slot-machine reel. The heart rolls up out of its window, and the next one rides in from below, overshoots a touch and settles.

Live demo: the prototype engine with eight hearts, shown large, at header size and as a 64-pixel tile. It starts when it scrolls into view and pauses when it leaves. Pick an animation, pause it, step to the next heart, slow it down, or switch to the reduced-motion version.
The eight hearts in the demo, in coral on white: a retro keycap, a brick heart, hands making a heart, an anatomical heart, a love sweet reading VIBE CODE, a cherub, a foil balloon and a felt-tip scribble
The eight hearts in the loop, in order. Retro key, brick bond, anatomical and cherub are from my prompt. Hands, love sweet, foil balloon and felt-tip are favourites from the exploration.

These are the frames the agent checked: moments from each swap between the retro key and the brick heart, with the header bar and dark tile alongside.

Six frames of the Slide up animation: the retro keycap rolls up out of the heart box and the brick heart rides in from below
Six frames of the Pixelate animation: the keycap breaks into larger and larger coral blocks, then resolves into the brick heart
Six frames of the Glitch animation: yellow flash blocks with an ink keycap, RGB-split hearts and sliced offsets before the brick heart lands
Six frames of the Old CRT animation: the keycap squeezes into a thin glowing line, then the brick heart opens back up behind scan lines
Six frames of the CRT roll animation: the keycap rolls up behind a bright coral bar and the brick heart rolls in and locks, with no dot
Eight frames of the Power dot animation: the keycap collapses to a line, then a large glowing dot that lingers before the brick heart blooms open
Six frames of the Key press animation: the keycap presses down with small impact lines and springs back up as the brick heart
Mid-transition frames captured by the agent in headless Chrome, retro key to brick bond. Select any sheet to see it full size.

One prompt, five glitches

Two stood out for me: the CRT roll and the original glitch. Once the prototypes existed, I didn’t need another long brief to explore one of them. This was the whole prompt, with the typos tidied:

five-glitches.txt
Really like the CRT roll and the 03 Glitch jitter. Please do 5 variations of the glitch.

About seven minutes later, Claude Opus 5.5 came back with five: a VHS tracking tear, a glitch that takes the whole wordmark with it, a corrupted image load, a glitch that kicks into a CRT roll, and a subtle one. Here they are next to the original, with the same eight hearts:

Glitch variations · 6 animations · 8 hearts

Retro key

A signal glitch. Two quick flashes, an RGB split and sliced offsets as the old and new hearts flicker, while the VIBE chip jolts a pixel or two.

Glitch variations: the original 03 glitch and the five variations, 03a to 03e, on the same engine and hearts. Like the demo above, it waits until it’s on screen and stops when it leaves.

The agent dropped one idea: a datamosh, where the old picture smears into the new one. Smearing the coral stipple turned it pale pink, which I’ve ruled out.

My reaction was “those are all awesome as options”. The one built for a real header is 03e: a hairline split and a single-frame swap, with no flash and nothing else moving. 03b goes furthest: the whole wordmark tears, not just the heart.

Six frames of the VHS tracking glitch: the retro keycap wobbles, a torn band with cyan and red bleed slides up through it, and the brick heart appears below the tear
Six frames of the whole-lockup glitch: the I, the VIBE chip, CODING and .com tear into offset slices with cyan and red ghosts while the keycap swaps for the brick heart
Six frames of the corrupted-load glitch: the keycap drops out in strips and the brick heart arrives in strips out of order, some in cyan
Eight frames of the glitch roll: an RGB-split burst and a yellow flash, then the picture rolls up behind an ink bar and the brick heart locks in
Six frames of the subtle glitch: a faint cyan and red edge and hairline slices on the keycap, then the brick heart, with the rest of the logo still
Mid-transition frames of the five variations, retro key to brick bond, captured by the agent in headless Chrome. Select any sheet to see it full size.

You can use the same move on your own prototypes. Name the one you like and ask for variations of just that one:

variations.txt
I really like [ANIMATION_NAME] in [PROTOTYPE_FILE]. Please do five variations of it.

Keep [WHAT_MUST_NOT_CHANGE] the same, push each one in a different direction, and include one subtle enough for [WHERE_IT_WILL_LIVE].

Before you ship an animated logo

These are prototypes, not production code. We haven’t decided which animation, if any, goes on the site. Before one does, this is what I’d check:

  • A way to stop it. Anything that moves on its own for more than five seconds needs a way to pause it, under WCAG 2.2.2. A header logo rarely has room for a pause button, so it might animate once, on hover, or only on the homepage.
  • Reduced motion. Honour the device setting, as the prototypes do, and test it with the setting switched on.
  • Flashing. The glitch flashes. Keep flashes small and below three a second, under WCAG 2.3.1.
  • Performance. Several of the effects redraw a canvas on every frame. Stop when the logo is off-screen or the tab is hidden, as these demos do, and test on a slow phone.
  • Screen readers. The logo’s name shouldn’t change with the heart. Label it once and hide the moving parts from assistive technology.
  • Weight. The eight hearts in this demo add up to about 300 KB of images. A site header would need smaller files or fewer hearts.

Feel it. Don’t imagine it.

A board is the right place to judge a still logo. You can line up 79 hearts and compare them side by side. A living logo is different. Timing, rhythm and how it feels at 22 pixels tall only show up when it moves in front of you, at the sizes people will actually see.

Eleven minutes of prototypes turned something I could only imagine into something I could watch, pause and compare on my phone. That’s cheap enough to do for any decision that involves movement.

Get the next experiment in your inbox.

Subscribe

Tools used