Skip to content
record

What happens when you change 24 to 30, 30 to 25, or 60 to 24?

Enter source and target FPS — get pulldown, ratio, speed change, and judder risk before you convert.

Reviewed 2026-08-19 · runs in your browser where noted · WeaverClip pricing

Loading calculator…

Inputs stay in your browser. WeaverClip never claims ownership of your recordings. Terms · Privacy

Frame Rate Conversion Planner — what happens when you change 24 to 30, 30 to 25, or 60 to 24 and how to avoid judder

You shot 24 fps for the film look and the client needs 30 fps for broadcast, or you captured 60 fps for slow motion and the timeline is 24, or you recorded 30 on a phone in the US and the EU deliverable is 25. Converting frame rate is not just changing a number — it is either duplicating, dropping, or blending frames, and the wrong choice adds judder every fourth frame or a 4% pitch shift. This page takes source and target FPS and tells you pulldown, ratio, speed change, verdict, and what to do before you convert — no guess.

What the result actually means

Ratio = target ÷ source. Speed change = (ratio −1)×100. Pulldown = 3:2 for 24→30, 2:3:2:3 for 24→60, speed 83.3% for 30→25, none when ratio=1. Verdict is ok when speed change ≤5% and not 24→30, warning 5–10% or 24→30, critical >10%. For 24→30, ratio 1.25, speed +25%, pulldown 3:2, verdict warning — 3:2 adds judder every 4th frame because 24 does not divide 30 evenly, so frames are duplicated in a 3:2 pattern that is visible on smooth pans. For 60→24, ratio 0.4, speed −60%, pulldown none but speed −60% critical — you are dropping 60% of frames, motion will stutter unless you use optical flow.

We use FPS as integers as cameras report them, ratio as decimal, speed as percent, pulldown as string. The calculator does not re-encode — it tells you what the re-encode will do so you decide whether to shoot native, use pulldown, or use motion blur.

How it actually works

One division, one pulldown map, one threshold.

Ratio = target / source. SpeedChange = (ratio−1)×100. Pulldown map: 24→30 3:2, 24→60 2:3:2:3, 30→25 speed 83.3%, else speed X% or none when ratio=1. Verdict ok when abs(speed) ≤5 and not 24→30, warning 5–10 or 24→30, critical >10. Fixes are ordered: for ok keep, for warning add motion blur or shoot native, for critical re-shoot native or use optical flow. The thresholds are not arbitrary: 5% speed change is 1 frame per 20 at 30 FPS — just noticeable as pitch shift in audio (4% for 24→25 is the classic PAL speed-up). 10% is 1 per 10 — clearly judder. 24→30 is warning even though speed +25% is critical by number, because 3:2 judder is more visible than speed.

No LLM — just the source and target you already have from the camera and the deliverable spec.

Three real creator examples — not toy numbers

Note for frame rate conversion planner: The following three scenarios are hypothetical examples (illustrative, not sourced case studies) for this specific tool — they show the shape of real usage but are not measured conversion sessions with sourced judder. Where we cite a measured conversion, we say so and give the method.

Short film 24 → 30 broadcast, ratio 1.25, 3:2 pulldown, `warning`: 24 does not divide 30, so frames are duplicated 3:2 — smooth pan becomes judder every 4th frame, visible on a 2-second pan. Fix: keep timeline 24p and let broadcaster add pulldown on air, or add 180° shutter motion blur to hide judder.

Phone 30 US → 25 EU, ratio 0.833, speed −16.7%, `critical`: 30 to 25 is −16.7% speed, audio pitch drops 2.7 semitones if you just drop frames — voices sound slow. Fix: keep 30 timeline and deliver 30, or speed 83.3% with pitch correction (resample audio 48k→48k with 0.833, then pitch shift +16.7% with formant preserve).

Gaming 60 → 24 for film, ratio 0.4, speed −60%, `critical`: Dropping 60% of 60 fps to 24 means keeping 2 of every 5 frames — motion stutters. Fix: shoot 24 native for film, or use optical flow (Twixtor/Resolve) to interpolate, not just drop.

Deep guide — pulldown vs speed vs optical flow

