Skip to main content
The editor’s authoritative timeline unit is the integer composition frame. Timecode, seconds, milliseconds, pixel positions, media timestamps, and caption-token times are views or mappings of that frame domain.
In the examples below, the draft runs at 30 fps. One frame is 1 / 30 second, or approximately 33.333 ms.

Frames and time

For zero-based frame f at frame rate fps:
To map a time to a frame, the rounding policy matters:
Editing boundaries must land on integer frames. If an external timestamp falls between boundaries, choose the rounding rule that preserves the intended semantic edge.

Half-open layer intervals

A layer with:
is active on the half-open interval:
Its first playable frame is s; its last playable frame is s + d - 1; its right edit edge is s + d. This convention lets adjacent clips meet exactly: [120, 210) followed by [210, 270) has neither a gap nor an overlapping frame.

Timecode display

For non-drop-frame HH:MM:SS:FF timecode:
At 30 fps, frame 3,725 is:
The frame field is a frame count within the displayed second, not a decimal fraction. At 25 fps, valid values are 00…24; at 30 fps, 00…29.

Composition duration

The minimum duration needed to include every layer is the maximum right edge:
The last playable frame is therefore composition duration - 1. The duration readout describes the edge after that last frame.

Playhead versus edge

The playhead represents a frame to evaluate. Trim handles represent edges between frames. At the final visible frame, the evaluation frame can be duration - 1 while the right edge is duration. This distinction explains why:
  • End seeks the last playable frame, not the frame after the draft.
  • a right trim can end at edge 210 while the last visible sample is frame 209;
  • seeking to a selected clip’s end uses its last playable frame for preview.

Split math

Split a layer [s, e) at interior frame boundary p, where s < p < e:
For source-backed media, exact continuity means advancing the right output’s source start by the source time consumed by the left output:
At , this reduces to the elapsed composition time. For non- media, frame-step and listen across the boundary before continuing the edit. If exact continuity is critical, perform the structural split at , verify the boundary, and then apply and review the intended speed on each result.

Trim math

Trim the start

Move the left edge from s to p:
This preserves the same source sample at every unchanged composition frame.

Trim the end

Move the right edge from e to p:

Move without trimming

Move a layer by n frames:

Playback-rate mapping

For an active media layer at composition frame f:
At , one composition frame advances 2 / fps source seconds. At 0.5×, two composition frames advance 1 / fps source seconds. Draft FPS remains unchanged.
An animated GIF can restart its animation after a left trim or split. Treat every new GIF boundary as visually unverified until you play and frame-step across it.
Changing playback rate can make the requested source range exceed the available media. Inspect the layer’s final frames and audio tail after changing rate or trimming near a source boundary.

Caption timestamps

Caption tokens commonly carry millisecond start and end timestamps. To determine whether a token is active at frame f, the evaluator maps the composition-local time into milliseconds and compares it with token intervals.
A token starting at 2,500 ms maps to frame 75 at 30 fps. A timestamp such as 2,517 ms falls between frames 75 and 76; the evaluator must consistently apply its boundary rule. For editorial alignment, judge the visual result on the nearest frames rather than expecting arbitrary millisecond precision from a frame-based render. Caption page duration is entered in milliseconds with a minimum of 200 ms and 100 ms steps. The visual page transition still resolves against composition frames.

Keyframe timing

Keyframes are stored at whole composition frames. For adjacent keyframes at f0 and f1 with values v0 and v1:
The destination keyframe provides the easing for the segment leading into it. There is no subframe keyframe between integer frames.

Audio fades

Let a layer start at s, end at edge e, fade-in length fi, and fade-out length fo:
The fade handles preserve at least a one-frame separation when they approach one another. This prevents the transitions from crossing and keeps a valid middle interval.

Decibels and linear gain

For editor volume dB:
Examples: Amplitude is not perceived loudness, and clipping depends on the mixed signal. Monitor the combined result.

Timeline pixels and snapping

Timeline pixels are a view mapping, not authored time:
The snapping threshold is converted from a small screen-pixel tolerance into frames at the current zoom. Consequently, the number of frames inside the snap tolerance can change as you zoom while the pointer tolerance remains visually practical.

Worked frame-rate example

Suppose the opening shot in your draft is:
  • It occupies [0, 180), or six seconds.
  • Its last playable frame is 179.
  • Splitting at frame 72 creates durations 72 and 108.
  • The right half begins at source time 3.4 s (1.0 + 72 / 30).
  • Trimming the right half’s start from 72 to 87 advances its source start from 3.4 s to 3.9 s (15 / 30 = 0.5 s).
  • Nudging that trimmed half ten frames later changes only its composition from; its source start remains 3.9 s.

Timeline fundamentals

Apply the frame model to clips, tracks, and edit points.

Keyframe lanes

Apply composition-frame timing to animation tracks, values, and interpolation.