> For the complete documentation index, see [llms.txt](https://postica.gitbook.io/binding-system-3/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://postica.gitbook.io/binding-system-3/project-tools/diagnostics/bindings-monitor.md).

# Bindings Monitor

Every active binding, its rate, its value and its cost.

{% hint style="success" %}
**Learn by doing:** [Finding the Binding That Costs You Frames](/binding-system-3/tutorials/find-the-cost.md) measures a real scene and applies the four fixes in order of payoff.
{% endhint %}

**Window ▸ Binding System ▸ Bindings Monitor**

The only view that shows what bindings **cost**. If a scene has become slower than it should be, this is where to look first.

<figure><img src="https://3048705056-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLUfBXR02sJ5i0MxwYbaV%2Fuploads%2FtzV8S90ESUAKmHmqnpZd%2FScreenshot%202026-09-27%20at%2018.25.26.png?alt=media&amp;token=0c8e9af9-9dd1-4fd1-8ee4-008b165be678" alt=""><figcaption><p>The Bindings Monitor during play mode</p></figcaption></figure>

Outside play mode it says *Enter Play Mode to monitor active bindings*, unless you switch on **Edit Time**.

## The table

<table><thead><tr><th width="230">Column</th><th>What it shows</th></tr></thead><tbody><tr><td><strong>Stages</strong></td><td>Which player-loop stage this binding runs on. See <a href="/binding-system-3/overview/modes-and-updates.md">Update Points</a>.</td></tr><tr><td><strong>Proxy</strong></td><td>The binding itself. Rows flash when the value changes, so activity is visible without reading numbers.</td></tr><tr><td><strong>Target</strong></td><td>What it is driving.</td></tr><tr><td><strong>Status</strong></td><td>Healthy, inactive, or in error.</td></tr><tr><td><strong>Measurements</strong></td><td>Execution time, as a moving average over the last hundred samples. A row whose average is high is flagged with <em>High average execution time!</em></td></tr></tbody></table>

Expanding a row shows the current **Value**, and the rate in words: *Every Frame*, *Every 12 frames*, *Every 0.25 seconds*, or *Controlled*, meaning the binding does not update automatically and something has to ask it to, [either your code or a `UnityEvent`](/binding-system-3/overview/modes-and-updates.md#no-update-point-on-purpose).

Per row there are three actions: focus the binding in the Hierarchy, pause its updates, resume them.

## The toolbar

<table><thead><tr><th width="230">Control</th><th>What it does</th></tr></thead><tbody><tr><td><strong>Pause</strong> / <strong>Resume</strong></td><td>Freezes the monitor so you can read a moving table. Does not pause the game.</td></tr><tr><td><strong>Reset</strong></td><td>Clears the accumulated measurements. Use it after a warm-up, or after changing something.</td></tr><tr><td><strong>Show Inactive</strong></td><td>Includes bindings that are not currently updating, which is how you check that something you expected to run is registered at all.</td></tr><tr><td><strong>Edit Time</strong></td><td>Monitors bindings at edit time, without play mode.</td></tr><tr><td><strong>Refresh Interval</strong></td><td>How often the monitor itself refreshes. Lower it if the monitor is what is costing you frames.</td></tr></tbody></table>

## The footer

<table><thead><tr><th width="290">Readout</th><th>What it shows</th></tr></thead><tbody><tr><td><strong>Elements</strong></td><td>How many bindings are being tracked, and how many the current filter shows.</td></tr><tr><td><strong>Total Exec Time</strong></td><td>The total per update, in milliseconds, plus the filtered subset's share of it as a percentage.</td></tr><tr><td><strong>Phased Bindings</strong></td><td>Whether phased updates are currently on.</td></tr></tbody></table>

That percentage is the number to work with. It answers "how much of my binding budget is this group of bindings?" directly.

## A workflow that works

1. Enter play mode, let the scene settle, press **Reset**.
2. Play for a while, doing whatever the scene normally does.
3. Sort by **Measurements**.
4. Look at the top few rows and ask, for each one: does it need to run this often?

Most of the time the answer is no, and the fix is one of three things:

<table><thead><tr><th width="290">Fix</th><th>When to use it</th></tr></thead><tbody><tr><td>An <a href="/binding-system-3/overview/modes-and-updates.md#intervals">interval</a></td><td>A UI number does not need 60 updates a second.</td></tr><tr><td><a href="/binding-system-3/overview/modes-and-updates.md#optimized-update">Optimized Update</a></td><td>Skip the work when the value did not change.</td></tr><tr><td>A cheaper <a href="/binding-system-3/overview/sources.md#cost">source mode</a></td><td>A pattern or scene search that fails is far more expensive than one that resolves.</td></tr></tbody></table>

Then **Reset** and measure again.

{% hint style="info" %}
The monitor tracks bindings the **engine drives**: [proxy bindings](/binding-system-3/overview/proxy-bindings.md) with an update point, and `Bind<T>` fields with [Auto Update](/binding-system-3/overview/modes-and-updates.md#auto-update) on. A `Bind<T>` resolved lazily when your code reads it does not appear, because the engine is not doing anything for it. Turn on **Show Inactive** to confirm whether something is registered.
{% endhint %}

{% hint style="success" %}
Leave the Monitor open and turn on the [Scene Visualizer](/binding-system-3/project-tools/diagnostics/scene-visualizer.md). It puts these same measurements on the objects themselves, as a heat meter per object, which is the quickest way to see *where* in the scene the cost is rather than which row it is on.
{% endhint %}

## Related pages

* [Scene Visualizer](/binding-system-3/project-tools/diagnostics/scene-visualizer.md): the same measurements, drawn on the objects in the Scene view.
* [Bind Modes and Update Points](/binding-system-3/overview/modes-and-updates.md): what the stages and intervals mean.
* [Controlling Bindings at Runtime](/binding-system-3/overview/runtime-control.md): pausing from code rather than from the window.
* [Performance](/binding-system-3/project-tools/performance.md): the mechanisms behind the numbers.
