Get the whole explorer as text from a .rbxl file (as "tree /f")

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
0 voters
1 Like