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.

4 min readSume
All posts

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.

Transition outcomes when the incoming clip is short (read 2026-10-03)
Incoming clip lengthSlot duration plus fadeResultWarning code
6.2 s6.0 s plus 0.5 sHard cut at the declared starttransition_downgraded_to_cut
6.5 s or longer6.0 s plus 0.5 sFade rendersnone
5.5 s6.0 s plus 0.5 sHard cut, and the slot itself is short so it also pads or loopstransition_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 duration by the length of the fade so the file covers both.
  • Use a clip with at least source_in + duration + fade seconds, 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

All Media tools posts

Written by Sume