Frame-by-frame animation
Formo's frame-by-frame system is built around an old idea done right: F5, F6, and F7, exactly where a generation of animators already expects them, plus a timeline underneath that doesn't force every part of your character onto one shared rhythm.
Your first keyframe: F5, F6, and F7
Three keys, three distinct jobs, sitting right on the toolbar as one-tap buttons too:
- F5 holds the current pose: extends it forward in time without creating a new keyframe, without redrawing anything, and without moving your playhead. You stay exactly where you are; the pose behind you now simply lasts one frame longer.
- F6 duplicates the current keyframe into a fresh copy, ready to nudge or redraw, and it automatically advances your playhead to that new frame for you. You don't have to manually step forward after keying; press F6, and you're already sitting on the new keyframe, ready to draw the next pose.
- F7 drops a blank keyframe — an empty slate, for when the next pose has nothing in common with the last one — and, like F6, moves you forward to it automatically.
That distinction matters in practice: F5 is the "nothing changes yet" key, so it deliberately doesn't relocate you, while F6 and F7 both assume you're about to draw something next and get you there in one press. None of the three were renamed or swapped. If your hands already know this triad, they already know it here.
Understanding frames and keyframes
A keyframe is a pose you've actually drawn or set: a recorded moment. A frame is any single tick of the timeline, whether or not something new happens there. Most frames between two keyframes simply hold whatever the nearest keyframe behind them set, which is exactly what F5 is for: extending a keyframe's hold across frames that don't need their own new content.
Under the hood, holding a frame with F5 isn't just padding a duration number; it shifts everything that lives on the timeline after that point: every later keyframe, every stroke, every recorded region, all pushed later by exactly one frame's worth of ticks. That's what makes a hold a structural insertion rather than a cosmetic "stay here longer" flag: everything downstream of it moves to make room, correctly, automatically.
Work with the frame-by-frame timeline
Click the Tween › toggle next to the Layers header to open it. It appears as an overlay right over the canvas rather than a permanently docked panel, so it's never in the way while you're just drawing.
Once open, each animated part of your document gets its own row — a character's arm, its legs, a background element — laid out across time instead of nested by hierarchy the way the layers tree is. A keyframe on a row shows as a small marker; the segment between two keyframes shows how the motion eases from one to the other. This same panel is also where property keyframes live: Record and Auto-record, covered in full in Property Keyframes and Easing, sit right alongside the F5/F6/F7 workflow, since both systems ultimately share the same underlying timeline and the same rows.
Animate character parts independently
Split a character across layers (a mouth, an arm, an eye) and redrawing one keyframe on one layer doesn't touch any other layer's keyframes, because they're not sharing state to begin with. This is what makes a lip-sync pass possible without the rest of the pose drifting: redraw the mouth, and the arms simply don't know anything happened.
This is also why F6 is such a fast loop in practice: select just the layer you're working on, hit F6, redraw that one part, hit F6 again, redraw again; each press only ever duplicates and advances the layer you have targeted, never accidentally stamping a new keyframe onto every other part of the character at once.
Use independent timelines for different animation cycles
Timelines are bound to containers — a brush layer, a frame, a component, a skeleton — not shared globally across everything in your scene. Each container owns its own timeline, with its own frame rate and its own length. A walk cycle's leg layer might loop every 12 frames while a separate blink layer loops on a longer cycle of its own, and a background element in yet another container drifts at a different speed still — each container running independently, yet all of them staying locked in sync, frame-accurate.
Every one of those separate per-container clocks reads off the same shared master tick underneath: 240 ticks per second specifically, chosen because it's the lowest common multiple of every common frame rate you'd animate at (8, 12, 24, 48, and 60fps all divide into it evenly). A 12fps loop and a 24fps loop can share one document without ever drifting apart over a long shot, because both are just different-sized steps along the exact same underlying clock, not two clocks that happen to be close.
Scrub and preview your animation
Drag the current-frame line to scrub back and forth through time; every layer's own timeline resolves correctly for whatever tick you land on, independent clocks and all. Press Space to play — everything runs live, including physics and particles if you're using them — and press it again to stop.
Stopping is non-destructive: Formo captures a snapshot the instant you press play, and restores it exactly the instant you stop, so anything that happened during playback (a physics object settling somewhere new, a particle system having emitted a few hundred sparks) is discarded completely. Nothing sticks unless you specifically keyframed it. This is what makes hitting play a safe way to just look at your work rather than a commitment: experiment freely, and stopping always puts you back exactly where you started.