Profiler Analyzer
Drop a FiveM profiler recording — client or server. Zoom through every frame like profiler view, and see which
script, event or thread eats your frame time, the exact file and lines behind it, and what to fix first.
Your file never leaves your browser. It is read on your computer, and only the summary is kept in memory.
1 · Profiler recording
client or server — it is detected automatically ·
2 · Resources folder
scans every script for loops, waits and heavy calls ·
Pick resources or the whole server folder (with server.cfg it also knows what is started). Only .lua and .cfg files are read; maps, clothing and streamed assets are skipped.
Nothing is uploaded — check it yourself: F12 → Network while it scans.
How to record a profile
The profiler is built into FiveM and FXServer. You record a few seconds while the problem happens, save it to a file, and drop that file above.
Client
- Open the game and press F8 to open the console.
- Start recording 1000 frames. At 60 FPS that is about 17 seconds; use a higher number to cover a longer action.
profiler record 1000 - Do the action you want to measure — open a menu, restart a resource, drive into the area that lags.
- You will see
Started recording, thenStopped the recordingwhen the frames are done. To stop early:profiler stop - Save it. You will see
Saving the recording to: client.jsonandSave complete.profiler save client.json - The file is in this folder (paste it into the Explorer address bar):
That is
%LOCALAPPDATA%\FiveM\FiveM.app\citizenC:\Users\<YourName>\AppData\Local\FiveM\FiveM.app\citizen.
Server
- Open the txAdmin Live Console (or the server console window).
- Start recording, trigger the action, and wait for
Stopped the recording.profiler record 1000 - Save it.
profiler save server.json - The file is in the server root, next to
server.cfg. With txAdmin that is insidetxData/<profile>.base, for exampleD:\SERVERS\myserver\txData\QBCore_C90A5B.base.
profiler record 1100Frames ≈ seconds × 60, plus a margin. The server ticks slower than the game renders, so the same number of frames covers more time there.
Tips. Record client and server separately, or both at the same time when you test one specific mechanic.
Keep the recording as short as the action allows: the file is smaller and the result is clearer. Use profiler status to check
whether a recording is running. Use profiler save, not profiler saveJSON — this tool reads the file save writes.
| Command | What it does |
|---|---|
profiler help | Lists the profiler commands. |
profiler record start | <frames> | stop | Starts an open recording, records a fixed number of frames, or stops. |
profiler resource <resource> <frames> | stop | Records one resource only. |
profiler save <filename> | Saves the last recording. This is the file to drop here. |
profiler saveJSON <filename> | Saves as text JSON. Not supported by this tool yet. |
profiler status | Shows whether a recording is running. |
profiler view [filename] | Opens a recording in the built-in Chrome DevTools viewer. |
Before / after comparison of two recordings is next on the list — follow #releases to hear when it ships. The profiler file format is not documented by Cfx; this reader was built from real recordings. If a file is rejected, tell us on Discord.