Skip to content
Founding Lifetime: every Pro skillfirst 100 members · $169 onceUpgrade
Lookbk
Sign In
Effect guide

Split-flap display animation for a website

The clatter of an old station departure board, every letter turning one flap at a time until the word is right. How a split-flap display works, a starter you can paste and run, and the skill that builds a full board hero.

Free skills to start. Pro is $79 a year for every skill, or $9.99 a month for 10. See pricing

What is a split-flap display?

A split-flap display, often called a Solari board after its best-known maker, shows each character on a drum of hinged flaps. To change a letter the drum turns, dropping flaps one after another until the right one shows. Airports and train stations used them for decades, and the sound and rhythm of them flipping is unmistakable.

On a website it says travel, timetables, launches and countdowns, or simply "something is arriving". It works because it animates real information: times, destinations, prices or a headline that clicks into place.

How the effect works

Each cell has a fixed alphabet in drum order, say a space, A to Z, 0 to 9 and a few symbols. To show a new character, step forward through that alphabet one flap at a time until you reach it. A cell never jumps straight to the answer, and cells far down the alphabet take longer, which is what gives the board its ragged, mechanical arrival.

Each flap is two halves. The top half of the old character falls forward over the bottom half, rotating around the middle hinge, and reveals the top half of the next character behind it. A short rotateX on the top half, with a shadow that darkens as it falls, is enough to read as a flap.

  1. 01

    Define the drum

    One string of characters in flap order. Every cell steps through the same drum.

  2. 02

    Step, do not jump

    Advance each cell one flap every 40–70 ms until it matches its target character.

  3. 03

    Fold the top half

    Animate the top half rotating from 0 to −90° around its bottom edge, then swap the character.

  4. 04

    Stagger rows

    Start each row a little after the one above so the board fills in like a real one.

HTML

A split-flap row in HTML, CSS and JavaScript

A row of flap cells that step through the drum to each new word, with a CSS fold on every flap. It skips the stepping when reduced motion is on.

