Starving Artists Script
Starving Artists is a simulator where the progression wall hits hard the further you get into the game. The numbers keep going up but the core loop stays the same, and grinding through it session after session burns people out fast. These scripts break through the wall with Pastebin running automatically so your stats and resources keep climbing on their own.
2 working scriptslocal collectionService = game:GetService("CollectionService")
local player = game.Players.LocalPlayer
_G.refreshing = true
local cloneGui = {}
function cloneGui.buildRoot()
local paintFrame = player.PlayerGui.MainGui.PaintFrame
local cloneFrame = paintFrame:Clone()
-- Initialize root frame.
cloneFrame.Name = 'CloneFrame'
cloneFrame.Parent = paintFrame
cloneFrame.ToolsFrame:Destroy()
cloneFrame.ColorFrame:Destroy()
cloneFrame.NextButton:Destroy()
cloneFrame.UIAspectRatioConstraint:Destroy()
cloneFrame.Grid:Destroy()
cloneFrame.Confirmation:Destroy()
cloneFrame.AnchorPoint = Vector2.new(0, 0.5)
cloneFrame.Position = UDim2.new(1, 10, 0.5, 0)
cloneFrame.Size = UDim2.new(0.5, 0, 1, 0)
cloneFrame.Visible = true
paintFrame.Position = UDim2.new(0.5, -((cloneFrame.AbsoluteSize.X / 2) + 5), 0.5, 0)
cloneGui.root = cloneFrame
end
function cloneGui.buildButtons()
local nextButton = player.PlayerGui.MainGui.PaintFrame.NextButton
local copyButton = nextButton:Clone()
local cloneButton = nextButton:Clone()
local buttonSize = UDim2.new(0.4, 0, 0.09, 0)
-- Initialize copy button.
copyButton.Parent = cloneGui.root
copyButton.Size = buttonSize
copyButton.Position = UDim2.new(0.28, 0, 0.895)
copyButton.Label.Text = 'COPY'
copyButton.Name = 'CopyButton'
-- Initialize clone button.
cloneButton.Parent = cloneGui.root
cloneButton.Size = buttonSize
cloneButton.Position = UDim2.new(0.72, 0, 0.895)
cloneButton.Label.Text = 'CLONE'
cloneButton.Name = 'CloneButton'
-- Animation functions.
for i, button in pairs({cloneButton, copyButton}) do
button.MouseEnter:Connect(function()
button:TweenSize(UDim2.new(buttonSize.X.Scale + 0.015, 0, buttonSize.Y.Scale + 0.015, 0), 'Out', 'Quad', 0.2, true)
end)
button.MouseLeave:Connect(function()
button:TweenSize(buttonSize, 'Out', 'Quad', 0.2, true)
end)
end
-- Button actions.
copyButton.MouseButton1Click:Connect(copyGrid)
cloneButton.MouseButton1Click:Connect(cloneGrid)
end
function cloneGui.buildScrollingFrame()
local scrollingFrame = Instance.new('ScrollingFrame')
local uiListLayout = Instance.new('UIListLayout')
local uiPadding = Instance.new('UIPadding')
-- Initialize scrolling frame.
scrollingFrame.Parent = cloneGui.root
scrollingFrame.AnchorPoint = Vector2.new(0.5, 0)
scrollingFrame.Position = UDim2.new(0.5, 0, 0.05, 0)
scrollingFrame.Size = UDim2.new(0.8, 0, 0.75, 0)
scrollingFrame.BackgroundTransparency = 1
scrollingFrame.BorderSizePixel = 0
scrollingFrame.ScrollBarImageColor3 = Color3.new((210 / 255), (76 / 255), (71 / 255))
scrollingFrame.ScrollBarThickness = 4
scrollingFrame.ZIndex = 3
-- Configure layout.
uiListLayout.Parent = scrollingFrame
uiListLayout.Padding = UDim.new(0, 10)
uiPadding.Parent = scrollingFrame
uiPadding.PaddingLeft = UDim.new(0.08, 0)
uiPadding.PaddingRight = UDim.new(0.08, 0)
uiPadding.PaddingTop = UDim.new(0, 5)
uiListLayout.Changed:Connect(function()
scrollingFrame.CanvasSize = UDim2.new(0, 0, 0, uiListLayout.AbsoluteContentSize.Y + 10)
end)
cloneGui.scrollingFrame = scrollingFrame
end
function cloneGui.addGrid(grid)
local UIStroke = player.PlayerGui.MainGui.PaintFrame.Grid.UIStroke:Clone()
local container = Instance.new('Frame')
local preview = grid:Clone()
-- Initialize new container.
container.Parent = cloneGui.scrollingFrame
container.Size = UDim2.new(1, 0, 1, 0)
container.SizeConstraint = Enum.SizeConstraint.RelativeXX
container.BackgroundTransparency = 0.8
container.ZIndex = 4
UIStroke.Thickness = 4.5
UIStroke.Parent = container
UIStroke.Enabled = false
-- Clone grid into container.
preview.Parent = container
if (cloneGui.selected == nil) then
cloneGui.selected = container
UIStroke.Enabled = true
end
container.InputBegan:Connect(function(userInput)
if (userInput.UserInputType == Enum.UserInputType.MouseButton1) then
cloneGui.selected.UIStroke.Enabled = false
UIStroke.Enabled = true
cloneGui.selected = container
end
end)
end
function copyGrid()
if (cloneGui.selected ~= nil) then
local target = cloneGui.selected.Grid
local destination = player.PlayerGui.MainGui.PaintFrame.Grid
for i = 1, 1024 do
destination[i].BackgroundColor3 = target[i].BackgroundColor3
end
end
end
function cloneGrid()
local remote = game.ReplicatedStorage.Remotes.CreateArt
local frameColor = "ffffff"
local frame = "Starter Frame"
local name = "a"
local cells = {}
local grid = cloneGui.selected.Grid
for i = 1, 1024 do
cells[i] = grid[i].BackgroundColor3:ToHex()
end
local payload = {}
payload["FrameColor"] = frameColor
payload["Frame"] = frame
payload["Name"] = name
payload["Cells"] = cells
remote:InvokeServer(payload)
end
function refreshGrids()
local objects = game.Workspace.Plots:GetDescendants()
for i, v in ipairs(objects) do
if (v.Name == 'Grid' and v.ClassName == 'Frame' and not collectionService:HasTag(v, 'cloned')) then
if (#v:GetChildren() == 1027) then
collectionService:AddTag(v, 'cloned')
cloneGui.addGrid(v)
end
end
end
end
cloneGui.buildRoot()
cloneGui.buildButtons()
cloneGui.buildScrollingFrame()
while (_G.refreshing) do
refreshGrids()
wait(0.1)
endStarving Artists Scripts (Pastebin & More)
To run any of these scripts you will need a working Roblox executor. Check out the list at that link for free and paid options that work in 2026.
Starving Artists Script 4:
Starving Artists Script Pastebin2026 :
local collectionService = game:GetService("CollectionService")
local player = game.Players.LocalPlayer
_G.refreshing = true
local cloneGui = {}
function cloneGui.buildRoot()
local paintFrame = player.PlayerGui.MainGui.PaintFrame
local cloneFrame = paintFrame:Clone()
-- Initialize root frame.
cloneFrame.Name = 'CloneFrame'
cloneFrame.Parent = paintFrame
cloneFrame.ToolsFrame:Destroy()
cloneFrame.ColorFrame:Destroy()
cloneFrame.NextButton:Destroy()
cloneFrame.UIAspectRatioConstraint:Destroy()
cloneFrame.Grid:Destroy()
cloneFrame.Confirmation:Destroy()
cloneFrame.AnchorPoint = Vector2.new(0, 0.5)
cloneFrame.Position = UDim2.new(1, 10, 0.5, 0)
cloneFrame.Size = UDim2.new(0.5, 0, 1, 0)
cloneFrame.Visible = true
paintFrame.Position = UDim2.new(0.5, -((cloneFrame.AbsoluteSize.X / 2) + 5), 0.5, 0)
cloneGui.root = cloneFrame
end
function cloneGui.buildButtons()
local nextButton = player.PlayerGui.MainGui.PaintFrame.NextButton
local copyButton = nextButton:Clone()
local cloneButton = nextButton:Clone()
local buttonSize = UDim2.new(0.4, 0, 0.09, 0)
-- Initialize copy button.
copyButton.Parent = cloneGui.root
copyButton.Size = buttonSize
copyButton.Position = UDim2.new(0.28, 0, 0.895)
copyButton.Label.Text = 'COPY'
copyButton.Name = 'CopyButton'
-- Initialize clone button.
cloneButton.Parent = cloneGui.root
cloneButton.Size = buttonSize
cloneButton.Position = UDim2.new(0.72, 0, 0.895)
cloneButton.Label.Text = 'CLONE'
cloneButton.Name = 'CloneButton'
-- Animation functions.
for i, button in pairs({cloneButton, copyButton}) do
button.MouseEnter:Connect(function()
button:TweenSize(UDim2.new(buttonSize.X.Scale + 0.015, 0, buttonSize.Y.Scale + 0.015, 0), 'Out', 'Quad', 0.2, true)
end)
button.MouseLeave:Connect(function()
button:TweenSize(buttonSize, 'Out', 'Quad', 0.2, true)
end)
end
-- Button actions.
copyButton.MouseButton1Click:Connect(copyGrid)
cloneButton.MouseButton1Click:Connect(cloneGrid)
end
function cloneGui.buildScrollingFrame()
local scrollingFrame = Instance.new('ScrollingFrame')
local uiListLayout = Instance.new('UIListLayout')
local uiPadding = Instance.new('UIPadding')
-- Initialize scrolling frame.
scrollingFrame.Parent = cloneGui.root
scrollingFrame.AnchorPoint = Vector2.new(0.5, 0)
scrollingFrame.Position = UDim2.new(0.5, 0, 0.05, 0)
scrollingFrame.Size = UDim2.new(0.8, 0, 0.75, 0)
scrollingFrame.BackgroundTransparency = 1
scrollingFrame.BorderSizePixel = 0
scrollingFrame.ScrollBarImageColor3 = Color3.new((210 / 255), (76 / 255), (71 / 255))
scrollingFrame.ScrollBarThickness = 4
scrollingFrame.ZIndex = 3
-- Configure layout.
uiListLayout.Parent = scrollingFrame
uiListLayout.Padding = UDim.new(0, 10)
uiPadding.Parent = scrollingFrame
uiPadding.PaddingLeft = UDim.new(0.08, 0)
uiPadding.PaddingRight = UDim.new(0.08, 0)
uiPadding.PaddingTop = UDim.new(0, 5)
uiListLayout.Changed:Connect(function()
scrollingFrame.CanvasSize = UDim2.new(0, 0, 0, uiListLayout.AbsoluteContentSize.Y + 10)
end)
cloneGui.scrollingFrame = scrollingFrame
end
function cloneGui.addGrid(grid)
local UIStroke = player.PlayerGui.MainGui.PaintFrame.Grid.UIStroke:Clone()
local container = Instance.new('Frame')
local preview = grid:Clone()
-- Initialize new container.
container.Parent = cloneGui.scrollingFrame
container.Size = UDim2.new(1, 0, 1, 0)
container.SizeConstraint = Enum.SizeConstraint.RelativeXX
container.BackgroundTransparency = 0.8
container.ZIndex = 4
UIStroke.Thickness = 4.5
UIStroke.Parent = container
UIStroke.Enabled = false
-- Clone grid into container.
preview.Parent = container
if (cloneGui.selected == nil) then
cloneGui.selected = container
UIStroke.Enabled = true
end
container.InputBegan:Connect(function(userInput)
if (userInput.UserInputType == Enum.UserInputType.MouseButton1) then
cloneGui.selected.UIStroke.Enabled = false
UIStroke.Enabled = true
cloneGui.selected = container
end
end)
end
function copyGrid()
if (cloneGui.selected ~= nil) then
local target = cloneGui.selected.Grid
local destination = player.PlayerGui.MainGui.PaintFrame.Grid
for i = 1, 1024 do
destination[i].BackgroundColor3 = target[i].BackgroundColor3
end
end
end
function cloneGrid()
local remote = game.ReplicatedStorage.Remotes.CreateArt
local frameColor = "ffffff"
local frame = "Starter Frame"
local name = "a"
local cells = {}
local grid = cloneGui.selected.Grid
for i = 1, 1024 do
cells[i] = grid[i].BackgroundColor3:ToHex()
end
local payload = {}
payload["FrameColor"] = frameColor
payload["Frame"] = frame
payload["Name"] = name
payload["Cells"] = cells
remote:InvokeServer(payload)
end
function refreshGrids()
local objects = game.Workspace.Plots:GetDescendants()
for i, v in ipairs(objects) do
if (v.Name == 'Grid' and v.ClassName == 'Frame' and not collectionService:HasTag(v, 'cloned')) then
if (#v:GetChildren() == 1027) then
collectionService:AddTag(v, 'cloned')
cloneGui.addGrid(v)
end
end
end
end
cloneGui.buildRoot()
cloneGui.buildButtons()
cloneGui.buildScrollingFrame()
while (_G.refreshing) do
refreshGrids()
wait(0.1)
endStarving Artists Comet Hub Script:
Starving Artists Comet Hub Script:
loadstring(game:HttpGet("https://raw.githubusercontent.com/Noxislua/Scripts/refs/heads/main/Starving%20Artist"))()How to Use the Starving Artists Script
Copy a script from the list above first, then follow these in order.
- 01
Get a working executor - see our Roblox Executor list for free options on PC, Mobile, and Mac.
- 02
Launch Roblox and open Starving Artists.
- 03
Open your executor, then click Inject or Attach.
- 04
Copy any script above and paste it into the executor script box.
- 05
Press Execute. The menu will show up in the game.
- 06
Toggle Auto Farm, Speed Hack, ESP and other features from the GUI menu.
- 07
Always use an alt account to protect your main.

About The Starving Artists Script
Starving Artists is a simulator game where the entire loop is built around clicking, collecting, and pushing your numbers higher to unlock the next tier. The early game feels rewarding but the wall between mid and late game upgrades takes a serious amount of grinding to break through.
Auto farm and auto collect scripts are the most useful here since they run the core loop automatically without any input. Most of the options above are keyless and start working the moment you execute them.
Always use an alt account to protect your main from any flags. Check back here after updates since simulator mechanics change often and scripts sometimes need a refresh.
Looking for free rewards? Check out our Starving Artists Codes page for every working code.
The Starving Artists covers the full map layout, ability tiers, and patch history if you want to dig into the mechanics beyond what the script handles.
All scripts on this page are for educational purposes only. Using scripts in Roblox violates the Roblox Terms of Service and may result in your account being permanently banned or suspended without warning. RobloxDatabase.com is not responsible for any consequences from using these scripts. Always use an alt account, never your main.

