Short version

Your recorder writes a frame at every tick of its fixed frame rate. When the game hasn't produced a new one in time, it writes the last frame again. The file's timeline stays perfectly even, so the recorder reports no drops, but the picture freezes. Those repeated frames are the stutter you see, and they can be detected and removed after the fact.

What's actually happening

Recorders like OBS output a constant frame rate. At 60 fps that's one frame every 16.7 ms, no exceptions. The game, on the other hand, delivers frames whenever it finishes simulating one. In a smooth session that's also roughly every 16.7 ms. In a laggy session the gaps stretch to 50 ms, 200 ms, sometimes a full second.

When the recorder's tick arrives and there's no new frame from the game, it has to write something to keep the timeline consistent. So it repeats the previous frame. Your file ends up looking like this:

A → B → C → C → C → D → E → E → F

instead of

A → B → C → D → E → F → G → H → I

Every slot has a frame, so the "dropped frames" counter stays at zero. OBS forum regulars put it plainly: with an uneven source, it's almost impossible to capture true 60 fps without some skips or duplicates, and it comes down to frame pacing, not the recorder's own load.

Why speeding the clip up doesn't fix it

A tempting fix is to set the clip to 300% speed in your editor. That shortens the clip, but the repeated frames are still in it. At 3× the sequence above becomes A → C → C → E → F: you've thrown away real frames (B and D) and kept duplicates. Fast-forwarded laggy footage looks jerky for exactly this reason.

The right order of operations is: remove the duplicates first, then set the pace.

How to check whether your file has repeated frames

  • Step through frame by frame. In most editors the period key or arrow keys advance one frame. If the picture doesn't change for several presses while the timecode does, those are duplicates.
  • Look at the game's own clock. In BTD6, watch the round timer or a bloon's position. Repeated frames show the game state frozen while the video keeps "playing".
  • Compare file length to real gameplay. If a 30-second clip contains only a few seconds of actual movement when you scrub, most of its frames are repeats.

Preventing it on the next recording

  1. Use a hardware encoder. x264 on the CPU competes with the game for the same cores. NVENC, AMD AMF or Apple VideoToolbox move encoding off the CPU.
  2. Match the recording frame rate to what the game can hold. Recording at 60 fps when the game runs at 25 guarantees more than half the frames are duplicates. Record at 30.
  3. Lower the monitor refresh rate while recording. OBS forum veterans note that very high refresh rates load a single CPU thread and worsen pacing.
  4. Keep drivers and the recorder current and leave 20-25% free space on the recording drive. Full drives slow down writes and cause pacing hiccups.
  5. Reduce the game's own load. For BTD6 specifically, see why BTD6 lags in late rounds.

Removing repeated frames from footage you already have

Because duplicate frames are near-identical to the frame before them, they can be found automatically. A frame classifier compares each frame to the previous one, flags the ones that didn't change, and drops them. What's left is only the frames where the game actually moved. Re-timed to a constant frame rate, that plays back as continuous gameplay.

LagCut does this in the browser for BTD6 footage, and it also detects pause-menu visits so they're cut in the same pass. On a round-400+ recording from a creator's channel, it removed 159 of 208 frames in a 30-second window and produced 1.6 seconds of genuine gameplay. That's how much of the clip was repeats.