Universal Script – texture replacer - Verified script for Universal Roblox
Key RequiredUniversal

Universal Script – texture replacer

Universal ScriptRomchickCOOLRomchickCOOL 352 views 559 executesUpdated Oct 19, 2026
Unrated
00
Lua Script•151 lines (4217 chars)
script.Name = "TextureReplacer"

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")

local screenGui = Instance.new("ScreenGui")
screenGui.Name = "TextureReplacerGui"
screenGui.ResetOnSpawn = false
screenGui.Parent = playerGui

local frame = Instance.new("Frame")
frame.Name = "Main"
frame.Size = UDim2.new(0, 340, 0, 190)
frame.Position = UDim2.new(0.5, -170, 0.5, -95)
frame.BackgroundColor3 = Color3.fromRGB(30, 30, 36)
frame.BorderSizePixel = 0
frame.Parent = screenGui
Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 10)

local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, -20, 0, 36)
title.Position = UDim2.new(0, 10, 0, 6)
title.BackgroundTransparency = 1
title.Text = "Texture Replacer by r3dDUDE and AI"
title.TextColor3 = Color3.new(1, 1, 1)
title.Font = Enum.Font.GothamBold
title.TextSize = 20
title.Parent = frame

local input = Instance.new("TextBox")
input.Name = "IdInput"
input.Size = UDim2.new(1, -20, 0, 40)
input.Position = UDim2.new(0, 10, 0, 50)
input.BackgroundColor3 = Color3.fromRGB(45, 45, 55)
input.BorderSizePixel = 0
input.PlaceholderText = "Enter image ID"
input.Text = ""
input.TextColor3 = Color3.new(1, 1, 1)
input.PlaceholderColor3 = Color3.fromRGB(150, 150, 160)
input.Font = Enum.Font.Gotham
input.TextSize = 16
input.ClearTextOnFocus = false
input.Parent = frame
Instance.new("UICorner", input).CornerRadius = UDim.new(0, 8)

local status = Instance.new("TextLabel")
status.Size = UDim2.new(1, -20, 0, 24)
status.Position = UDim2.new(0, 10, 0, 98)
status.BackgroundTransparency = 1
status.Text = ""
status.TextColor3 = Color3.fromRGB(180, 180, 190)
status.Font = Enum.Font.Gotham
status.TextSize = 14
status.Parent = frame

local function makeButton(text, pos, color)
	local b = Instance.new("TextButton")
	b.Size = UDim2.new(0.5, -15, 0, 40)
	b.Position = pos
	b.BackgroundColor3 = color
	b.BorderSizePixel = 0
	b.Text = text
	b.TextColor3 = Color3.new(1, 1, 1)
	b.Font = Enum.Font.GothamBold
	b.TextSize = 16
	b.AutoButtonColor = true
	b.Parent = frame
	Instance.new("UICorner", b).CornerRadius = UDim.new(0, 8)
	return b
end

local applyButton = makeButton("Apply", UDim2.new(0, 10, 0, 135), Color3.fromRGB(60, 140, 90))
local resetButton = makeButton("Reset", UDim2.new(0.5, 5, 0, 135), Color3.fromRGB(150, 60, 60))

local originalTextures = {}
local createdOverlays = {}

local function setStatus(msg, color)
	status.Text = msg
	status.TextColor3 = color or Color3.fromRGB(180, 180, 190)
end

local function parseId(text)
	return string.match(text, "%d+")
end

local function applyImage(id)
	local assetUrl = "rbxassetid://" .. id
	local count = 0

	for _, obj in ipairs(workspace:GetDescendants()) do
		if obj:IsA("Texture") or obj:IsA("Decal") then
			local part = obj.Parent
			if part and part:IsA("BasePart") then
				if obj.Transparency > 0 then
					local overlay = Instance.new("Decal")
					overlay.Name = "ReplacerOverlay"
					overlay.Face = obj.Face
					overlay.Texture = assetUrl
					overlay.Transparency = 0
					overlay.Color3 = Color3.new(1, 1, 1)
					overlay.Parent = part
					table.insert(createdOverlays, overlay)
				else
					table.insert(originalTextures, { obj = obj, texture = obj.Texture })
					obj.Texture = assetUrl
				end
				count += 1
			end
		end
	end

	return count
end

local function resetAll()
	for _, data in ipairs(originalTextures) do
		if data.obj and data.obj.Parent then
			data.obj.Texture = data.texture
		end
	end
	table.clear(originalTextures)

	for _, overlay in ipairs(createdOverlays) do
		if overlay then
			overlay:Destroy()
		end
	end
	table.clear(createdOverlays)
end

applyButton.MouseButton1Click:Connect(function()
	local id = parseId(input.Text)
	if not id then
		setStatus("Error: enter a valid ID", Color3.fromRGB(230, 90, 90))
		return
	end

	local count = applyImage(id)
	setStatus("Objects replaced: " .. count, Color3.fromRGB(120, 220, 140))
end)

resetButton.MouseButton1Click:Connect(function()
	resetAll()
	setStatus("Textures reset", Color3.fromRGB(180, 180, 190))
end)

How to Execute Universal Script – texture replacer

Step 1: Copy Code: Click the Copy Code button in the viewer above to grab the clean Lua loadstring.

Step 2: Launch Executor: Open a compatible, unpatched executor. If you need one, check our Roblox Executors Directory.

Step 3: Join Experience: Launch Roblox and join Universal Script.

Step 4: Attach & Run: Attach/inject your executor into the Roblox process, paste the code into the script tab, and press Execute.

Created By

RomchickCOOL
RomchickCOOL
Script Creator
View Author Profile

Features & Information

Execute Universal Script – texture replacer. Key system required, created by RomchickCOOL, updated Oct 19, 2026. Tested and working on supported executors.

Script Changelog (1)

@RomchickCOOLOct 19, 2026

Create script

Community Comments (0)

No comments yet for this script.

Frequently Asked Questions

How do I execute Universal Script – texture replacer in Roblox?

To run Universal Script – texture replacer, copy the Lua loadstring from the code viewer above, launch Roblox and join Universal Script, attach a working executor (such as Potassium, Solara, or Delta from our Executors directory), paste the code into your executor console, and click Execute.

Is Universal Script – texture replacer keyless or does it require an access key?

Universal Script – texture replacer requires an access key. You can retrieve the official key directly using the Get Script Key link provided above.

Is Universal Script – texture replacer currently safe and working?

This script is active and operational. Always test scripts using a secondary (alt) Roblox account to safeguard your main profile against anti-cheat bans.