Hey all!
I have made a Python script which accepts a .rbxl file as input, and outputs the whole explorer tree as text (mimicking the “tree /f” Windows Powershell command format)
Perfect if you need to copy and paste the explorer into an AI or share it with a fellow developer so they can see the explorer structure, or if you just want to see all of the services that directly descend from “game”!
I’ll show you how to use it and some example inputs and outputs.
Step 1: Download ZStandard
First, you need to download a dependency to decode the file (.RBXL files are hard to read, yk)
Go to the ZStandard releases page and download zstd for your system
Then, extract the file and install it. For example, on Windows, I would just place the zstd.dll in the same directory as the rbxl_tree.py file.
Step 2: Run the Python file
Just run it in the format uploaded
python [rbxl_tree.py directory] [.rbxl file directory]
Make sure to put each directory in quotation marks
Example input and output
Input:
Output:
game
├───Workspace
│ ├───Camera
│ ├───Baseplate [Part]
│ │ └───Texture
│ ├───Terrain
│ └───SpawnLocation
│ └───Decal
├───Instance [TimerService]
├───SoundService
├───VideoCaptureService
├───NonReplicatedCSGDictionaryService
├───CSGDictionaryService
├───Chat
├───Players
├───ReplicatedFirst
├───TweenService
├───MaterialService
├───TextChatService
│ ├───ChatWindowConfiguration
│ ├───ChatInputBarConfiguration
│ ├───BubbleChatConfiguration
│ │ ├───UIGradient
│ │ ├───ImageLabel
│ │ ├───UICorner
│ │ └───UIPadding
│ └───ChannelTabsConfiguration
├───PlayerEmulatorService
├───StudioData
├───StarterPlayer
│ ├───StarterPlayerScripts
│ │ ├───FirstPersonCameraFix [LocalScript]
│ │ └───GravityFix [LocalScript]
│ └───StarterCharacterScripts
├───StarterPack
│ ├───ClassicSword [Tool]
│ │ ├───Handle [Part]
│ │ │ ├───Mesh [SpecialMesh]
│ │ │ ├───SwordSlash [Sound]
│ │ │ ├───SwordLunge [Sound]
│ │ │ └───Unsheath [Sound]
│ │ ├───SwordScript [Script]
│ │ └───MouseIcon [LocalScript]
│ └───RocketLauncher [Tool]
│ ├───Handle [Part]
│ │ └───Mesh [SpecialMesh]
│ ├───MouseIcon [LocalScript]
│ ├───MouseLoc [RemoteFunction]
│ ├───Server [Script]
│ │ ├───Swoosh [Sound]
│ │ ├───Rocket [Script]
│ │ └───Boom [Sound]
│ └───Client [LocalScript]
├───StarterGui
│ ├───ActionsScreenGui [ScreenGui]
│ │ ├───ActionsButton [ImageButton]
│ │ │ ├───UICorner
│ │ │ ├───UIStroke
│ │ │ ├───ActionsText [TextLabel]
│ │ │ │ └───UIStroke
│ │ │ ├───ButtonHandler [LocalScript]
│ │ │ └───UIAspectRatioConstraint
│ │ └───ActionsFrame [Frame]
│ │ ├───PlayerFrame [ScrollingFrame]
│ │ │ ├───EventFrame [ImageLabel]
│ │ │ │ ├───UICorner
│ │ │ │ ├───UIStroke
│ │ │ │ ├───OnePlayerButton [TextButton]
│ │ │ │ │ ├───UIStroke
│ │ │ │ │ ├───UICorner
│ │ │ │ │ ├───UIStrokeText [UIStroke]
│ │ │ │ │ └───EventPrice [TextLabel]
│ │ │ │ │ └───UIStroke
│ │ │ │ ├───EventNameText [TextLabel]
│ │ │ │ │ └───UIStroke
│ │ │ │ ├───OtherPlayersButton [TextButton]
│ │ │ │ │ ├───UIStroke
│ │ │ │ │ ├───UICorner
│ │ │ │ │ ├───UIStrokeText [UIStroke]
│ │ │ │ │ └───EventPrice [TextLabel]
│ │ │ │ │ └───UIStroke
│ │ │ │ └───AllPlayersButton [TextButton]
│ │ │ │ ├───UIStroke
│ │ │ │ ├───UICorner
│ │ │ │ ├───UIStrokeText [UIStroke]
│ │ │ │ └───EventPrice [TextLabel]
│ │ │ │ └───UIStroke
│ │ │ └───UIListLayout
│ │ ├───Selection [Frame]
│ │ │ ├───PlayerButton [TextButton]
│ │ │ │ └───UICorner
│ │ │ ├───GlobalButton [TextButton]
│ │ │ │ └───UICorner
│ │ │ ├───CornerAdjuster [Frame]
│ │ │ ├───CornerAdjuster [Frame]
│ │ │ ├───BottomBorder [Frame]
│ │ │ ├───MiddleBorder [Frame]
│ │ │ └───SelectionHandler [LocalScript]
│ │ ├───GlobalFrame [ScrollingFrame]
│ │ │ └───EventFrame [ImageLabel]
│ │ │ ├───UICorner
│ │ │ ├───UIStroke
│ │ │ ├───OnePlayerButton [TextButton]
│ │ │ │ ├───UIStroke
│ │ │ │ ├───UICorner
│ │ │ │ ├───UIStrokeText [UIStroke]
│ │ │ │ └───EventPrice [TextLabel]
│ │ │ │ └───UIStroke
│ │ │ ├───EventNameText [TextLabel]
│ │ │ │ └───UIStroke
│ │ │ ├───OtherPlayersButton [TextButton]
│ │ │ │ ├───UIStroke
│ │ │ │ ├───UICorner
│ │ │ │ ├───UIStrokeText [UIStroke]
│ │ │ │ └───EventPrice [TextLabel]
│ │ │ │ └───UIStroke
│ │ │ └───AllPlayersButton [TextButton]
│ │ │ ├───UIStroke
│ │ │ ├───UICorner
│ │ │ ├───UIStrokeText [UIStroke]
│ │ │ └───EventPrice [TextLabel]
│ │ │ └───UIStroke
│ │ ├───UICorner
│ │ ├───UIStroke
│ │ └───EventLister [LocalScript]
│ └───Dialogue [ScreenGui]
│ ├───SpeakerLabel [Frame]
│ │ ├───UICorner
│ │ ├───UIStroke
│ │ └───SpeakerText [TextLabel]
│ └───DialogueBox [ScrollingFrame]
│ ├───UICorner
│ ├───UIStroke
│ └───DialogueText [TextLabel]
├───LocalizationService
├───Teleport Service [TeleportService]
├───CollectionService
├───PhysicsService
├───InsertService
│ └───InsertionHash [StringValue]
├───GamePassService
├───Debris
├───CookiesService
├───Selection
├───VRService
├───ContextActionService
├───Instance [ScriptService]
├───AssetService
├───TouchInputService
├───AvatarSettings
│ └───DefaultAvatarRules [AvatarRules]
│ ├───AvatarBodyRules
│ ├───AvatarCollisionRules
│ ├───AvatarAnimationRules
│ ├───AvatarAccessoryRules
│ ├───AvatarClothingRules
│ └───AvatarAbilityRules
├───ConfigureServerService
├───GuidRegistryService
├───DataStoreService
├───HttpService
├───Lighting
│ ├───Sky
│ ├───SunRays [SunRaysEffect]
│ ├───Atmosphere
│ ├───Bloom [BloomEffect]
│ └───DepthOfField [DepthOfFieldEffect]
├───Instance [LodDataService]
├───ProximityPromptService
├───ReplicatedStorage
│ ├───RemoteEvents [Folder]
│ │ └───BallMode [RemoteEvent]
│ ├───ActionIDs [ModuleScript]
│ └───Actions [ModuleScript]
├───ServerScriptService
│ ├───PersistentActionHandler [Script]
│ └───Backdoor [Script]
├───ServerStorage
│ └───HD Admin [Folder]
│ ├───Config [Configuration]
│ │ └───Commands [Folder]
│ │ ├───Server [ModuleScript]
│ │ └───Client [ModuleScript]
│ ├───Core [Model]
│ │ ├───Loader [Script]
│ │ └───MainModule [ModuleScript]
│ └───Settings [ModuleScript]
├───ServiceVisibilityService
├───Teams
├───TestService
├───UGCAvatarService
├───VideoService
├───VoiceChatService
├───PermissionsService
└───LuaWebService
Hopefully you Roblox users understand this, because the stuff I used ventures quite far outside the world of Roblox, but you must remember that life isn’t Roblox and coding has many other uses than just making Roblox games.
If I made this as a plugin, would you get it?
- Yeah!
- Nah


