Switch at runtime
SetProvider changes the default, or pass a provider to a single lookup. Providers load lazily the first time you use them.
Icon registry for Roblox
Lucide, Tabler, Heroicons, Phosphor and Fluent, packed into spritesheets and fonts. Switch providers at runtime and get a ready-to-use asset for any icon.
-- load the registry
local Icons = loadstring(
game:HttpGet("…/source.lua")
)()
-- pick a provider, then look icons up by name
Icons.SetProvider("tabler")
local icon = Icons.GetAsset("moon")
image.Image = icon.Url
image.ImageRectSize = icon.ImageRectSize
image.ImageRectOffset = icon.ImageRectOffset
Pick the look you want. Every provider shares the same API.
Loading providers…
The loader adapts to what your environment supports.
SetProvider changes the default, or pass a provider to a single lookup. Providers load lazily the first time you use them.
Every icon returns an image rect for ImageLabel. Providers with a font also return FontFace and Text for crisp, scalable icons.
Spritesheets, fonts and data are stored per build, and older builds are pruned. Without file support it falls back to uploaded Roblox assets.
Renamed icons keep working. Aliases point at the real icon, so old names from your scripts still find their sprite.
Three calls cover most scripts.
local Icons = loadstring(game:HttpGet(""))()
print(Icons.Providers) -- sorted provider ids
Icons.SetProvider("lucide")
local icon = Icons.GetAsset("moon") -- active provider
local other = Icons.GetAsset("moon", "tabler") -- one-off lookup