A pure MLO runs no script code, so its cost lands in streaming and rendering on each player's PC. What matters is how much memory its models and texture dictionaries need, how far they stream, and how many interiors and props one location loads at once. Read the asset-size warnings FXServer prints when the map starts, compare the same route with the map on and off, then shrink or replace the asset that is too big. Use the checklist at the end before you buy the next one.
This guide was checked against the Cfx.re documentation and the FXServer source code on 7 November 2026. It describes procedures and documented limits. It is not a benchmark, and RPScripts did not measure frame rates for it.
Where MLO lag comes from
- Oversized assets. A texture dictionary (YTD) or model (YDR, YFT) that needs a lot of memory competes with everything else the game streams. FXServer warns about any asset over 16 MiB when the resource starts; above 48 MiB the warning adds that oversized assets can and will lead to streaming issues such as models not loading or rendering.
- Missing or poor LODs. Each placed entity has a LOD distance. A level-of-detail model with a larger distance stands in for the detailed model at range. Without one, the creator has to choose between the full model popping in late or streaming it from further away.
- Too much in one place. Several maps at the same block, optional props left switched on, or a city rework on top of single interiors all stream at the same time.
- Conflicts that look like lag. Two maps that edit the same coordinates can flicker, lose collision or show missing walls. That is a placement conflict, not a performance problem; the MLO compatibility guide covers the staging test for it.
Step 1: Record a baseline with the map off and on
- Use a staging server with the same artifact, game build and resources as production.
- Pick one route: approach from outside, walk through the entrance, cross every floor, leave again. Keep weather, time of day and client settings fixed.
- Walk the route with the map stopped, then with it started. Note FPS, any objects that load late and any textures that stay blurry.
- Repeat with a second client that has never joined before, so a cold download and cache is part of the test.
If the problem only appears when a second map is also running, treat it as a placement conflict first and run the compatibility test before you touch any asset.
Step 2: Read the FXServer asset-size warnings
When a resource with streamed files starts, FXServer checks every GTA V resource file in it and prints a line such as Asset mymap/mymap_txd.ytd uses 34.0 MiB of physical memory. The size is the memory the asset needs once loaded, read from the file header, not the size of the download. FXServer checks physical and virtual memory separately:
| Memory per asset | Console output |
| 16 MiB or less | No warning |
| Over 16 MiB | Warning in blue |
| Over 32 MiB | Warning in yellow |
| Over 48 MiB | Adds: oversized assets can and will lead to streaming issues |
| Over 64 MiB | Warning in red |
Copy every warning for the map into your notes. These are the files to fix first, and they are the numbers to ask a creator about before buying. A clean console does not prove that a map performs well; it only means no single file crosses these thresholds.
Step 3: Check streaming memory and pools on the client
Three client tools show what the map costs in the game. strmem and resmon are developer commands: on FiveM Legacy, start the client with +set moo 31337; on FiveM for GTAV Enhanced, the server needs sv_devMode true. Use them only on your own development server.
strmem true lists the streaming memory used by individual assets and gives an overall view. Stand inside the MLO and look for its files near the top.
- F8 > Tools > Streaming > Pool Monitor shows how full the game's pools are. Interiors, buildings, texture dictionaries and occlusion data each use their own pool (for example InteriorProxy, Building, TxdStore and the Occlusion pools).
resmon true opens the resource monitor. A pure map shows almost no CPU time there, but its Streaming column shows how much streaming memory the resource uses. Compare that column with the map on and off.
If the console answers "Access denied", the guide to F8 console commands explains why.
The CPU columns in resmon matter for scripts that come with the map, such as doors, elevators or prop toggles. A low CPU value does not mean the map is cheap to render, so keep the FPS notes from Step 1 next to it. The resmon guide shows how to compare one script action at a time.
Step 4: Fix oversized textures and models at the source
- Keep the original package and the creator's source files. Work on a copy.
- For a texture dictionary, open it in a YTD editor such as CodeWalker or OpenIV, export its textures, reduce the ones that are larger than the surface needs, and import them back with the same names. Texture names are referenced by the models, so never rename one alone.
- Restart the resource and read the console again. The warning should be gone or lower.
- For a model that is too heavy, the fix belongs in the 3D source: simpler geometry, a proper LOD model, or a split into smaller pieces. The Cfx.re assets manual shows the HD and LOD setup in CodeWalker, including the
LodDist and parent YMAP links.
- Walk the baseline route again and compare it with your notes.
For maps with a lot of collision or map files, Cfx.re documents the developer command save_gta_cache. It saves cache data to %AppData%\CitizenFX; copy that file to the resource's root folder and list it under files in fxmanifest.lua, so players load it and their initial loading is faster.
Do not delete collision, occlusion or LOD files to make a warning disappear. That trades a size warning for missing walls, invisible floors or interiors that render through each other.
Step 5: Switch off what you do not use
Many interiors ship optional prop groups called entity sets, for example a furnished and an empty version of a room. A script turns them on with ActivateInteriorEntitySet and applies the change with RefreshInterior. If the map's documentation lists entity sets, enable only the ones your server uses and check which resource controls them.
Also check the location itself. A city rework and a single MLO at the same block both stream there. Keep one owner per location and stop the map you replaced, including any IPL loader that still enables the vanilla interior.
Step 6: Game build, edition and pool sizes
- Game build.
sv_enforceGameBuild selects the build clients use, can only be set at startup, and every build includes the content of the builds before it. If a creator lists a minimum build, set that build or a newer one. FiveM for GTAV Enhanced currently supports only the latest build.
- Edition. On Enhanced, a resource can carry a
stream_enhanced folder that replaces stream. Without that folder, Enhanced loads stream, which Cfx.re's Enhanced notes mark as deprecated. Ask the creator whether the map was tested on Enhanced or ships stream_enhanced files, and test it on staging before you rely on it.
- Pool sizes.
increase_pool_size raises a named pool, only at server startup. Cfx.re publishes the allowed pools and the maximum increase for each; requests outside them have no effect. Clients restart the game when they join a server with different pool settings; with the same settings, only on their first connection. Raise a pool only when the Pool Monitor shows it near its limit, not by copying another server's list.
When the problem is texture loss on one PC
If only one player sees blurry or missing textures, and on other servers too, start on that client: graphics settings, mods and cache. The texture loss guide separates client checks from server checks. If every player loses textures in the same place, return to Step 2 for the maps there.
MLO checklist before you buy
The same questions apply to paid MLOs and to free MLO releases; a free map can carry the same oversized files.
- Asset sizes. Ask for the FXServer console output when the map starts, or a file list with sizes. Any line over 48 MiB needs an explanation; lines over 16 MiB are worth a question.
- Detail and LODs. Ask whether exterior models have LOD models and how far they stream. "Optimized" without details says nothing.
- Game build and edition. Check the minimum game build and whether Enhanced files are included.
- Location. Get the coordinates, the vanilla interior or IPL it replaces, and the maps it is known to conflict with. Compare them with what already runs at that spot.
- Dependencies. Check for required loaders, door or elevator scripts and entity sets, and which framework they need.
- Editability. Cfx.re Asset Escrow can encrypt YFT, YDD and YDR model files. In an escrowed map you cannot rework those models or their detail yourself, so every fix waits for the creator. Escrow is not yet implemented on FiveM for GTAV Enhanced.
- Test before production. Use the creator's showcase server if there is one, then your own staging server with the baseline route from Step 1.
- Support and updates. Look for a support contact, a changelog and a written refund policy.
When a map passes these questions, follow the steps to install and verify an MLO on staging and walk the baseline route before it goes live.
Disclosure: RPScripts sells MLOs and interiors. Their downloads ship without escrow encryption.
Sources