
Steady Frames Smoother frames, not just more of them.
You've probably had this happen. The FPS counter says 144, and the game still feels choppy when you turn the camera. That's because an average FPS number hides the frames that arrive late. A few uneven frames per second are enough to make movement feel off, even when the counter looks great.
Steady Frames goes after that unevenness. It doesn't try to push your FPS higher. It makes the frames you already get arrive at an even rhythm.
What it does A more precise frame limiter. Vanilla's limiter waits a fixed time after each frame finishes. So when one frame runs a little late, every frame after it gets pushed back too, and those small delays pile up as stutter. Steady Frames schedules each frame for a fixed moment instead. It sleeps for most of the wait and then times the last fraction of a millisecond precisely. If the game has a real hitch, like a world load or a big lag spike, it starts a fresh schedule instead of rushing out a burst of frames to catch up.
A frame-time overlay that tells you what's actually happening. Press F8 to cycle through:
off compact text: average FPS, 1% and 0.1% lows, worst frame, and jitter text plus a live frame-time graph, color-coded so spikes jump out An instant A/B switch. Press F9 to swap between Steady Frames and the vanilla limiter while you play. Watch the jitter number and the graph, and judge for yourself.
How to use it Set Max Framerate in Video Settings to a cap (60, 120, 144, whatever matches your monitor). The pacer only works when there's a cap to pace to. On "Unlimited" the overlay shows pacer idle. Press F8 to turn on the overlay. Press F9 a few times while turning the camera, and compare. You can rebind both keys under Controls → Miscellaneous. Settings live in config/steadyframes.json.
Compatibility Sodium: made to run alongside it. Sodium speeds up rendering, and Steady Frames evens out the timing between frames. They touch different parts of the game. Dynamic FPS: compatible. Steady Frames uses whatever frame cap the game hands it, so Dynamic FPS's reduced caps for background and AFK still apply. Menu and AFK frame caps from vanilla keep working the same way. Client-side only. Works on any server, and servers don't need it installed. Requirements Minecraft 26.3 Fabric API FAQ Will this raise my FPS? No, and that's on purpose. Lots of mods already raise FPS (Sodium is the big one). This one makes the frames you already get feel smoother.
Why measure jitter and 1% lows instead of FPS? Because they're the numbers you actually feel. Jitter is how much each frame's timing differs from the one before it. Low jitter means even, smooth motion. The 1% low shows how bad your slowest frames get, and those are the moments you notice as stutter.
Does it work with VSync? Yes. If you play with VSync on, setting a frame cap a little below your refresh rate often feels best, but try it both ways.
Found a bug or have numbers to share? Open an issue with your logs/latest.log and your F8 overlay readings with the pacer on and off. Real numbers from real setups help more than anything.

