BackpackManager - A customizable, plug and play backpack system

An open source fully fledged backpack replacement to Roblox’s default backpack script.

:graduation_cap: Documentation | :video_game: Demo Place | :puzzle_piece: Creator Store | :bookmark_tabs: GitHub

:red_question_mark: Why would I want to use this over Roblox’s supplied backpack or other alternatives that already exist?

Roblox’s supplied backpack doesn’t give you the developer much control and other open source alternatives don’t give you that much customization without having to dig into their code or simply just lack basic features. BackpackManager on the other hand is feature rich with an exposed API, easy to tinker settings and you can easily even edit the templete slot the module uses. ( :warning: When editing any templete, be sure not to rename, move or delete any instance that already exist because it could break the module!)

BackpackManager’s main features include:

  • Supports all platforms (PC, Mobile, Console and VR)
  • Automatically calculates how many tools can fit at once (The smaller the screen the less tools you’ll be able to have at once) which can be configured in the settings
  • Remap slot keybinds
  • Configurable spacing of tools
  • Supports using ViewportFrames for displaying tools
  • Locking certain tools to prevent them from being equipped
  • Signaling of certain events (tool added, tool removed, inventory opened, inventory closed, hovering, etc)
  • Cycle through tools using your scroll wheel (If configured in the settings)
  • Very smooth animations

:rocket: See all features

:framed_picture: Showcases

2025-09-2423-38-39-ezgif.com-optimize(1)
2025-09-2419-48-53-ezgif.com-optimize
2025-09-2502-34-05-ezgif.com-video-to-gif-converter

Installation

Creator Store

  1. Head to this link https://create.roblox.com/store/asset/132160096564542/Backpack
  2. Click on “Get Model”
  3. Open studio into your place
  4. Open the toolbox and go to “My models”
  5. Drag the ScreenGui into StarterGui (It should be named “BackpackGui”)

From GitHub

  1. Head to this link GitHub - Nem999/BackpackManager: An open source Roblox backpack replacement.
  2. Go to releases
  3. Download the latest release’s .rbxm
  4. Open your place
  5. Right click on StarterGui → Insert → Insert from file
  6. Select the file

Special Thanks

@AlexanderLindholt - Creating the BackpackManager icon
@Spynaz - Gui dragging logic
@stravant - GoodSignal module

56 Likes

Very useful, extensive, versatile, and polished library!

6 Likes

Suggestion, Add Stackable configurations

4 Likes

Hey so, stackable tools has been something that has been suggested to me and it’s actually possible to make this using the API.

You can easily achieve this using the ToolAdded, OnSlotRefresh and OnSlotRemoving signals.

I whipped up an example in the attached place.
stackexample.rbxl (153.4 KB)

5 Likes

Hands down one of the best backpack system assets for any game. Currently using in my survival game and its perfect.

Thank you for a great asset!


My Game Screenshots - using asset:

PC:

Mobile:

2 Likes

I like how polished the code is, and the GUI, it’s not a normal backpack manager, it’s the best one there is!

2 Likes

Hello! Everything is working fine for the most part, but I noticed that if you move an item out of the hotbar and into the backpack, and then give yourself that item again, the stack numbers appear in the hotbar slot the item was previously in, instead of its new slot in the backpack;

Screenshot 1 (Before moving the item)

Screenshot 2 (After moving the item)

Screenshot 3 (After interacting with the boombox again (notice the stack number in the first hotbar slot changes to 3))

How would I go about fixing this? I can’t seem to figure it out…
Thanks!

Hey, it looks like I made a small mistake adding the line ToolFrame = BackpackManager:GetFrameFromTool(Tool) to line 97 in the script named “BackpackScript” should fix this.

Here’s an updated place file with the fix.
stackexample(1).rbxl (153.7 KB)

1 Like

Version 2.2.2

  • Fixed an error relating to spamming Player:LoadCharacterAsync()
  • Fixed an issue where .ToolEquipped and .ToolUnequipped signals could fire at inconsistent times
  • By default tool numbers will no longer show if the player doesn’t have a keyboard available.
  • Updated BackpackScript
  • Added settings:
    IconScale, ShowToolNumber and ToolEquippingDisabled