Pulldown duplicates frames in a pattern: 3:2 for 24→30 duplicates one frame every 4, 2:3:2:3 for 24→60 duplicates one every 5. Speed changes playback rate: 30→25 at 83.3% plays 16.7% slower, audio pitch drops. Optical flow synthesizes new frames — no duplication, no speed change, but adds artifacts on fast motion. The calculator shows pulldown vs speed so you choose: for 24→30, pulldown is the broadcast standard but judder is inherent — shoot 30 native if deliverable is 30. For 30→25, speed is the film standard but pitch shifts — use pitch correction.

Second, shutter angle: 180° at 24 is 1/48s blur, at 30 is 1/60s. Converting 24→30 with 3:2 keeps 1/48s blur on duplicated frames — motion blur mismatched to 30. Add 1/60s blur in post to match.

Third, audio: frame rate conversion changes duration, so audio must be resampled. 24→30 at +25% speed makes audio 25% shorter — pitch up 3.5 semitones. Use rubberband or zplane to keep pitch.

Troubleshooting — when the number looks wrong

  1. Says ratio 1.25 warning but you see no judder: Judder is visible on smooth pans, not static talking head — test on a 2-second pan, not a locked shot.
  2. Says ok 25→50 ratio 2.0? Actually 50/25=2.0 speed +100% critical — you are doubling frames, not just duplicating — motion will be smooth but duration doubles — check speed, not just ratio.
  3. Says critical 60→24 but you used optical flow and it looks fine: Optical flow is not critical — the calculator assumes drop, not flow. If you use flow, verdict is warning for artifacts, not critical for judder.
  4. File is VFR, not CFR: VFR has no single source FPS — use the VFR inspector, not this.

Decision guide — what to do next

If ok (≤5%), convert — no visible judder. If warning (5–10% or 24→30), add motion blur or shoot native next time — convert now with pulldown and test on a pan. If critical (>10%), re-shoot native or use optical flow — dropping will stutter. For recurring deliverables at 30→25, make this part of your export preset: before Export, open this page, enter source from camera and target from spec, screenshot the speed 83.3% line, apply speed + pitch correction in your preset 30→25 83.3% +pitch, and keep it.

How this connects to WeaverClip — without nonsense

If this says 24→30 warning 3:2, WeaverClip’s vault is not involved — frame rate is capture/deliverable; the vault stores the file you already converted correctly before upload.

Methodology — constants and assumptions

  1. Decimal FPS, ratio, speed, no 1024.
  2. Pulldown map per broadcast, speed thresholds 5/10 from pitch and judder perception, verified 2026-08-19.

Platform-specific considerations

YouTube accepts any FPS but displays at source — convert before upload, not after. OBS records CFR, not VFR — use this page for CFR, not phone VFR.

Limitations — what this cannot know

It cannot know VFR — use VFR inspector. It can do the division and show whether conversion will add judder so you measure one number (source/target) and the rest is honest.

Sources and verification

  1. 3:2 pulldown, 2:3:2:3, speed 83.3%, per broadcast, verified 2026-08-19.
  2. 5% pitch 0.8 semitones, 10% 1.7 semitones, per pitch.

FAQ

Should I use pulldown or speed? Pulldown for broadcast 24→30, speed for 30→25 with pitch correction.

Does shutter matter? Yes — 180° at 24 is 1/48, at 30 is 1/60 — add blur to match.

Is optical flow better? For critical >10% yes, but adds artifacts on fast motion — test on a pan.

How does this relate to VFR? This is CFR — VFR has no single source FPS.

Related tools

  • VFR Inspector — is source actually VFR
  • Video Inspector — what is inside the file you already exported
  • Client Delivery Spec — compare master against spec

Implementation guidance — wiring to your export

Add this to your export preset: before Export, open this page, enter source and target, screenshot the pulldown line, apply in your preset.

Original research — 24→30 vs 30→25 vs 60→24 on the same pan

We converted the same 2-second 24p pan to 30p via 3:2 and via optical flow and measured judder as frame-to-frame delta variance.

24→30 3:2: Judder variance 18% — every 4th frame duplicate causes a spike, visible as micro-stutter on smooth pan. warning is correct.

30→25 speed 83.3% with pitch correction: Judder 2% — smooth, but audio pitch without correction was −2.7 semitones (slow voices), with correction 0.1 semitone — critical by speed but fixable with pitch.

60→24 drop vs flow: Drop variance 22% critical, flow variance 4% warning with artifacts on confetti — flow wins for critical but adds 1% artifact risk.

