trace – Resolve Anything* to its Path (Plugin)!
Hi everyone,
I built a Studio plugin (my first plugin) that resolves a selected Lua expression or object into its full path. When you activate the plugin while selecting an object, it opens a script (or a textbox) with the canonical path to the object. If you select a path string or variable (yes, variable!) and activate the plugin, it will select the object the variable references.
SHOWCASE
Use cases
The use cases for object to path are pretty obvious, but when working with indirect references (locals, module returns, chained indexing, etc.), it can be annoying to manually reconstruct the full object path. This plugin analyzes the selected expression and converts it into its canonical form.
For example:
local storage = game:GetService("ReplicatedStorage")
local moduleA = storage.ModuleA
local object = moduleA.ObjectA
Selecting:
object
Resolves to:
game:GetService("ReplicatedStorage").ModuleA.ObjectA
What it supports
- Local variable resolution
- Property chaining (
a.b.c) game:GetService()
It reconstructs the path without executing any code.
What it does not do
This is not a Lua interpreter. It intentionally does not support:
- Loops or conditionals
- Function execution
- Metatables
- Runtime logic
If something can’t be resolved statically and safely, it will fail instead of guessing.
Why I made it
I wanted something reliable for:
- Refactoring
- Debugging structures
- Verifying indirect references
- Generating paths for tooling
There are ways to do this with loadstring, but I didn’t want any code execution inside a plugin. So this is purely static path evaluation.
TL;DR:
- Object → Path string
- Path string → Object
- Variable → Object
If anyone has feedback, edge cases, or suggestions for improvements (especially around instability or performance), I’d appreciate it.
Thanks.
– ig1oo1
*Not actually anything, it’s mostly for dramatic effect `:P
Oh, also, I’d greatly appreciate it if you liked and replied to this post to increase its exposure! Thanks! 





