Quick answer: Physics runs at a fixed 60 ticks per second while frames render at the display rate. An object moved in _physics_process() and a camera moved in _process() (or a 144 Hz monitor) disagree about where things are each frame, which looks like jitter. Turn on physics interpolation, or keep everything that moves together in the same callback.

The game is smooth at 60 Hz and stutters at 144 Hz, or the player looks fine but the background shudders when the camera follows. That pattern is almost always a mismatch between the physics tick and the render frame.

What is going on

_physics_process(delta) runs a fixed number of times per second (60 by default). _process(delta) runs once per rendered frame. On a 144 Hz display, some frames happen between two physics ticks and some frames get two ticks. A body moved only on ticks therefore advances unevenly per frame, and anything moved per frame (such as a camera following it) amplifies the difference.

Rule of thumb

Fix 1: enable physics interpolation

Godot 4.3 added physics interpolation for 2D and Godot 4.4 added it for 3D. It renders bodies smoothly between their last two physics positions:

Project Settings > Physics > Common > Physics Interpolation = On.

After enabling it, call reset_physics_interpolation() whenever you teleport something, or it will visibly slide from its old position:

func respawn():
    global_position = spawn_point
    reset_physics_interpolation()

Fix 2: put the camera on the same clock

Without interpolation, make the camera update at the same rate as its target. For Camera2D, set Process Callback to Physics. For a custom follow script, move the camera in _physics_process() too.

Fix 3: always scale by delta

Hard-coded per-frame movement runs at different speeds on different machines and stutters when frame times vary:

# frame-rate dependent
position.x += 4

# correct
position.x += speed * delta

Fix 4: check for real frame drops

If the Debugger's Monitors tab shows frame time spikes, the stutter is a performance problem, not timing. Look at the Profiler for scripts, shader compilation on first use, or loading on the main thread.

Quick test

Set Physics Ticks Per Second to 144 temporarily. If the jitter disappears on a 144 Hz monitor, the cause is the tick/frame mismatch and interpolation is the right fix — not a permanently higher tick rate.

Related fixes