Visual
Overlay details, model colors and visibility.
Top-right dial, rotated to your facing. The left/right sense is calibrated against the projection, not assumed.
Enemy-only. Invalid and behind-camera points rejected. Chams/outline use async depth-query results aggregated across sampled meshes.
Aim
Target selection, input bindings and response.
Observed sphere/capsule centers. Invalid snapshots suppress aim. Overrides Smart and point selection; all-hero coverage unverified.
Target priority selects the enemy first; Smart then chooses the aim joint on that enemy.
{{ weaponBaseline }}
Nominal primary-fire data only. Weapon mode, grouping, charge, falloff, armor, shields and hit probability are not measured.
Prediction follows the selected weapon profile and compensates for your movement before release and while tracking. Instant weapons aim directly.
{{ projectileProfileLabel }}
Speed 0, negative gravity/lift and time 0 use the weapon baseline. Time 0 searches up to 5 s unless the weapon has a shorter bound. Aim FOV follows the predicted point, including arcs. Charge applies to Storm Bow. Select the weapon/form and release charge you use; these save per hero. Perks and copied weapons may need overrides. Unmeasured weapons require a speed override. Projectile lead takes priority over tick tracking.
Output waits out the reaction time after each new target and carries a bounded random offset. It changes how output looks, not whether it is detectable.
The collision worker sweeps map geometry from your eye to one target per cycle, so a verdict lags a cycle and only ever vetoes: unknown never blocks output.
Aim uses remapped pose points, not collision hitboxes. Interpolated visual joints are excluded. Missing aim points suppress output.
Trigger
Activation keys and trigger preferences.
Fires on ray/mesh intersection with hitbox geometry. Falls back to skeleton projection when volumes are unavailable; pixel radius is ignored for entities with valid volumes.
{{ hanzoStatus }}
Hold the trigger key to charge and repeat arrows automatically. Releases only at this minimum charge with a valid target aligned. Let go to stop charging.
Bone modes use projected pose points as fallback. Fires every active tick; weapon rate-limits are enforced by the game itself.
Other
Tracking and additional controls.
One tick per click. Separate values persist per hero.
Live mode: N means exactly N recorded captures ago; capture spacing varies. The ghost needs Entity overlay and enough history. Simulation mode uses simulation ticks.
{{ trackingInfo }}
All heroes. Melees a nearby enemy you are facing using the detected binding. Requires a clear path; one attempt per second. Missing or stale collision data blocks it.
Sets the window's display affinity, so OBS, Discord and screenshots see the game without the overlay. Needs Windows 10 2004 or newer; the Status page reports a failure.
PRESETS
A preset is a complete snapshot of every setting, shared across heroes, stored in config/overlay.ini. Hotkeys work only while the game is in front and the menu is closed.
Tracer
Hero-specific preferences for Tracer.
360-degree selection. Uses detected bindings and observed Blink charges. Status effects and immunity are ignored; armor uses a conservative half-damage estimate.
Release strafe/backward keys for Blink. Blink checks the live movement capsule; melee requires confirmed arrival and a clear strike path. Missing or stale collision data blocks the action.
Sojourn
Hero-specific preferences for Sojourn.
{{ fireBindingStatus }}
Primary and secondary fire follow the active in-game bindings automatically. With aim held, fires a direct shot within Aim FOV; otherwise requires crosshair alignment. Waits for fresh measured charge.
Holding the secondary-fire key pauses automatic rail shots. Use a different Aim activation key for assisted automatic rails.
Normal-mode damage estimate. Armor and long range use conservative damage; temporary immunity and damage modifiers are not measured.
{{ railStatus }}
Status
Connection, renderer and frame diagnostics.
{{ statusText }}
{{ fireBindingStatus }}
{{ lastError }}