The Developer Console is a tool for debugging your experience when testing in Studio or running it in production. It shows log messages and errors similar to the Output window and detailed information on Memory and Networking.
To open the Developer Console while testing or playing an experience, type /console into the chat or press F9. You can also use the in-experience settings:
- Open the in-experience Settings.
- Scroll down until you see Developer Console.
- Next to Developer Console, click Open.
The shortcut bar at the top of the console shows the number of critical errors and warnings, client memory usage, and average ping time. Click any of these to jump to its corresponding tab in the console. Below the shortcut bar is a series of tabs, including Log, Memory, and Network.
The Log tab shows diagnostic messages from scripts. It has two sections: Client and Server.
- The Client section shows output from LocalScripts running on the client. Anyone running an experience can view these local output messages.
- The Server section shows output from Scripts running on Roblox servers. Only the experience owner or group members with editing permission can access this section.
You can filter the output messages in the log using the following checkboxes:
|Output||Messages generated by calls to print() and warn() statements within scripts.|
|Information||Messages generated by the experience that aren't errors or custom output statements.|
|Warning||Messages that indicate a potential problem but not a critical issue.|
|Error||Messages that indicate that something critical has happened.|
The Server section has a Command Bar that lets users with editing permissions run arbitrary Luau code. This command bar has the same security restrictions as Script and LocalScript objects, so unlike the command bar in Studio, it can't run protected functions.
The Memory tab of the console shows metrics on memory usage. Models, terrain, parts, visual effects, scripts, physical contraptions, audio, and more can all contribute to total memory usage. The Memory tab has the following section:
- CoreMemory – Memory used by processes built into the Roblox engine such as networking, avatars, and GUI elements.
- PlaceMemory – Memory that scales as a direct result of choices made as an experience is built.
- UntrackedMemory – Arbitrary memory allocations that are not tagged.
- PlaceScriptMemory – Memory used by user Luau script threads. This section includes script names and custom memory tags.
- CoreScriptMemory – Memory used by internal Roblox script threads.
PlaceMemory section has sub-categories. The following table describes each sub-category and tips for reducing memory usage.
|Category||Description||Memory Management Tips|
|HttpCache||Assets (images, meshes, etc.) loaded from Roblox servers and now held in a cache in memory.||Load fewer or smaller assets.|
|Instances||Instances in the place.||If possible, reduce the overall number of Instances (objects in the Explorer window).|
|Signals||Signals that fire between Instances (an event firing on one Instance to trigger an event on another Instance).||Use fewer event connections between Instances.|
|LuaHeap||Heap memory for both core scripts (scripts that ship with the Roblox client) and custom scripts.||Write memory-efficient scripts.|
|Script||Lua Scripts.||Use fewer or shorter scripts.|
|PhysicsCollision||Collision data for physics simulations.||If a part doesn't need to move, set BasePart.Anchored to true. If a part never needs to collide with anything, set BasePart.CanCollide to false.|
|PhysicsParts||Physics geometry and kinetics.||Use simpler, smaller, or fewer parts.|
|GraphicsSolidModels||Graphics data to render solid models.||Use fewer/simpler solid models or set their RenderFidelity to Automatic.|
|GraphicsMeshParts||Graphics for MeshPart objects.||Use fewer or simpler meshes.|
|GraphicsParticles||Graphics for particle systems.||Use fewer particle systems or produce fewer particles with shorter lifespans.|
|GraphicsParts||Graphics for parts.||Use fewer or simpler parts.|
|GraphicsSpatialHash||General rendering.||Use fewer parts, particles, lights, and anything else that contributes to rendering.|
|GraphicsTerrain||Graphics for terrain.||Use less terrain.|
|GraphicsTexture||Texture memory.||Use fewer or smaller textures.|
|GraphicsTextureCharacter||Texture memory for characters.||Use fewer unique character appearances.|
|Sounds||In-memory sounds.||Use fewer or smaller sounds.|
|StreamingSounds||Streaming sounds.||Use fewer streaming sounds.|
|TerrainVoxels||Terrain voxels.||Use less terrain.|
|TerrainPhysics||Terrain physics.||For objects close to terrain, set BasePart.CanCollide to false and/or BasePart.Anchored to true.|
|Gui||Memory used by common GUI elements.||Reduce or optimize your GUI instance usage.|
|Animation||Memory used for animation data, such as poses and KeyframeSequence cached data for avatar animations.||Use fewer distinct animations and optimize animations if possible.|
|Navigation||Memory used by supporting structures for PathfindingService.||Optimize usage and make fewer calls to PathfindingService.|
The Network tab of the Developer Console shows the number of web calls that the experience has made. This includes explicit calls made through HttpService and web requests made by Roblox services like DataStoreService. The Network tab has two sections: Summary and Detail.
The Summary section lists a summary of all the web calls by type. Each type has details on the number of requests, the number of failed requests, and the amount of time that the request took.
The Details section lists each individual web call. Each row shows the HTTP method, such as GET or POST, along with the status code, time to execute, request type, and request URL. Click on web call to see its response details: