There is no errors in the output but when I type in the name and click set it doesn't change above their head. If you need more information like the other parts feel free to ask.

local guibase  = script.Parent:Clone()

--Detect when a player is added.
game.Players.PlayerAdded:Connect(function(player)
	player.CharacterAdded:connect(function()
		repeat wait() until player.Character
		local char = player.Character
	
		--Insert gui into player.
		local gui = guibase:Clone()
		gui.Parent = player.PlayerGui
	
		--Setup name.
		local mod = Instance.new("Model")
		local hum = Instance.new("Humanoid")
		local head = Instance.new("Part")
	
		--Insert humanoid into model.
		hum.Parent = mod
	
		--Set initial name to be blank.
		mod.Name = ""
	
		--Set head properties.
		head.Size = Vector3.new(1,1,1)
		head.CanCollide = false
		head.Transparency = 0.99
		head.Name = "Head"
		head.Parent = mod
			
		--Finish model setup.
		mod.PrimaryPart = head
		mod.Parent = char
		mod:SetPrimaryPartCFrame(char.Head.CFrame+Vector3.new(0,0.5,0))
		
		--Weld part to character.
		local w = Instance.new("Weld")
		w.Name = ("Weld")
		w.Part0,w.Part1 = head,char.Head
		w.C0 = head.CFrame:inverse()
		w.C1 = char.Head.CFrame:inverse()
		w.Parent = head
		
		--Add server side handling to model.
		local svh = gui.ServerHandler
		svh.Parent = mod
		svh.ServerHandler.Disabled = false
		gui.HandlerPointer.Value = svh
		
		--Enable local handler to finish setup.
		gui.LocalHandler.Disabled = false
	end)
end)