Press Enter to search

Home › Guides › Resmon

FiveM Resmon High?
How to Read It Right & Fix the Real Causes

Resmon is the most misread tool in FiveM server administration. This guide shows what the numbers actually mean, which scripts deserve the blame - and why your 50-car pack shows 0.00 ms while players still complain about lag.

Updated: June 2026 10 min read By the FiveMRides Team

What Resmon Actually Measures

Open the console (F8) and type resmon: you get a live table of every running resource with CPU time and memory. The key column is CPU msec - the milliseconds of main-thread CPU time a resource consumes per frame. At 60 FPS your entire frame budget is 16.6 ms; every millisecond a script burns is a millisecond the game cannot spend on rendering.

Reading the numbers (rule of thumb)

0.00–0.10 ms idle - healthy script.
0.10–0.50 ms idle - sloppy but tolerable; worth a look if you run many of these.
0.50–1.00 ms idle - a problem; this script is polling something every frame.
>1.00 ms idle - fix or replace it. Three of these and you have lost 20% of the frame budget to scripts doing nothing.

Always compare idle (standing still, no UI open) vs active (using the feature). A menu costing 2 ms while open is fine; 2 ms forever is not.

The Big Myth: “My Car Pack Shows 0.00 ms, So It’s Fine”

Resmon does not measure your vehicles. A car pack is streamed content - models and textures loaded by the engine’s streaming system and rendered on the GPU. None of that is script CPU time, so a 4 GB pack of unoptimized cars sits in resmon at 0.00 ms looking innocent while it:

  • fills your players’ VRAM streaming budget with 30–60 MB texture dictionaries (the cause of texture loss),
  • forces GPUs to render 300–500k-polygon showroom meshes with no distance LODs,
  • tanks FPS for everyone near a car meet - while every script on the server reads green.

So the diagnostic is two-sided: resmon for script lag, vehicle optimization for rendering lag. If players report FPS drops around parked cars and your resmon is clean, the vehicles are the cause - run them through the Optimizer (40–70% size reduction, zero visible quality loss) instead of hunting ghosts in your scripts.

The Scripts That Actually Spike Resmon

1. Zero-wait loops

A while true loop with Citizen.Wait(0) runs every single frame. Fine for the few systems that need it (keybind capture), disastrous for distance checks or marker drawing. The fix is a dynamic wait: 500–1000 ms when the player is far from anything relevant, dropping to 0 only when close.

2. Per-frame distance math over big tables

Looping 200 shop locations with GetDistanceBetweenCoords every frame is the classic 1 ms+ idle offender. Use #(coords - playerCoords) on vector3s (cheaper), check less often, or switch to point-based zone systems that only wake up near a zone.

3. Event spam (server-side resmon)

Run resmon in the server console too. Scripts that fire network events on a timer for every player (position syncs, custom HUD updates) multiply with player count. Replace polling events with statebags or push-on-change patterns.

4. Always-on NUI

A HUD iframe re-rendering at 60 FPS costs CPU even when nothing changes. Send NUI messages on change only, not on a 100 ms timer - and watch the resource’s memory column grow if the page leaks.

Go deeper than resmon: the built-in profiler

Resmon tells you which resource is slow; the profiler tells you which function. In the F8 console: profiler record 500, reproduce the lag, then profiler view. The flame graph points at the exact Lua tick that burns your frame budget - no guessing.

The 15-Minute Action Plan

1. Baseline

Empty area, no UI, note every resource idling above 0.10 ms. That list is your script work queue.

2. Bisect

For each suspect: stop resource, watch the total drop. Confirmed offenders get the dynamic-wait / zone treatment, or a replacement.

3. Separate the lag types

Scripts clean but FPS still drops near vehicles? That is rendering load, not CPU - optimize the cars, check LODs, and read the full server optimization guide.

Resmon - Frequently Asked Questions

What is a good resmon value in FiveM?

Idle scripts should sit at 0.00–0.10 ms. Anything idling above 0.50 ms is polling every frame and worth fixing; above 1.00 ms is a real problem. Active states (menu open, feature in use) can legitimately cost more - judge scripts by their idle cost.

Why does my server lag when resmon shows nothing high?

Because resmon only measures script CPU time. Rendering load - unoptimized vehicle textures filling VRAM and high-poly models without LODs - never appears in resmon. If FPS drops near cars while resmon is clean, optimize the vehicle resources; that is the actual bottleneck.

Do car packs increase resmon?

No - a pure vehicle resource has no running script, so it shows ~0.00 ms. Its cost is VRAM and GPU rendering, which resmon cannot see. The exception: packs that bundle Lua (custom handling scripts, vehicle keys) do consume script time like any other resource.

How do I find which function makes a script slow?

Use the built-in profiler: in the F8 console run profiler record 500, reproduce the lag, then profiler view. The flame graph shows exactly which tick and function burns the time - far more precise than resmon’s per-resource totals.

Should I check resmon on the client or the server?

Both - they measure different machines. Client resmon (F8) finds scripts hurting player FPS; server console resmon finds scripts hurting tick rate and sync for everyone (event spam, heavy loops in server Lua). A healthy server needs both clean.

Scripts Clean? Fix the Other Half of the Lag.

Most “high resmon” complaints are actually rendering load from unoptimized vehicles. Cut your car resources 40–70% with zero visible quality loss.

Web-based • No download • Results in under a minute

Scroll to Top