Timeline & graph editor
Calm by default
Every layer is one row, showing a single neutral block that summarises where its keyframes live. That is the whole timeline until you ask for more.
To see inside a layer, either:
- click the disclosure chevron, which shows the full property tree, or
- press U, which reveals only the properties that have keyframes.
Either way the track splits into one sub-row per property, each with draggable keyframe diamonds.
Property rows carry live scrubbable value fields. A whole animation can be built in the timeline without ever crossing to the inspector.
Row controls
- Keyframe diamonds — drag to retime, marquee-select several, copy, paste, delete.
- Layer bars — drag to move the layer in time, edge-drag to trim, split at the playhead.
- Clip waveforms — audio and video bars draw the envelope of the sound they will play, sliced to that clip’s own source window, so trimming or slipping redraws it. A speaker glyph shows and toggles that layer’s audio mute, separately from the visibility eye, which hides the picture. See Audio.
- Search filter, shy toggle, and solo / lock / visibility columns.
- Work-area in/out markers and composition markers.
- Transport — play/pause, jump to start or end, frame step, loop. It lives in the timeline header, beside the tools that change what you are looking at, rather than in a bar of its own.
Label colours do two jobs
A layer’s label colour is not only a stripe in the tree:
- The layer’s outline on the canvas is drawn in its label colour. On a busy composition that is how you tell which selected thing is which without reading the tree.
- One command selects every layer sharing a label — and “no label” is a first-class choice, not a gap. Sweeping up the untagged layers is how you find the ones you forgot to tag.
Colour a group, then act on the group. Without the second half the palette is just decoration.
Markers
| Marker | Where it lives |
|---|---|
| Composition marker | On the ruler. Shift + 1…9 drops a numbered one at the playhead |
| Layer marker | Stored layer-relative, so it travels with the layer when you trim or move it |
Both are readable from expressions through marker.*, which is usually more
legible than hard-coding times — the timing stays visible on the ruler where you
can drag it.
The graph editor
Toggle it with Shift + G. It replaces the track rows and fills the panel below the header toolbar, rather than sliding in as a short strip underneath them — a curve needs height to be read in. The timeline is hidden rather than unmounted, so its scroll position survives the toggle.
Two modes:
Value draws each animated property’s curve as an SVG Bézier path. Drag a keyframe horizontally to retime it, vertically to change its value; drag its handles to reshape the easing.
Speed draws the derivative — the rate of change. It is read-only vertically, on purpose: a Y position in speed mode is a speed, not a value, so dragging it would be ambiguous. Use it to find the moment a move actually feels fast, then fix it in Value mode.
Timeline shortcuts
| Key | Action |
|---|---|
| Home / End | Go to start / end |
| Page Down / Page Up | Next / previous frame |
| Shift + Page Up/Down | Previous / next marker |
| J / K | Previous / next keyframe |
| B / N | Set work-area in / out at the playhead |
| Shift + B | Clear the work area |
| [ / ] | Trim the layer in / out |
| Ctrl/⌘ + Shift + D | Split selected clips at the playhead |
| Ctrl/⌘ + Z / + Shift + Z | Undo / redo |
| Ctrl/⌘ + C / V | Copy / paste keyframes at the playhead |
| Ctrl/⌘ + Alt + S | Smooth the motion path for selected layers |
Arrow keys and Space are deliberately not claimed by the timeline — the viewport owns them, so arrows always nudge the selected layer and Space always plays.
Reveal and keyframe chords
| Chord | Action |
|---|---|
| U | Reveal only keyframed properties |
| P / S / R / T / A | Reveal Position / Scale / Rotation / Opacity / Anchor |
| Alt + Shift + that letter | Add a keyframe on that property at its current value, and reveal the row |
Pressing U twice reveals animated properties across all layers.