Hi, I really like this system, but I ran into an issue when changing the keybind to open the inventory from backquote to E. There’s a bug where I can only open the inventory once using E, and then it stops working. I’m not sure why.
I changed the backquote to E in the “Settings.INVENTORY_OPENANDCLOSE_KEYCODES” and “HINT_BUTTON_ICONS” tables.

Hey, thanks for bringing up this issue this should be fixed in the latest release. I also saw that you were experiencing an attempt to index nil error relating to the tool dragging logic so I fixed that too.

1 Like

Still not working for me. :frowning: Pressing E isn’t doing anything after changing it.
(Edit: Nevermind, I fixed it somehow, I think because I used the GUI from the test place)

Sorry, I forgot to update the demo place.

1 Like

How would one go about setting specific images for a tool?

The current capabilities for the tool-display are only viewportframes and text labels,

How would one go about implementing images?

You would just set the TextureId property of the tool to your image.

Here’s an example.

Tool.TextureId = "http://www.roblox.com/asset/?id=212303004"

Hi,
1)
When in the demo place are there 8 slots, but when I open up the backpack 2 more slots appear?

  1. is there a way to only have hotbar slots like 1 - 6 , 6 being the max tools you can ever have, and there is no way to open the backpack, AND if you pick up a 7 th tool, or try to , it will not go into the overflow backpack and you cannot pick it up until there is a free slot available 1 - 6 . meaning you cannot pick up 7 or more… (I know you can disable the ` key, so the backpack does not open, but that does not disable overflow of tools going into the backpack. )

  2. if 2 is possible, and you only have slot 1 - 6, and currently say slot 1 is active / enabled, if you pick up a 7 th tool, because slot 1 is active, it will first drop slot 1 tool, and allow you to pick up the 7 th tool, which goes into slot 1.

  3. to drop a tool, is there dragging a tool out of a slot area, into the workspace out side of the hot bar (Not the backpack) so you can drop tools by dragging them.

  1. Yes, there are 8 slots but when you open your inventory 2 other slots appear because those are two slots are usable but aren’t being used.

  2. Yes, if you open the screen gui you will notice there is a module script named “BackpackSettings”.

This script holds all of the configuration settings of BackpackManager. The setting called MaxHotbarToolSlots controls the maximum amount of tools allowed to be displayed at once in the hotbar. By default, this value is set to 10 changing it to 6 would make 6 the maximum amount of tools you can ever have in the hotbar. But the maximum amount of tools is also determined by the client’s screen resolution in respect to the MaxHotbarToolSlots value. Meaning, you can have the maximum hotbar slots set to 10 but BackpackManager may only allow 5 if the clients screen resolution is too small. If you want to disable this behavior you would set AutoCalculateMaxToolSlots to false.

If you want to disable opening the inventory then you would do the following in a new script:

local BackpackManager = require(BackpackManager)

BackpackManager:DisableInventory()

You also cannot disable tools from going in your inventory, if there is no space left in the hotbar for an extra tool then they will go in your inventory no matter what. Your best solution to what you’re trying to achieve is to just check how many tools a player has before-hand before letting a player pick up a tool.

  1. Yes, this is possible but you would have to script it yourself using BackpackManager’s API. BackpackManager provides functions for the developer such as BackpackManager:GetToolFromNumber() to allow you to implement custom behavior.

  2. Yes, this is also possible using BackpackManagers API. You would use BackpackManager.DragEnded to signal to your script when a drag has ended then implement your own custom behavior.

How would I go about hiding the hotbar along with the inventory? I didnt seem to find a disablehotbar in the api or maybe it went over my head. Im planning to use it to along with SetCoreGuiEnabled to hide them both in certain cases like a loading screen where i dont want the gui to be visible

Thank you very much, Sir/Miss.

Kindly,
Woo.

Perhaps you could try using the property:

Backpackmanager.Disabled ? If I recall correctly, it disables the rendering of the backpack as well as any input.