← Back to Tutorials
Beginner~12 min readUE 5.5 / 5.6

The stat Commands Cheatsheet

The stat commands are UE's first-line performance overlay — faster than Insights, no symbol setup, instant feedback. This page is a categorized reference of every perf-relevant stat command, what each one shows, and when to reach for it. Bookmark and grep.

CPU / Frame Timing

First-pass triage for any frame-time issue. Start with stat unit; everything else drills in.

CommandShowsWhen to use
stat fpsFPS + ms color-codedFirst glance health check
stat unitFrame, Game (CPU), Draw (RT), GPU, RHIT in ms; in 5.6 also resolutionDefault starting point — identifies bound thread
stat unitgraphstat unit + scrolling per-thread graphWalk through scene, spot heavy regions
stat unitmaxAdds rolling max to stat unitStress runs where peaks matter
stat gameSTATGROUP_Game — tick, AI, anim, physics, scriptingGame thread bound — find which system
stat slowItems above an ms threshold (-ms=)Hunt outlier scopes
stat scenerenderingDraw calls, mesh draw commands, primitives, init viewsDraw thread bound — render culprit
stat rhiRHI memory, draw primitive countsRHI thread bound or VRAM tracking
stat namedeventsEnables SCOPED_NAMED_EVENT tracesInsights drilling — NOT for measuring frame time (~20% overhead)

GPU / Rendering

When stat unit shows GPU bound. stat gpu in 5.6 splits Graphics and Compute queues.

CommandShowsWhen to use
stat gpuPer-pass GPU ms; 5.6 splits Graphics/ComputeGPU bound — find heaviest pass
stat scenerendering(see CPU)Cross-check draw counts
stat initviewsVisibility culling timingMany cheap actors — culling cost dominates
stat lumen (and LumenScene, LumenReflections, LumenGI)Lumen pass timingsLumen suspected bottleneck — see Lumen tutorial
stat nanite (and NaniteRaster, NaniteShading)VisBuffer rasterize, materials, instancesNanite-heavy scenes — see Nanite tutorial
stat virtualshadowmapVSM page allocation, invalidationsDiagnose VSM cost — see VSM tutorial
stat raytracingRT scene build/dispatch timingsHWRT enabled (Lumen HWRT, RT shadows)
ProfileGPUSingle-frame GPU pass dumpLocalize regression to a pass before deeper tools

Memory

For OOM crashes, streaming pool warnings, or slow growth. See Memory Insights tutorial for the deeper workflow.

CommandShowsWhen to use
stat memoryMemory by subsystem (physical, virtual, texture, mesh)Quick on-HUD memory snapshot
stat llmLLM per-tag (requires -llm launch)Authoritative budget tracking
stat llmfullFull per-category LLM breakdownDeep memory audit
stat streamingTexture pool used / wanted / budgetPop-in, low-res textures
stat texturegroupPer-LODGroup memory and countsPer-group budget validation
memreport -fullFull snapshot to filePre/post comparison for leak hunting
obj list class=Texture2DLive UObjects of a classClass-filtered memory audit

Networking

For multiplayer titles. See the Networking & Replication tutorial.

CommandShowsWhen to use
stat netNetTickTime, NetBroadcastTickTime, replication graph countsMultiplayer perf check
stat netpacketPer-packet sizes/countsGranular bandwidth analysis
dumpnetConnections, channels, actor replicatorsDiagnose stuck/spammy replication
net.Debug.ActorClassNameTypeCSV 1 (5.6+)Per-class CSV stats for ForceNetUpdate / FlushNetDormancyDormancy regression early-warning

Animation

For skeletal-mesh-heavy frames. See the Animation Performance tutorial.

CommandShowsWhen to use
stat animSTATGROUP_Anim — eval/update cost per skeletal meshHigh character count / heavy AnimBP
stat animationgraphsAnimGraph node-level costABP suspected — drill into nodes
stat skinnedmeshSkinning, cloth, LOD selectionMany skinned meshes on screen