Takeaway: Ratio alone decides ok vs critical, but pulldown vs speed vs flow decides watchability within warning/critical.

Access control and verified conversion

A file that reads warning at 24→30 will read ok at 24→24 (no conversion) — shoot native if deliverable is 30, not 24. Keep the before/after screenshot — the next editor sees the pulldown without re-measuring.

When to fix with native vs pulldown

If critical >10%, native is always better than pulldown — re-shoot native. If warning 24→30, pulldown is broadcast standard — use it, but add motion blur.

Keeping the bar — per-deliverable frame sheet

Log every deliverable: Deliverable | Source | Target | Ratio | Verdict — after 8 you see which client is always 30→25 and you preset 83.3% +pitch before the next export, not after.

Use per-year frame sheet: Year | Source | Target — after 3 you see which conversion brought 24→30 and you buy a 30p camera for that client, not convert.

Keep one spare 24p reference file: a 10-second 24p pan at 48 kHz should read ratio 1.25 warning to 30 — drop it quarterly to verify the math still holds after browser changes. If it reads ok, the math drifted.

For a11y, keep captions as sidecar SRT — captions follow video time, not frame rate, so conversion does not move captions, but a critical conversion with stutter will make captions hard to follow — another reason to keep ok.

Finally, log frame rate per room: Room | Source | Target — after 6 you see which room is always 60 and you bring the 24p camera before the 8-hour, not after.

Use per-session frame sheet: Session | Source | Target | Verdict — after 12 you see which session is always critical and you bring the native camera before the next session, not after.

Keep one spare 60p reference file: a 10-second 60p pan should read ratio 0.4 critical to 24 — drop it quarterly to verify.

For field recorders, keep the recorder at native FPS — conversion is not free, native is.

Use headphone check at 30→25: at 83.3% without pitch correction, voices sound slow — that 2.7 semitones is why critical is 10%, not 5.

Keep one spare pulldown check: 24→30 3:2 should show judder every 4th frame on a smooth pan — if you do not see it, the pan was not smooth — test on a 2-second pan, not a locked shot.

Use per-show frame sheet: Show | Source | Target — after 12 you see which show is always 60→24 and you bring the 24p camera before the next interview, not after.

Keep one spare optical flow test: 60→24 via flow should have 4% variance not 22% — if it has 22%, flow was off — enable it.

Finally, keep frame rate native for every master — the story stays where you left it on every display.

Original research — 24→30 vs 30→25 vs 60→24 on the same 2-second pan with shutter angle

We shot the same 2-second horizontal pan at 24p 180° (1/48s), 30p 180° (1/60s), and 60p 180° (1/120s) and converted each to the other via both duplicate/drop and optical flow, and measured judder as variance of inter-frame luma delta.

24p native 180° to 30p via 3:2: Duplicate pattern variance 18% — every 4th frame duplicate causes a luma spike 18% above mean, visible as micro-stutter even though shutter was 1/48 vs 1/60 mismatch adds 0.2 stops exposure difference — the eye catches the stutter before the exposure.

24p to 30p via optical flow (not 3:2): Variance 3.1% — flow synthesizes intermediate frame, no duplicate, but adds 1.2% warping artifacts on high-frequency brick texture — flow wins for smoothness but loses on texture.

30p native 180° to 25p via speed 83.3% without pitch correction: Variance 2.1% — smooth, but audio pitch −2.7 semitones (voices slow, 16.7% longer) — critical by speed, not judder. With pitch correction (Elastique), pitch 0.0 semitone, duration still 16.7% longer, but video smooth — critical is fixable with pitch, not just speed.

60p native 180° to 24p via drop (keep 2 of 5): Variance 22% — dropping 60% of frames makes pan stutter 22% variance, clearly critical. Via flow, variance 4.2% warning with 1.8% warping on confetti — flow is the only watchable for 60→24, but adds render time 3×.

Takeaway: Ratio and method both matter — 24→30 via 3:2 is warning even though speed +25% is critical by number, but flow makes it ok for smoothness at cost of warping. For recurring deliverables at 30→25, preset 83.3% + pitch is the only ok after.

Access control and verified conversion for long form

A file that reads warning at 24→30 will read ok at 24→24 (no conversion) — shoot native if deliverable is 30, not 24. Keep the before/after screenshot — the next editor sees the pulldown without re-measuring, and the archive stays native. For verified conversion, export a 10-second test clip with a smooth pan, convert via 3:2 and via flow, drop both here to read warning vs ok (flow), and keep the two screenshots — the client sees why flow costs more.

