Custom Overhead System - Username, Health Bar, and Display Name [Open-Sourced]

Hey everyone,
I’m not sure how to start this so, let’s jump right into the details without any further interruption…

I’d like to introduce my recently made custom overhead system, which was inspired by Roblox’s default username and health overhead, as well as currently available overhead systems. This system also includes additional features!



Advantages of the system:
  • This overhead GUI is easy to customize and comes with a preset template for use.
  • The overhead system’s module is easy to understand, maintain, and has good documentation (I believe).
  • Tweens are being played client-side for the health bar and username GUI elements, and then the properties are applied server-side (using an external library).
  • The ability to customize the tween range for both the username and health bar allows for reducing the amount of data received by far-away players, such as certain players or at certain tween distances.
  • The username and health bar GUI elements are nearly acting the same as the Roblox’s default ones.
  • The system comes with three preset arrays for ranking people, as well as additional features.
  • Seven high-quality badges are pre-implemented.
  • Typechecking friendly :smiley:.
  • The health bar may become invisible when viewed from a long distance if it is below a certain size (such as 0.1-0.3 in scale).
  • Health bar size will depend on the player health (Server Side Only).
  • This system only supports the assignment of one badge, based on its priority.
How to implement:
  • First, you can place the system’s module script in the ServerStorage (location is not restricted).
  • Place the Replicated Tweening module in the ReplicatedStorage so that both the client and server can access it.
  • To use the overhead system module, create a server script inside the ServerScriptService and require the overhead system module or require it from any other script that already exist there (doesn’t really matter) and then enable the module by calling the method: Module:Enable.
  • Create a local script inside the StarterPlayerScripts and require the Replicated Tweening module (to be able to play username and health tweens).
  • Place the remote event that is included inside the ReplicatedStorage.
  • Ensure that the scripts and remote event are in the correct locations, along with any required modules, etc.

And that’s it!

The Overhead System can be obtained from the Roblox Creator Marketplace:
Intermediate Overhead System - Creator Marketplace (

External Credits:

Please let me know if you have any suggestions or criticism!


Can the overhead GUI (ranks) change depending on what team your on or?

1 Like

Nope, that isn’t included. But if you want such a thing, you can use the following function and call it inside TeamChanged connection:

local function UpdateRank(Player: Player, OverheadInformation: Folder)
	local PlayerInfoLabel = OverheadInformation:FindFirstChild("Information"):FindFirstChildWhichIsA("TextLabel")
	if PlayerInfoLabel then
		if Player.Team then
			PlayerInfoLabel.Text = Player.Team.Name.."\nData: <Any>"
			PlayerInfoLabel.Text = "No Team".."\nData: <Any>"

Also, you may modify the GiveInfo function (image attached below) to get the player team name and put it into the info text label once they spawn, too


thanks! i will figure out how to use it

Hi, the system works fine on my blocky model but when I switch to my man model the system disappears completely.

Template.Parent and Head.Parent returns nil when printed
(In the overhead system module in server storage)

Update: I guess I managed to find a fix by changing the Head:Part parameter to send over the player Character first, then calling Character:FindFirstChild(“Head”).

Not sure if this is a temporary fix but its working for now

Thank you for the bug report!
I’ve discovered the issue and it was caused (mostly) because the character is not yet a descendant of the workspace. About the typechecking, it wasn’t the problem, but it should’ve been “MeshPart” Or “Part” anyways…

Fix: After the CharacterAdded event, we should wait until the character is descendant of the workspace:

	repeat task.wait() until Character:IsDescendantOf(workspace) or Character.Parent ~= nil

The asset has been updated moments ago with the fix applied and changed the head’s type: “MeshPart | Part”.


Update (Server Storage Module):

  • Fixed that the Tweens table only overwrite one value as global (forgot to make a sub table for every player. This is a server script!)
  • Clearing the sub-player table from the “Tweens” one automatically upon player leaving
  • Some minor code changes and organizing
1 Like

Hi Im not sure what happened here but when I join the game with all the scripts needed in their spots i get no overhead gui AND there is an error in a script



Just edit the path to:


Don’t forget about the ReplicatedTweening module, too!
I’ve mentioned in the topic and inside the ReadMe file to review and edit those paths if needed.

Thanks, is it required that we edit the paths? Because the overhead still does not work.

It is not like that, I meant that you would’ve to edit the paths of the local(s) if they aren’t the same location as where you’ve put the scripts at.

I’ve updated these lines moments ago to prevent any confusion.

Ahh okay I just followed where you put the scripts and did what you did above but I still don’t get a overhead sorry for the confusion im not a scripter lol…

Are there any errors in the output feed of studio?

1 Like

Sorry to be back so soon , I really like the overhead gui and wish to use it… But what does the “”\nData: “…”" mean? and is there a way to change it to just text or is there something i need too edit? Sorry again

It is acting like a placeholder (a dump text), nothing much :sweat_smile:
the "\n" text is to make a new line.
you can edit it on your own like to make it a value from a datastore or something…

1 Like

Where’s the health bar? It says in the title that there is one.

A late reply, Ik.

You got to edit the module to fit your needs, currently by default, the username and health bar billboards are hidden from the owner but others which means you can’t see your own username or health bar.

Further Note:

This system/library/module is no longer constantly maintained. Meaning that you may find bugs and issues over the time.