Wraps the "extra" parallelized children of loops and the body of DefineFunction in pcall(...), logging errors via warn() instead of crashing the whole script. Off by default.
Adds "--!strict" to the top of the generated Luau. Off by default.
Removes comments and compacts indentation/blank lines in the generated Luau. Off by default.
Wait blocks that have children emit task.delay(n, function() ... end) instead of task.wait(n) followed by the children inline — avoids holding a thread just waiting. Wait without children is unaffected. Ignored if legacy wait is on. Off by default.
Prefixes each emitted block with "-- BlockName (BlockType)". Good for debugging, but clutters the output (opposite of minify — don't combine the two). Off by default.
Object paths with multiple dots (e.g. "Workspace.Model.Part") resolve intermediate hops with :FindFirstChild("X") instead of direct indexing, avoiding an error if an intermediate instance doesn't exist. The last segment of the path (usually a property, e.g. .Value) stays direct access. Off by default.
Annotates type (": number", ": string", etc.) on new "local" declarations from SetVariable blocks, when the type is confidently known by the VS. Omits the annotation when the type can't be safely inferred (e.g. Equation, Any, Nil). Off by default.
Emits wait(n) instead of task.wait(n), for compatibility with very old scripts. Takes priority over "use task.delay for Wait". Off by default.
Switches indentation from tab (default) to 2 or 4 spaces. Purely cosmetic.
Loop blocks (WhileLoop3, ForLoop2, LoopThroughChildren, LoopThroughDescendants, LoopThroughTable) with more than N direct children emit each child beyond the threshold inside task.spawn(function() ... end), instead of sequentially. Default 0 (any loop with 2+ direct children already parallelizes the extra children). Use a high number to turn it off.
Rewrites references to a service RetroStudio doesn't support to a service it does, everywhere they appear as an object path root (e.g. "ReplicatedStorage" → "Lighting" turns "game.ReplicatedStorage.X" into "game.Lighting.X").
RetroStudio doesn't have TextSize on TextLabel/TextButton/TextBox — only FontSize, a fixed Enum (Size8..Size48). When on, TextSize=N is converted to the nearest FontSize enum value automatically. Turn off if you're setting FontSize manually and don't want TextSize touched. On by default.
Choose which engine converts your Luau code into VisualSource. v2 is the default and recommended option.
Only affects a trailing top-level "return" statement. ModuleScript: emits a real Module Return block (the value require() would receive). Script / LocalScript: a trailing "return" isn't valid there, so it's omitted instead of being turned into a Module Return block. Only applies with Compiler set to v2 — ignored by v1 and almostlua.
🖼️
drop an image here or click to browse
PNG, JPG, GIF, WEBP — any size
Number of pixels per side (N×N). The image is resized to this before conversion. Larger = more blocks = heavier VS file. Max 256.