Description
Changelog
Reviews (1)

Profily puts every stat you care about in one polished in-game overlay β€” FPS, memory, audio, hardware and scene metrics β€” and can react automatically the moment a stat crosses a threshold you define.

Enable the plugin and press play: sensible defaults, two hotkeys, zero setup.

Profily is the Godot port of Graphy β€” Ultimate Stats Monitor, winner of the Best Development Asset award at the Unity Awards 2018, rebuilt in statically typed GDScript and extended with Godot-exclusive features.

Modules

  • 🎯 FPS β€” current FPS, ms per frame, average, 1% low and 0.1% low over a 1024-sample window, color-coded thresholds and a real-time graph with a decaying-peak scale.
  • 🧠 RAM β€” static memory, peak and VRAM as three overlaid graph series.
  • πŸ”Š Audio β€” dB readout and an 81-bar spectrum analyzer with peak-hold, on any audio bus. The analyzer effect is added to the bus only while the module is active.
  • πŸ–₯️ Advanced β€” CPU model & cores, physical RAM, GPU, graphics API & renderer, VRAM, max texture size, screen & window info, OS, Godot version, XR target size.
  • 🎬 Scene (Godot exclusive) β€” draw calls (graphed), objects & primitives drawn, node & orphan-node counts, active physics objects. Off by default.

Every module has FULL / TEXT / BASIC / BACKGROUND / OFF states, and 12 presets switch the whole overlay in one go. The stack anchors to any corner β€” or a FREE position β€” with safe-area support for notched phones, background toggle and UI scaling.

Quick start

  1. Download the asset and copy the addons/profily/ folder into your project, then enable Project β†’ Project Settings β†’ Plugins β†’ Profily.
  2. Press play β€” Profily shows up immediately.
  3. Two hotkeys work out of the box:
    • Ctrl+G β€” rotate through the 12 presets
    • Ctrl+H β€” show / hide Profily
  4. Configure everything under Project β†’ Project Settings β†’ Profily: module states, thresholds and colors, graph resolutions, positions, hotkeys, UI scale…

Hotkeys are remappable (key plus Ctrl/Alt modifiers) or can be disabled entirely in the Hotkeys settings group.

Want the overlay only in specific scenes? Drag profily.tscn into them instead β€” no plugin needed, and both modes coexist safely.

Debugger

Define condition packets that watch the live stats every frame and fire actions when they match:

# "If FPS < 25 for the first time after 2 s β†’ warning + screenshot + callback"
var packet := ProfilyDebugPacket.new()
packet.conditions.append(ProfilyDebugCondition.of(
    ProfilyDebugger.DebugVariable.FPS,     # or FPS_AVG, 1% lows, RAM, VRAM, dB, draw calls…
    ProfilyDebugger.DebugComparer.LESS_THAN,
    25.0
))
packet.init_sleep_time = 2.0       # grace period before evaluation starts
packet.execute_once = true         # one-shot; false = recurring
packet.message = "FPS dropped below 25!"
packet.message_type = ProfilyDebugger.MessageType.WARNING   # or LOG / ERROR
packet.take_screenshot = true      # PNG saved to user://
packet.callbacks.append(_lower_graphics_quality)            # any Callable
Profily.add_debug_packet(packet)

Combine several conditions with ALL / ANY evaluation, re-arm recurring packets on a timer, pause the game with debug_break, or react to the packet.executed and Profily.debugger.packet_executed signals.

Everything scriptable

With the plugin enabled, the global Profily.* API is available everywhere β€” drop-in scenes get the same API through ProfilyManager.instance:

print(Profily.current_fps, "  1% low: ", Profily.one_percent_fps)

Profily.set_preset(Profily.ModulePreset.FPS_FULL_RAM_FULL)
Profily.graph_modules_position = Profily.ModulePosition.BOTTOM_RIGHT
Profily.good_fps_threshold = 90

Every option is hot-reloadable at runtime, and can also be configured in the Inspector or under Project Settings β†’ Profily. Live stats (current_fps, average_fps, one_percent_fps, vram, draw_calls…), methods (set_preset(), set_module_mode(), enable() / disable()…) and signals (preset_changed, module_state_changed, active_toggled…) β€” full API reference in the README.

Quality

  • 100% statically typed GDScript, zero dependencies.
  • Desktop, mobile and web: graphs adapt automatically to Compatibility-renderer GPU limits.
  • Good to know: Godot only reports static-memory stats in debug builds β€” in release exports the RAM module still shows VRAM.
  • Requires Godot 4.6+. Demo project and headless test suite included in the repository.

Docs, demo & source: https://github.com/nodlag/profily

Credits & license

MIT Β© Javier Garrido (nodlag). Based on Graphy β€” Ultimate Stats Monitor by MartΓ­n Pane (MIT), winner of the Best Development Asset award at the Unity Awards 2018. Bundled Roboto fonts are licensed under Apache 2.0.

Changelog for version v1.0.2

No changelog provided for this version.

Reviews

Recommended by cherttov - 28 July 2026

Login to write a review.

Consider supporting the creators!

If you enjoyed this asset consider supporting its creator. Follow the link below.