flipcode spec · v1

What is flipcode?

Short answer: flipcode is FlipLetters’ board language — a small plain-text format for split-flap and flip-dot board animations. A board file lists the board, the output size, and a series of slides with their text, flip transition, hold time and click sound. FlipLetters Studio renders it to an MP4 deterministically: the same code always gives the same video.

flipcode is a file format — a small language like Markdown or LaTeX, not a general programming language. The language is called flipcode; a document is a board file (.flip). Its vocabulary is exactly what a physical flap board can do — boards, slides, flip choreography, holds, click sounds — and nothing more. (Looking for OpenCV’s flipCode? That’s an unrelated image-mirroring argument; see the FAQ below.)

A complete board file

flipletters v1
board: trainboard 8x34
output: 1920x1080 30fps
title: DEPARTURES
accent: #ffb63d
sound: solari volume 0.8

--- slide 1
hold: 12s
flip: cascadeRows 11/s jitter 0.2 stagger 0.4
| TIME  DESTINATION     STATUS  TRK
| 10:25 LOS ANGELES     ON TIME  B4
| 10:41 TOKYO HANEDA    BOARDING C2

| lines are the board’s text rows, spaces preserved — the code looks like the video it produces. Comments start with //. Global directives come first; each --- line (3+ dashes) starts a slide.

Board types and size limits

BoardGood sizeMax sizeNotes
minimal3×146×24Big title letters
trainboard / station8×3412×44Departures grid
artboard / art10×1820×36Pixel / paint flaps
flipdot / dots28×8456×168Dense = slower export
marquee / desk1×102×16One short word
announcement / poster7×810×12Portrait milestones

Oversized grids are clamped to the max. The Studio has one newer board beyond spec v1 (arena / lightbox) — see /docs for the full list.

Cheat sheet: global directives

name:project name — free text
board:template + grid, e.g. trainboard 8x34 (sizes in the table above)
output:a preset (yt-1080/landscape, yt-4k, vertical/reels/portrait, square) or any WIDTHxHEIGHT with 30fps — compact 1200x630@25 allowed
title:board header (station & announcement boards), ≤40 chars
accent:accent color — #rrggbb or #rgb
backdrop:classic · cream · confetti (minimal & announcement boards)
sound:solari · thock · deep · clickity · fizz · none, plus volume 0..1 (percents allowed) and softness 0..1
speed:global pace 0.25–2, x suffix optional
seed:non-negative integer — re-rolls all deterministic jitter
watermark:on · off
brief:free text — the AI prompt this template came from

Cheat sheet: slides

--- slidestarts a slide (any line of 3+ dashes)
hold:seconds the finished board holds, 0–60, s suffix optional
flip:transition mode + rate + jitter + stagger (see below)
align:left · center (flip-dot & marquee text)
| textone board text row — spaces preserved, uppercased
: cellsone paint-grid row (art & dot boards): color flaps ■ R G B Y O P K, . blank, ● dot

Boards cap at 24 slides. Text rows use A–Z, 0–9, space and .,:!?'&@#$%()+-=/.

Transition modes

Set with flip:, then a rate of 2–30 flips per second (11/s), jitter 0–1 and stagger 0–1.5 — keyed or positional (flip: cascade 11 0.2 0.4).

allAtOnce / allevery cell flips at once
cascadeRows / cascaderow by row, top to bottom
sweepColumns / sweepcolumn by column, left to right
randomDissolve / dissolvecells flip in random order
wavea wave rolls across the board
diagonalcells flip along diagonals
radialcells flip outward from the center
spinStop / spinevery cell spins and locks in randomly

Flip-native effect recipes

There is deliberately no fade, zoom, or slide-in — a flap board can’t do those. Every effect people reach for has a flip-native equivalent:

Fade inthe first slide always flips up from blank; a slow randomDissolve (5/s, jitter 0.4) reads as a soft dissolve
Fade outend with an all-blank slide on randomDissolve — the board dissolves back to empty flaps
Hard cutflip: allAtOnce 20/s jitter 0
Reveal line by linecascadeRows with a large stagger
SuspensespinStop — every cell spins and locks in randomly
Hold a beatrepeat the previous slide's rows with a long hold — identical cells don't flip
Imagespictures become flaps, not files: the Studio rasterizes an upload into : paint rows; flipcode never references image files or URLs

Where to go next

The spec is open: the written rules and the zero-dependency reference parser live at github.com/tera-sarah/flipcode (MIT). The full reference — including the arena board, boards in URLs, and the MCP for AI agents — is on /docs. To render a board file as video, paste it into the Studio and export the MP4.

flipcode FAQ

What is flipcode?

flipcode is a small plain-text format for split-flap and flip-dot board animations. A board file lists the board, the output size, and a series of slides with their text, flip transition, hold time and click sound. FlipLetters Studio renders it to an MP4 deterministically: the same code always gives the same video.

Is this the same as OpenCV flipCode?

No. OpenCV's flipCode is an argument to cv2.flip() that mirrors an image (0 = vertical, 1 = horizontal, -1 = both). FlipLetters flipcode is an unrelated text format for split-flap board videos.

How do I make a split-flap video from flipcode?

Paste a board file into FlipLetters Studio at app.flipletters.com, or start from a free template, then export an MP4. Free exports carry a small watermark.