On-screen UI container objects hold GuiObjects that you want to display on a user's screen. All on-screen UI objects and code are stored and changed on the client.

This example screen has a ScreenGui with a frame container that holds a TextLabel, TextBox input field, and ImageButton.
StarterGui
The StarterGui service is a container object that holds GuiObjects, such as a ScreenGui and its children GuiObjects. This service initializes on-screen UI for new users joining an experience. You do not need to create a StarterGui object as it is always present in the Explorer window.

PlayerGui
A Player's PlayerGui is a container for that specific player's on-screen UI objects. When a user first joins an experience, the PlayerGui automatically inserts into their Player object within the Players service. Then, when the user's avatar spawns for the first time, the StarterGui service clones all of its contents into the PlayerGui container.
ScreenGui
The ScreenGui object is the primary container for all 2D GuiObjects that display on a user's screen.
Creating a ScreenGui
Unlike StarterGui and PlayerGui, you have to manually create a ScreenGui to hold anything you want to display on the user's screen. To create a ScreenGui object:
In the Explorer window, hover over StarterGui and click the ⊕ icon. A contextual menu displays.
Insert a ScreenGui.
Parenting a ScreenGui
Parenting the ScreenGui to either the PlayerGui or the StarterGui service enables you to choose how 2D GuiObjects appear to users.
To make a general ScreenGui display on every user's screen when they join, parent it to the StarterGui service.