A poorly built MLO can drop frame rates by 30–40 FPS inside. The frustrating part is that these drops often appear only with players present, not during solo testing. Most MLO performance problems come from three sources — and each one has a clear fix.
Why Custom Interiors Destroy FPS
FiveM renders MLO interiors using the same engine as GTA V's native interiors, which means occlusion culling, level-of-detail (LOD) switching and portal-based visibility all apply. When an MLO ships without proper occlusion data, the engine renders every room simultaneously instead of only what the player can see — spiking draw calls from ~200 to 1,500+ per frame.
The three root causes, in order of frequency:
- Missing or misconfigured occlusion portals between rooms
- No LOD entities — every prop renders at full detail regardless of distance
- Too many individual streaming entities instead of merged static meshes
Occlusion Portals
Portals are invisible planes placed on every opening (doorway, window, archway) that tell the renderer: only draw the next room when the player can see through this opening. Without them, the renderer has no visibility information and falls back to rendering everything.
To check an MLO's portal configuration, open it in CodeWalker and enable View → Show Portals. Every interior opening should show a coloured portal plane. Missing portals appear as dark gaps with no overlay.
Adding portals to an existing MLO requires the source files (the original .ydr or editing environment). If you purchased an MLO without portals, contact the author — this is a fundamental quality issue, not a configuration option.
LOD Configuration
Every interior entity should have at minimum two LOD levels:
- High (0–40m): full polygon detail
- Medium (40–100m): reduced polygon count, simplified normals
Props without LODs render at full detail at all distances. In a large interior with 400 decorative props, this multiplies draw calls by the number of visible props regardless of how far away the player is.
Entity Streaming and the 300-Entity Limit
FiveM has a default client-side entity streaming limit of 300 active entities. Large MLOs with many individually placed props can approach or exceed this. Two fixes:
- Increase the limit in
server.cfg:# Use carefully — higher values increase client memory usage setr sv_maxEntityStreaming 500
- Better: merge static props into combined mesh entities during the build phase. A bank lobby with 200 chairs and desks becomes 3 merged entities instead of 200 individual streaming objects.
Benchmarking Your MLO
Use the FiveM profiler to measure render thread time inside the interior:
-- In F8 console while standing inside the interior: profiler record 60 profiler save
Open the saved profile and check the DrawScene thread time. Under 12ms = acceptable. 12–20ms = investigate draw call count. Over 20ms = occlusion is not working and every room is rendering simultaneously.
The Bank MLO — Downtown Interior ships with full portal occlusion, merged static meshes and documented LOD levels — benchmarked at 60+ FPS on mid-range hardware with 64 players on the server.
FAQ
What is the main point of FiveM MLO Optimization: Hit 60+ FPS in Custom Interiors?
Occlusion portals, LOD configuration and entity draw limits — a technical breakdown of every lever you can pull to keep frame rates high inside custom-built FiveM interiors.
Is this guide updated for FiveM in 2026?
Yes. The article is written for current FiveM server owners in 2026, with recommendations focused on txAdmin, modern frameworks, resource performance, database reliability, and stable RP server operation.
Does this apply to ESX, QBCore, and Qbox servers?
Most guidance applies to modern FiveM servers using ESX, QBCore, or Qbox. When a recommendation is framework-specific, the article calls that out directly.
What should I do after reading this guide?
After reading, test the setup on a staging server first. If you want a ready-made option, compare it against Bank MLO — Downtown Interior and make sure it fits your framework, database, and performance requirements.