5 min read

Source: Roblox Creator Hub · CC BY 4.0 · View source · Code samples: MIT Imported 2026-10-03. Formatting adapted for this site.

Script types and locations


For many developers, the fundamental challenge of adapting to Roblox scripting is the importance of file location and the Script.RunContext property. Depending on script type, location in the Explorer, and run context, scripts can behave very differently. Certain method calls might fail, objects in your game might be inaccessible, or scripts might not run at all.

The reason for this complexity is that Roblox games are multiplayer by default. Scripts need the ability to only run on the server, only run on the client, or be shared across both. The evolution of the Roblox platform over time has further complicated the situation.

Script types

Roblox has three types of scripts:

When you create a Script, its default run context is Legacy, meaning that it a) is a server-side script and b) only runs if it is in a server container, such as ServerScriptService or Workspace.

To change a script run context, select it in the Explorer and change the value in the Properties window.

RunContext property indicated for a Script.

Recommendations

Example project structure

The Plant reference project shows how you might organize your code in a large, complex game. It stores the vast majority of its code as reusable ModuleScripts.

Script locations

LocationDescription
WorkspaceRepresents the game's 3D world. Can run server scripts that attach directly to objects and control their behavior.
ReplicatedFirstContains objects that replicate to the client before anything else. This location is ideal for the absolute minimum set of objects and client scripts necessary to display a loading screen.
ReplicatedStorageContains objects that are replicated to both the client and the server. This location is ideal for Scripts with a RunContext of Client, client ModuleScripts, and ModuleScripts that you want to use on both the server and the client. LocalScripts do not run from this location.
ServerScriptServiceContains server scripts. This location is ideal for scripts that need to access server-side functionality or objects, such as game logic and cloud storage.
ServerStorageContains server-side objects. This location is ideal for large objects that don't need to be immediately replicated to clients when they join a game. Scripts do not run from this location, but you can store server-side ModuleScripts here.
StarterPlayer ⟩ StarterCharacterScriptsContains LocalScripts that run when the character spawns.
StarterPlayer ⟩ StarterPlayerScriptsContains LocalScripts that run when the player joins the game.
StarterGuiContains GUI elements that the client displays when it loads the game. LocalScripts can run from this location.
StarterPackGenerally only contains Tools, but can also include LocalScripts for setting up player backpacks.

This image shows which Explorer window locations can contain client scripts. Remember, ReplicatedFirst and ReplicatedStorage can contain Scripts with a RunContext of Client, whereas the Starter[] containers should use LocalScripts.

Diagram showing which script locations run on clients.