<div id="board" style="display:flex;gap:4px;font:700 40px/1 ui-monospace,monospace"></div>
<style>
  .cell { position: relative; width: 36px; height: 52px; background: #161616;
    color: #f2c14e; border-radius: 4px; display: grid; place-items: center;
    perspective: 200px; overflow: hidden }
  .cell::after { content: ''; position: absolute; left: 0; right: 0; top: 50%;
    height: 1px; background: #000 }
  .cell.flip { animation: fold 60ms ease-in }
  @keyframes fold { from { transform: rotateX(0) } 50% { transform: rotateX(-60deg);
    filter: brightness(.6) } to { transform: rotateX(0) } }
</style>
<script>
const DRUM = ' ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789:.-'
const still = matchMedia('(prefers-reduced-motion: reduce)').matches
const board = document.getElementById('board')
const WIDTH = 12
const cells = Array.from({ length: WIDTH }, () => {
  const el = document.createElement('div')
  el.className = 'cell'; el.textContent = ' '
  board.append(el)
  return { el, i: 0 }
})
function show(text) {
  const target = text.toUpperCase().padEnd(WIDTH).slice(0, WIDTH)
  cells.forEach((c, n) => {
    const goal = Math.max(0, DRUM.indexOf(target[n]))
    if (still) { c.i = goal; c.el.textContent = DRUM[goal]; return }
    const step = () => {
      if (c.i === goal) return
      c.i = (c.i + 1) % DRUM.length
      c.el.textContent = DRUM[c.i]
      c.el.classList.remove('flip'); void c.el.offsetWidth; c.el.classList.add('flip')
      setTimeout(step, 45)
    }
    setTimeout(step, n * 30)
  })
}
const words = ['DEPARTURES', 'NIGHT TRAIN', 'BOARD 22:10']
let k = 0
show(words[0])
setInterval(() => show(words[++k % words.length]), 4000)
</script>

A starting point written for this page, free to use in your own projects. The skills below build the finished version with checks, fallbacks and a recorded video.

What to get right on a real page

  1. 01

    Keep the alphabet short

    Forty or so flaps per drum keep changes under three seconds. A full Unicode drum takes forever to arrive.

  2. 02

    Put the real text in the page

    Screen readers should read the final word once, not every flap. Keep an aria-label or visually hidden copy of the target text and mark the cells aria-hidden.

  3. 03

    Use a monospace, condensed face

    Fixed-width letters keep the cells aligned, and a condensed bold face fits more characters on a phone.

  4. 04

    Skip the stepping for reduced motion

    Respect prefers-reduced-motion: show one finished frame instead of the loop. A visitor who turned motion off still gets the look.

Skills that build a split-flap display

A finished hero with a full departure board beside your headline, with your colors, fonts and words, and a 1080p video for launch posts.

  1. Split-Flap Board Hero: an example of what it makes
    web
    Split-Flap Board HeroClaude CodeCodexCursor+3 more agents

    Motion Heroes · Pro

    Split-Flap Board Hero

    Animated canvas hero · page + embed + 1080p video

    A mechanical departure board where every character is a drum of flaps turning one at a time, so the board clatters in row by row with your times, destinations, codes, gates and statuses. Each flap falls, darkens and casts a shadow; a banner row of big flaps, a flap clock and a blinking boarding lamp complete it, and it flips to a second page and back in a seamless loop.

    Worth knowing: The board holds two pages of up to eight rows; it is not wired to a live timetable feed.

    Needs: Node.js 18+, Chrome (or Chromium/Edge), and ffmpeg for the video

    See what Split-Flap Board Hero makes

Install

Build a split-flap display with your agent

Each skill is a SKILL.md folder, so it installs the same way in Claude Code, Codex, Cursor and other agents. The example below uses Split-Flap Board Hero; each skill page has its own prompt.

1. Paste the install prompt

Your agent runs the installer. The first time, it shows a sign-in link so you can approve it in the browser.

Install the "Split-Flap Board Hero" skill from Lookbk (https://lookbk.dev/skills/split-flap-board-hero).
1. Run: curl -fsSL https://lookbk.dev/cli.js | node - add split-flap-board-hero
2. If it prints a sign-in link, show it to me. When I say I approved it, run the same command again.
3. When the install finishes, read the SKILL.md it installed and tell me what you need from me to make the first result.

Or run it in a terminal

curl -fsSL https://lookbk.dev/cli.js | node - add split-flap-board-hero

2. Start a new session

Agents load skills when a session starts. The installer writes the folder where your agent looks:

Claude Code
~/.claude/skills/split-flap-board-hero
Codex
~/.agents/skills/split-flap-board-hero
Cursor
~/.agents/skills/split-flap-board-hero

3. Ask for the result

Describe it in plain words, for example:

Build a Split-Flap Board hero for Owl Line, our sleeper trains from Vienna: night page, black flaps with amber remarks, tonight's departures flipping to the next page, banner 'NIGHT TRAINS' then 'SLEEP ON IT', headline 'Board at ten. Wake up somewhere else.', and record a 12-second loop.

Another agent? Install a skill in any agent

FAQ

Questions

Still stuck? The guides cover installing, agents and licensing in more detail.

Read the guides
What is a split-flap display called?

Split-flap display, flap display or Solari board, after the Italian company Solari di Udine that built many station and airport boards.

How do I make a split-flap animation in CSS only?

You can fold a flap with CSS keyframes, but stepping through the alphabet to a target needs a few lines of JavaScript, as in the starter, or a long precomputed keyframe per cell.

Can I add the clacking sound?

Yes, with a short click sample played per flap through the Web Audio API, but browsers only allow sound after the visitor interacts, so keep it off by default.

Can I use the board in a video?

Yes. Split-Flap Board Hero records a smooth 1080p loop of the board flipping, ready for launch posts.