-
Notifications
You must be signed in to change notification settings - Fork 5
Home
upio edited this page Feb 20, 2026
·
8 revisions
RobloxMemoryAPI is a Python library for externally reading and (optionally) writing Roblox client memory to access the DataModel and its instances.
- Windows only. The memory module relies on Windows APIs.
- Roblox client running. By default it targets
RobloxPlayerBeta.exe. - Python 3.9+.
- Internet access on import to fetch current offsets.
pip install robloxmemoryapiEditable install from source:
pip install -e .from robloxmemoryapi import RobloxGameClient
client = RobloxGameClient()
if client.failed:
raise RuntimeError("Failed to attach to Roblox.")
game = client.DataModel
print("PlaceId:", game.PlaceId)
print("JobId:", game.JobId)
print("Loaded:", game.IsLoaded())
client.close()Writing requires passing allow_write=True when creating the client. This requests additional process rights and can fail or be blocked depending on your environment.
from robloxmemoryapi import RobloxGameClient
client = RobloxGameClient(allow_write=True)
if client.failed:
raise RuntimeError("Failed to attach to Roblox.")
game = client.DataModel
ws = game.Workspace
# Physics
ws.Gravity = 80.0
ws.FallenPartsDestroyHeight = -1000.0
# Atmosphere
print("AirDensity:", ws.AirDensity)
ws.GlobalWind = (0, 0, 50) # or Vector3(0, 0, 50)
# Lighting
game.Lighting.GlobalShadows = False
client.close()Instances support attribute-style access to find children by name, and utility methods for traversal.
workspace = game.Workspace
part = workspace.FindFirstChild("Part", recursive=True)
if part:
print(part.ClassName, part.Name)The DataModel can change when the client switches between the home screen and a game. Auto refresh keeps the reference updated and notifies you.
from robloxmemoryapi import RobloxGameClient
client = RobloxGameClient()
game = client.DataModel
def on_refresh(instance):
if game.is_lua_app():
print("LuaApp / home screen")
else:
print("In-game", game.PlaceId)
game.bind_to_refresh(on_refresh, invoke_if_ready=True)Read and write Roblox Fast Flags directly in memory via client.FFlags. Offsets are fetched lazily from the remote offsets server.
from robloxmemoryapi import RobloxGameClient
client = RobloxGameClient(allow_write=True)
fflags = client.FFlags
# Read a flag
flag = fflags.get("DFIntTaskSchedulerTargetFps")
if flag:
print(flag.name, flag.type, flag.value)
# Attribute-style read
print(fflags.DFIntTaskSchedulerTargetFps.value)
# Write a flag
fflags["DFIntTaskSchedulerTargetFps"] = 240
# or
fflags.DFIntTaskSchedulerTargetFps = 240
# Check existence
if "DFIntTaskSchedulerTargetFps" in fflags:
print("Flag exists")
# Bulk read
all_flags = fflags.get_all()
for name, flag in all_flags.items():
print(name, flag.type, flag.value)
client.close()- Offsets are fetched at import time from
https://imtheo.lol/Offsets. If unreachable or after a Roblox update, reads may return wrong values. - Many properties are class-specific. If a property is not supported by the underlying instance, the library returns
Noneor raises anAttributeError. - Use
client.close()when finished to release the process handle.