Physics

For Chaos-bound frames. See the Chaos Physics tutorial.

CommandShowsWhen to use
stat physicsBroadphase, narrowphase, solverPhysics-bound frames
stat chaosChaos solver/island/destruction statsUE5 Chaos solver work
stat chaosclothCloth-specific timingCloth perf investigation

Niagara / FX

See the Niagara Performance tutorial.

CommandShowsWhen to use
stat niagaraEmitter/system tick + renderFX-heavy scenes
stat NiagaraOverviewSystem counts, active particlesQuick triage
fx.Niagara.Debug.HudOn-screen Niagara debug HUDInspect specific systems

Levels / Tick / Actors

CommandShowsWhen to use
stat levelsStreaming-level state listWorld Partition / level streaming debug
dumpticksAll actors with registered tickHunt unnecessary bCanEverTick=true
dumpticks groupedSame, grouped by classAggregate offenders
LogActorCountsTotal / dynamic / ticked actorsQuick world census
ListSpawnedActorsAll dynamic actorsMemory leak / runtime spawn audit

Hidden Gems

Less-known but powerful. The stat dump* family especially.

CommandPurpose
stat dumpframe -ms=0.001 -root=shadowOne-frame dump filtered by ms + stat root — surgical bottleneck hunt
stat dumpave -num=30Average over N frames — far less noisy than single-frame
stat dumpmax / stat dumpsumPeak / cumulative over capture window
stat dumphitchesLogs only frames over hitch threshold (t.HitchFrameTimeThreshold)
stat dumpeventsCross-thread slow-event history
stat startfile / stat stopfileCapture .uestats to disk (legacy — Insights preferred in 5.5+)
stat hier -ms=0.5Hierarchical view filtered by ms — "I don't know where to look" command
stat group list / enable / disableManage which groups record (not just display)
DumpConsoleCommandsDumps every command + CVar — best discovery
FreezeRenderingFreeze frustum, fly camera — verify culling visually
Trace.RegionBegin "Combat" / RegionEnd(5.5+) Tag a window in Insights without code changes
ListShaders (5.6+)Runtime shader memory analysis

stat unit Display Reference

Reading stat unit like a senior. Each line maps to a thread; whichever ≈ Frame is your bound thread.

LineMeaningBound when…
FrameTotal wall-clock per frameAlways present — your overall budget
GameGame thread time — ticks, AI, gameplay, BP, anim update, physics dispatchGame ≈ Frame → game thread bound; optimize C++/BP/ticks
DrawRender thread — visibility culling, mesh draw command building, RHI command list buildDraw ≈ Frame → render thread bound; reduce primitives, draw calls, dynamic shadows
GPUGPU work; 5.6 stat gpu splits Graphics + ComputeGPU ≈ Frame → GPU bound; profile with stat gpu / ProfileGPU
RHITRHI Thread (D3D12/Vulkan/Metal command translation)High RHIT → driver/API submission bottleneck
DynResCurrent dynamic resolution scale (only with DynRes active)<100% → GPU pressure triggered downscale
Resolution(UE 5.6+) Current render resolutionAlways — documentation context

stat unitgraph overlays a scrolling line per thread (Frame=white, Game=yellow, Draw=cyan, GPU=red typically). Spikes on a single colored line tell you which thread spiked.

The legacy stat profiler is deprecated in 5.5. stat startfile / stat stopfile still work, but .uestats viewing in the editor is being phased out. Insights traces are the supported pathtrace.start / trace.stop + Trace.RegionBegin/End for window markers.
The triage flow
  1. stat unit — identify bound thread
  2. stat unitgraph — spot the spike
  3. stat hier -ms=0.5 — hierarchical breakdown
  4. stat <category> — specific subsystem (game/scenerendering/gpu/anim/physics)
  5. stat dumpave -num=30 — gather evidence