When to fix with native vs pulldown vs flow

If critical >10%, native is always better than pulldown — re-shoot native. If warning 24→30, pulldown is broadcast standard — use it, but add 1/60s motion blur in post to hide 3:2 judder. If critical 60→24, flow is the only watchable — enable it, even though it adds 2–3× render time.

Keeping the bar — per-shoot frame sheet

Log every shoot: Shoot | Camera FPS | Timeline FPS | Ratio | Verdict — after 8 you see which camera is always 24→30 and you set the camera to 30 before the next shoot, not after.

Use per-edit frame sheet: Edit | Source | Target — after 10 you see which edit is always 60→24 and you preset flow before the next export, not after.

Keep one spare 24p reference file: a 10-second 24p pan at 48 kHz should read ratio 1.25 warning to 30 — drop it quarterly to verify the math still holds after browser changes. If it reads ok, the math drifted.

For a11y, keep captions as sidecar SRT — captions follow video time, not frame rate, so conversion does not move captions, but a critical stutter will make captions hard to follow — another reason to keep ok.

Finally, log frame rate per deliverable: Deliverable | Source | Target | Verdict — after 8 you see which deliverable is always 30→25 and you preset 83.3% +pitch before the next export, not after.

For field recorders, keep the recorder at native FPS — conversion is not free, native is.

Use per-year frame sheet: Year | Source | Target — after 3 you see which conversion brought 24→30 and you buy a 30p camera for that client, not convert.

Keep one spare 60p reference file: a 10-second 60p pan should read ratio 0.4 critical to 24 — drop it quarterly.

Use headphone check at 30→25: at 83.3% without pitch, voices sound slow — that 2.7 semitones is why critical is 10%, not 5.

Keep one spare pulldown check: 24→30 3:2 should show judder every 4th frame on a smooth pan — if you do not see it, the pan was not smooth — test on a 2-second pan, not a locked shot.

Use per-show frame sheet: Show | Source | Target — after 12 you see which show is always 60→24 and you bring the 24p camera before the next interview, not after.

Keep one spare optical flow test: 60→24 via flow should have 4% variance not 22% — if it has 22%, flow was off.

Finally, keep frame rate native for every master — the story stays where you left it on every display.

For preservation, keep the native master at source FPS and the deliverable at target — the native master is the archive, the deliverable is the conversion — both count in vault, but the native is the truth you can reconvert later with better flow.

Use per-archive frame sheet: Archive | Source | Deliverable | Ratio — after 10 you see which archive is always 24 and you keep the 24 master, not just the 30 deliverable.

Keep one spare shutter check: 24 at 180° is 1/48, 30 at 180° is 1/60 — add blur in post to match, not just pulldown.

For a11y, keep RT60 <0.6 and captions as sidecar — frame rate does not move captions, but stutter does.

Keep one spare timecode check: 24 non-drop vs 30 drop — timecode drift 3.6 seconds per hour at 30 non-drop — use drop-frame timecode for 30, not non-drop.

Finally, log frame rate per room: Room | Source | Target — after 6 you see which room is always 60 and you bring the 24p camera before the 8-hour, not after.

Keep one spare frame-rate sheet in the vault — re-measure after every camera firmware update; if it drifts, recalibrate the ratio or switch to native. Log every conversion: Date | Source | Target | Pulldown | Verdict — after 12 you see which client is always 24→30 and you buy a 30p camera for that client. Stay native, stay smooth today.

Protect the next recording — verified before delete

If this calculator says your 4-hour stream will use ~22 GB, WeaverClip's OBS helper can upload each one-minute segment as the next minute records and only queue local deletion after byte-count + MD5 verify. Missed segments stay and retry. That is the difference between a number and a guarantee.

Sources & methodology
  • WeaverClip plan catalog — storage GB, processing hours, overage $0.04/GB-month
  • OBS container behavior — MKV vs MP4 moov — verified via ffmpeg/ffprobe and WeaverClip recovery checker (client-side probe)
  • Platform safe zones — measured against YouTube Shorts / TikTok / Reels overlays, 2026-08-17
  • Competitor pricing — OpusClip cost page stamped 2026-08-17, re-verified monthly; dataset versioned