Frame Time Calculator: FPS to ms Frame Budget

Pick a target frame rate to get the frame time in milliseconds, then split that budget across rendering, physics, scripts, audio, UI and headroom. The calculator also shows how many physics ticks run per rendered frame, an FPS to ms table from 30 to 240 FPS, and the project.godot lines that set Godot 4 to match.

Step 1 of 3: Target FPS
Which frame rate do you want to hold?

60 FPS = 16.67 ms per frame

How to use it

  1. Pick 30, 60, 90, 120, 144 or 240 FPS or type a custom rate, choose whether V-Sync is on, and press Next.
  2. Drag the sliders to split the frame between systems; the others adjust so the total stays at 100%. Press Next.
  3. Pick the physics tick rate or type your own.
  4. Press Calculate frame budget to see milliseconds per system, physics ticks per frame and the reference table.
  5. Press Copy project.godot lines and paste them into your project.

FPS to milliseconds

Frame time in milliseconds is 1000 divided by the frame rate. 30 FPS gives 33.33 ms per frame, 60 FPS gives 16.67 ms, 90 FPS 11.11 ms, 120 FPS 8.33 ms, 144 FPS 6.94 ms and 240 FPS 4.17 ms. Everything the game does in a frame, from scripts to rendering, has to fit in that time or the frame is late.

Going from 30 to 60 FPS halves the budget, which saves 16.67 ms. Going from 120 to 144 FPS only takes 1.39 ms away, but it is 1.39 ms out of 8.33, so the higher you aim the more each millisecond counts. Profile in milliseconds rather than FPS, because a 1 ms cost means the same thing at any frame rate.

Leave headroom. Frame times vary from frame to frame, and the slowest frames are the ones players notice, so a budget that is 100% used on an average frame will drop frames in busy scenes.

Physics ticks and rendered frames in Godot

Godot runs physics and _physics_process() at a fixed rate set by physics/common/physics_ticks_per_second, 60 by default, while rendering runs as fast as the FPS cap and V-Sync allow. At 30 FPS with 60 ticks, every frame runs two physics ticks; at 144 FPS, most frames run none and some run one.

Godot simulates at most physics/common/max_physics_steps_per_frame ticks in one frame, 8 by default. If the frame rate drops below the tick rate divided by that limit, the game appears to slow down, so raise the limit when you raise the tick rate a lot. The calculator adds that line for you when a frame at your target needs more than 8 ticks.

When ticks and frames do not line up, objects that move in physics can look jittery. Physics interpolation (physics/common/physics_interpolation) smooths this by drawing objects between their last two physics positions. It arrived in Godot 4.3 for 2D and Godot 4.4 for 3D.

The Godot 4 settings the calculator writes

application/run/max_fps caps the frame rate; 0, the default, means no limit. display/window/vsync/vsync_mode is 1 (Enabled) by default; 0 is Disabled, 2 Adaptive and 3 Mailbox. With V-Sync enabled the frame rate cannot go above the monitor's refresh rate, whatever max_fps says.

Godot reads all of these when the project starts. To change them while the game runs, set Engine.max_fps, Engine.physics_ticks_per_second or call DisplayServer.window_set_vsync_mode() instead.

Frequently asked questions

How many milliseconds is 60 FPS?
16.67 ms per frame, because 1000 ms divided by 60 frames is 16.67. 30 FPS is 33.33 ms, 120 FPS is 8.33 ms and 144 FPS is 6.94 ms.
How do I convert FPS to frame time?
Divide 1000 by the frame rate to get milliseconds per frame. To go the other way, divide 1000 by the frame time in milliseconds.
What is a frame budget?
It is the time one frame may take at your target frame rate, split between the systems that run every frame. Setting it early tells each part of the game how much time it can use before it causes dropped frames.
How do I cap the frame rate in Godot 4?
Set application/run/max_fps in Project Settings, or Engine.max_fps at runtime. 0 means no cap. With V-Sync enabled, the monitor's refresh rate is also a cap.
Should physics run at the same rate as the frame rate?
Not necessarily. Godot's default of 60 ticks per second works for most games at any frame rate. Raise it for fast moving objects, and turn on physics interpolation if motion looks jittery when ticks and frames do not line up.

See all tools