Why did my crossfade render as a hard cut in Sume Timeline?
The clip after a fade needs duration plus the fade length from its source. If the file is shorter, Timeline cuts instead and warns transition_downgraded_to_cut.

A fade into a slot is rendered as a hard cut when the clip in that slot is too short to supply its own duration plus the fade. Timeline 1.0 does not fail the job; it drops the transition, keeps every declared start where it was, and puts transition_downgraded_to_cut in warnings[].
The reason is how a crossfade works. While the fade runs, both clips are on screen, so the incoming clip has to be playing for the fade length before its own slot begins. A slot of 6 seconds with a 0.5-second fade therefore reads 6.5 seconds from its source file.
The rule, and a reproduction
The compiler compares the probed source length against source_in + duration + transition.duration for the slot that carries the transition. If the file is shorter, that boundary becomes a cut. We compiled a 12-second spine with two 6-second slots, where the second clip is 6.2 seconds long and asks for a 0.5-second fade. The result was one warning: "Source provides 6.20s from source_in; segment needs duration 6.00s + transition 0.50s. Boundary rendered as a hard cut; timeline position unchanged."
Note what did not happen. The slot is not shortened, the clip does not loop, and nothing after it shifts. Only the blend is lost.
| Incoming clip length | Slot duration plus fade | Result | Warning code |
|---|---|---|---|
| 6.2 s | 6.0 s plus 0.5 s | Hard cut at the declared start | transition_downgraded_to_cut |
| 6.5 s or longer | 6.0 s plus 0.5 s | Fade renders | none |
| 5.5 s | 6.0 s plus 0.5 s | Hard cut, and the slot itself is short so it also pads or loops | transition_downgraded_to_cut and a short-source warning |
Why the plan endpoint cannot warn you
Clip lengths are known only when the worker probes the files. The free POST /v1/timeline-1.0/plan call compiles with no probe, so it cannot predict this warning, and the Timeline docs say the same about pad and loop warnings. The first sign is in the render result.
Fixes, cheapest first
Check the real length first with video inspect, which returns probe data. Then pick one.
- Shorten the slot's
durationby the length of the fade so the file covers both. - Use a clip with at least
source_in + duration + fadeseconds, regenerating the shot if it came from a video model. - Lower
transition.duration. Fades up to 1 second are allowed, capped at half the shorter neighbour. - Accept the cut. If it is fine editorially, the warning is information only.
Because declared starts never move, the voiceover stays aligned either way. If you chain several fades, remember the cap of 8 adjacent fades; the chained transitions post covers it.
Sources
Related posts
More in Media tools
- Cut a 3-minute Reel into a 60-second teaser with video trim
Video trim returns a new MP4 for $0.02: start plus duration, exact or keyframe precision, optional audio drop. How to cut a teaser and re-base your timings.
- Cut a 5 minute episode into three 30 second teasers for 6 cents
Three video-trim jobs at $0.02 each cut three 30 second teasers from a 5 minute episode. Pick hooks at 0, 90 and 240 seconds and add a tail card in Timeline.
- Cut a clean voice reference from video: audio detach range, mono wav
Sume's audio detach takes a start and end range and can output mono wav at 16 kHz. Cut 10 seconds of a single speaker for $0.01, then check it before use.
- Cyber Monday half-banner: price card over a clip, compose stack
Stack a Sume-hosted price card above a product clip in one vertical shot with Timeline compose, at a flat $0.02 per job, then drop it into a Timeline.
Written by Sume