23.976 fps clip for a YouTube Short: omit output.fps in Sume
Sume's output.fps accepts 24, 25, 30 and 60. For a 23.976 fps source, omit it so the render matches the source, because YouTube keeps native frame rates.

Short answer
Leave output.fps out. Timeline 1.0 then renders at the rate of your sources, which keeps a 23.976 fps clip at 23.976 instead of forcing it to 24. YouTube's help page on frame rate says it supports native frame rates without resampling (read 2026-10-05), so there is no reason to convert.
What the two sides document
YouTube's frame rate and aspect ratio page says it supports native frame rates without resampling, and it describes no letterbox or pillarbox for a video that matches the frame (read 2026-10-05). It does not give vertical specs, so it does not change the 9:16 advice for Shorts. The Shorts help page covers the other half: square or vertical, up to 3 minutes.
On the Sume side, output.fps accepts 24, 25, 30 or 60. If you send a value that differs from a source's rate, the job repeats or drops a frame at intervals, which shows up as judder on motion, and the result carries an output_fps_resamples_sources warning with the rate the sources wanted. That is the signal that you chose a rate the footage did not have.
Choosing the value
| Your sources | output.fps | What happens |
|---|---|---|
| All 23.976 fps | Omit | Renders at the source rate, no resample |
| All 23.976 fps | 24 | Resamples, warning output_fps_resamples_sources |
| Mixed 30 and 60 fps | Omit | The longest video sources decide the rate |
| All 60 fps | 60 | Matches, no resample |
| Stills only | Omit | Stills have no rate, so 30 applies |
Check the rate before the timeline
Run video inspect on each clip with frames set to false to get the probe only, and read the frame rate there. If a clip is the odd one out, either replace it or accept the resample warning for that render. Trim keeps the source frame rate unless you send an output block, and the output block is exact-precision only, so a keyframe trim never changes the rate.
A trim with output.fps set to 24 or 30 is a deliberate conform. Use it when you really want to normalize a mixed folder before assembly, and do it once, not in both trim and timeline.
import json
rates = {"a.mp4": 23.976, "b.mp4": 23.976, "c.mp4": 30.0}
if len(set(rates.values())) == 1:
print("omit output.fps; sources agree at", set(rates.values()))
else:
print("mixed rates:", json.dumps(rates), "- expect a resample warning")After the render
Read warnings[] in the job result. An empty list means no resample happened. The render is $0.10 per ceil(output minute) either way, so a 60-second Short is $0.10.
If you need a deliberate conform, for example to join a 23.976 fps clip with a 30 fps clip into one evenly paced piece, do it once and name it. Either set output.fps on the timeline and accept the resample warning, or conform each odd clip with an exact video trim that has an output block. Doing it in both places stacks two resamples. Keep a note of the original rate beside the final file so a later re-render starts from the same assumptions.
For a one-off Short from a single camera, the simplest path needs no frame rate decision at all: trim the clip, put it in one slot, omit output.fps, and upload.
Sources
Related posts
More in Media tools
- 3:2 camera clip to 9:16: crop width 0.375, scale to 1080x1920
A 3:2 clip needs a crop of 0.375 of its width, centered at x 0.3125, to become 9:16. The video-filter request, the rounding, and what you lose.
- 3:4 portrait clip to 9:16: crop 0.75 of the width, scale to 1080x1920
A 3:4 portrait clip is already tall. Crop 0.75 of its width (x 0.125), keep full height, scale to 1080x1920. Numbers and the video-filter request.
- 4:3 tablet video to 9:16: the 0.4219-width crop in video filter
Crop a 4:3 clip to 9:16 with video-filter: width 0.4219, x 0.2891, full height, then scale to 1080x1920. Numbers, rounding, and the free check.
- 4K 3840x2160 to 9:16: a 1214x2160 strip, then 1080x1920
A 4K UHD clip cropped to 9:16 keeps a 1214x2160 strip, more pixels than 1080x1920 needs. The fractions, the scale-down, and the 300-second limit.
Written by Sume