Skip to main content

SynSaveInstance

Represents the options for saving instances with custom settings using the synsaveinstance function.

Types

CustomOptions table

interface CustomOptions table {
__DEBUG_MODEboolean--

This will print debug logs to console about unusual scenarios. Recommended to enable if you wish to help us improve our products and find bugs / issues with it! Default: false

ReadMeboolean--

Default: true

Binaryboolean--

Saves as a binary file (.rbxl/.rbxm) instead of XML (.rbxlx/.rbxmx). Much smaller and faster to load. Pass XML = true for the opposite. Default: true

CompressionModestring--

How chunks are compressed in binary mode: "zstd", "lz4", or false for none. Default: "zstd"

CompressionLevelnumber--

Compression strength, higher is smaller but slower. Range is -7 to 22 inclusive. Default: 9

CopyToClipboardboolean--

Puts the finished output on the clipboard instead of writing a file, so you can paste it straight into Studio. Best for small saves -- a full place is usually far too big for the clipboard to handle. Default: false

RiskyServicesDisabled{
UGC,
Encoding,
Reflection=boolean
}--

Per-service kill switches for services games might detect. UGC skips UGCValidationService (GHP fallback reads, MeshPart.VertexCount). Encoding skips EncodingService (base64 encode/decode, zstd compression falls back to other funcs). Reflection skips ReflectionService (one of several API dump fallbacks, Content property lookups -- falls back to the other API dump sources). Examples: {UGC = true} disables only UGCValidationService; {Encoding = true, Reflection = true} disables both, leaving UGC untouched. Default: {UGC = false, Encoding = false, Reflection = false}

SafeModeboolean--

Kicks you before Saving, which keeps you safe. HIGHLY RECOMMENDED TO KEEP ENABLED. Default: false

KillAllScriptsboolean--

Kills all scripts to further protect you. SafeMode also enables this by default. If you can't move after saving then this is the reason. HIGHLY RECOMMENDED TO KEEP ENABLED. Default: false

BoostFPSboolean--

Massively boosts FPS by disabling 3D rendering. Other options also enable it, like: SafeMode. Default: false

ShutdownWhenDoneboolean--

Shuts the game down after saveinstance is finished. Default: false

AntiIdleboolean--

Prevents the 20-minute-Idle Kick. Default: true

Anonymous{boolean | table{
UserId=string?,
Name=string?
}}--
  • RISKY: Removes your Name and UserId from the file -- useful for games that store them in GUIs or other Instances. Can also be a table with UserId and/or Name keys to pick the replacements. May mess up unrelated text or numbers that happen to match. Inside attributes and tags the replacement is padded to the same length, so a name shorter than yours comes out as for example Roblox____. Default: false
ShowStatusboolean--

Default: true

Callbackfunction--

If set, the serialized data will be sent to the callback function instead of to file. Default: false

modestring--

Valid modes: full, optimized, scripts. Change this to invalid mode like "invalid" if you only want ExtraInstances. "optimized" mode is NOT supported with @Object option. Default: "optimized"

Decompileboolean--

Script decompiling. Default: true

scriptcacheboolean--

Use decompiled script cache to avoid decompiling duplicate scripts. Default: true

DecompileTimeoutnumber--

If the decompilation run time exceeds this value it gets cancelled. Set to -1 to disable timeout. Default: 10

BytecodeTimeoutnumber--

If the SaveBytecode run time exceeds this value it gets cancelled. Set to -1 to disable timeout. Default: 3

DecompileJoblessboolean--

Includes already decompiled code in the output. No new scripts are decompiled. Default: false

SaveBytecodeboolean--

Includes bytecode in the output. Useful if you wish to be able to decompile it yourself later. Respects @DecompileIgnore. Default: false

DecompileIgnore{Instance | Instance.ClassName | [Instance.ClassName]={Instance.Name}}--

Ignores matched instances and their descendants by default. To ignore only the instance itself, set the value to false. Examples: "Chat" matches any instance with ClassName "Chat"; Players = {"MyPlayerName"} matches class "Players" AND name "MyPlayerName" only; workspace matches a specific instance by reference; [workspace] = false matches a specific instance by reference, ignoring only itself and not its descendants. Default: {TextChatService}

IgnoreList{Instance | Instance.ClassName | [Instance.ClassName]={Instance.Name | false}}--

Structure mirrors @DecompileIgnore, except false means keep the instance but ignore its descendants. Supports both instance references and ClassName strings. Examples: "CoreGui" skips entirely; CorePackages = false keeps the instance but skips its descendants; Players = {"SomePlayer"} skips a specific named instance with specific ClassName. Default: {CoreGui, CorePackages, Packages = false}

ExtraInstances{Instance}--

If used with any invalid mode (like "invalidmode") it will only save these instances. Default: {}

IgnorePropertiestable--

Ignores properties by Name. Default: {}

SaveCacheIntervalnumber--

The less the value the more often it saves, but that would mean less performance due to constantly saving. XML Only. Default: 0x1600 * 10

FilePathstring--

The name (can include a path) of the file to save to. If it has no extension, .rbxmx/rbxm (models) or .rbxlx/rbxl (places) is appended; an existing extension is left as-is. Ignores OPTIONS.AvoidFileOverwrite. Default: false

AvoidFileOverwriteboolean--

Prevents writing to place file that already exists. Default: true

ObjectInstance--
  • If provided, saves as .rbxmx (Model file) instead. If Object is game, it will be saved as a .rbxl file. MUST BE AN INSTANCE REFERENCE, FOR EXAMPLE - game.Workspace. "optimized" mode is NOT supported with this option. If IsModel is set to false then Object specified here will be saved as a place file. Default: false
IsModelboolean--

If Object is specified then sets to true automatically, unless you set it to false. Default: false

NilInstancesboolean--

Save instances that aren't Parented (Parented to nil). Default: false

NilInstancesFixes{[Instance.ClassName]=function}--
  • This can cause some Classes to be fixed even though they might not need the fix (better be safe than sorry though). For example, Bones inherit from Attachment if we dont define them in the NilInstancesFixes then this will catch them anyways. TO AVOID THIS BEHAVIOR USE THIS EXAMPLE: {ClassName_That_Doesnt_Need_Fix = false}. Default: {Animator = function, AdPortal = function, BaseWrap = function, Attachment = function}
IgnoreDefaultPropertiesboolean--

Ignores default properties during saving. XML Only (XML=true) because Binary (default) doesn't really need it. Default: true

IgnoreNotArchivableboolean--

Ignores the Archivable property and saves Non-Archivable instances. Default: true

IgnorePropertiesOfNotScriptsOnScriptsModeboolean--

Ignores property of every instance that is not a script in "scripts" mode. Default: false

IgnoreSpecialPropertiesboolean--

Prevents calls to gethiddenproperty and uses fallback methods instead. This also helps with crashes. If your file is corrupted after saving, you can try turning this on. Default: false

IsolateStarterPlayerboolean--

Saves StarterPlayer as separate folder, children of the original instance will be ignored. Default: false

IsolatePlayersboolean--

Saves All Players as separate folder, children of the original instance will be ignored. Default: false

IsolateLocalPlayerboolean--

Saves LocalPlayer as separate folder, original instance will be ignored. Default: false

IsolateLocalPlayerCharacterboolean--

Saves LocalPlayer.Character as separate folder, original instance will be ignored. Default: false

SavePlayerCharactersboolean--

Save player characters while saving. Default: false

SaveNotCreatableboolean--
  • Includes non-serializable instances as Folder objects (Name is misleading as this is mostly a fix for certain NilInstances and isn't always related to NotCreatable). Other options also enable it, like: IsolatePlayers, IsolateLocalPlayer, etc. Default: false
NotCreatableFixestable<Instance.ClassName>--
  • {"Player"} is the same as {Player = "Folder"}; Format like {SpawnLocation = "Part"} is only to be used when SpawnLocation inherits from "Part" AND "Part" is Creatable. Default: { "", "Player", "PlayerScripts", "PlayerGui", "TouchTransmitter" }
AlternativeWritefileboolean--
  • Splits file content string into segments and writes them using appendfile. This might help with crashes when it starts writing to file. Though there is a risk of appendfile working incorrectly on some executors. Default: true
IgnoreDefaultPlayerScriptsboolean--
  • RISKY: Ignores Default PlayerScripts like PlayerModule & RbxCharacterSounds. Prevents crashes on certain Executors. Default: true
SharedBinaryStringsboolean--

Stores BinaryString values in a shared pool so identical ones are only written once, instead of repeating them for every instance. Good when many instances hold the same data (like copies of the same mesh) -- can make files noticeably smaller. Slightly bigger when everything is unique. Roblox doesn't officially support this, so there's a small chance it confuses Studio. Default: false

TreatUnionsAsPartsboolean--
  • RISKY: Converts all UnionOperations to Parts. Useful if your Executor isn't able to save (read) Unions, because otherwise they will be invisible. Default: false (except Solara)
}
  • Structure of the main CustomOptions table.
  • Note: Options are case-insensitive, meaning you can type NilInstances option as nilInStaNces and it still will be valid.

OptionsAliases

interface OptionsAliases {
Clipboardstring--

CopyToClipboard

DecompileScriptsstring--

Decompile

FileNamestring--

FilePath

IgnoreArchivablestring--

IgnoreNotArchivable

IgnoreDefaultPropsstring--

IgnoreDefaultProperties

InstancesBlackliststring--

IgnoreList

IsolatePlayerGuistring--

IsolateLocalPlayer

SaveCharactersstring--

SavePlayerCharacters

SaveLocalPlayerstring--

IsolateLocalPlayer

SaveNilInstancesstring--

NilInstances

SaveNonCreatablestring--

SaveNotCreatable

SavePlayerGuistring--

IsolateLocalPlayer

SavePlayersstring--

IsolatePlayers

StatusTextstring--

ShowStatus

timeoutstring--

DecompileTimeout

}

Alias → Canonical option mapping for the SynSaveInstance.CustomOptions table. Format: { Alias = CanonicalOption } These are resolved before user options are processed and cannot be modified at runtime.

OptionsAliasesInverse

interface OptionsAliasesInverse {
DisableCompressionstring--

CompressionMode

noscriptsstring--

Decompile

RemovePlayerCharactersstring--

SavePlayerCharacters

RemovePlayersstring--

IsolatePlayers

XMLstring--

Binary

}

Alias → Canonical option mapping with boolean inversion. Format: { Alias = CanonicalOption } These aliases invert the provided boolean value before applying it. Example: noscripts = true → Decompile = false These are resolved before user options are processed and cannot be modified at runtime.

Functions

saveinstance

This is a yielding function. When called, it will pause the Lua thread that called the function until a result is ready to be returned, without interrupting other scripts. Yields
SynSaveInstance.saveinstance(
Parameter_1variant<table,table<Instance>>,--

Can either be SynSaveInstance.CustomOptions table or a filled with instances ({Instance}), (then it will be treated as ExtraInstances with an invalid mode and IsModel will be true).

Parameter_2table--

[OPTIONAL] If present, then Parameter_2 will be assumed to be SynSaveInstance.CustomOptions table. And then if the Parameter_1 is an Instance, then it will be assumed to be SynSaveInstance.CustomOptions table.Object. If Parameter_1 is a table filled with instances ({Instance}), then it will be assumed to be SynSaveInstance.CustomOptions table.ExtraInstances and IsModel will be true). This exists for sake compatibility with saveinstance(game, {})

) → ()

Saves instances with specified options. Example:

local Params = {
	RepoURL = "https://raw.githubusercontent.com/luau/UniversalSynSaveInstance/main/",
	SSI = "saveinstance",
}

local synsaveinstance = loadstring(game:HttpGet(Params.RepoURL .. Params.SSI .. ".luau", true), Params.SSI)()

local CustomOptions = { SafeMode = true, DecompileTimeout = 15, SaveBytecode = true }

synsaveinstance(CustomOptions)
Show raw api
{
    "functions": [
        {
            "name": "saveinstance",
            "desc": "Saves instances with specified options. Example:\n```lua\nlocal Params = {\n\tRepoURL = \"https://raw.githubusercontent.com/luau/UniversalSynSaveInstance/main/\",\n\tSSI = \"saveinstance\",\n}\n\nlocal synsaveinstance = loadstring(game:HttpGet(Params.RepoURL .. Params.SSI .. \".luau\", true), Params.SSI)()\n\nlocal CustomOptions = { SafeMode = true, DecompileTimeout = 15, SaveBytecode = true }\n\nsynsaveinstance(CustomOptions)\n```",
            "params": [
                {
                    "name": "Parameter_1",
                    "desc": "Can either be [SynSaveInstance.CustomOptions table] or a filled with instances ({Instance}), (then it will be treated as ExtraInstances with an invalid mode and IsModel will be true).",
                    "lua_type": "variant<table, table<Instance>>"
                },
                {
                    "name": "Parameter_2",
                    "desc": "[OPTIONAL] If present, then Parameter_2 will be assumed to be [SynSaveInstance.CustomOptions table]. And then if the Parameter_1 is an Instance, then it will be assumed to be [SynSaveInstance.CustomOptions table].Object. If Parameter_1 is a table filled with instances ({Instance}), then it will be assumed to be [SynSaveInstance.CustomOptions table].ExtraInstances and IsModel will be true). This exists for sake compatibility with `saveinstance(game, {})`",
                    "lua_type": "table"
                }
            ],
            "returns": [],
            "function_type": "static",
            "yields": true,
            "source": {
                "line": 3666,
                "path": "saveinstance.luau"
            }
        }
    ],
    "properties": [],
    "types": [
        {
            "name": "CustomOptions table",
            "desc": "* Structure of the main CustomOptions table.\n* Note: Options are case-insensitive, meaning you can type `NilInstances` option as `nilInStaNces` and it still will be valid.",
            "fields": [
                {
                    "name": "__DEBUG_MODE",
                    "lua_type": "boolean",
                    "desc": "This will print debug logs to console about unusual scenarios. Recommended to enable if you wish to help us improve our products and find bugs / issues with it! ___Default:___ false"
                },
                {
                    "name": "ReadMe",
                    "lua_type": "boolean",
                    "desc": "___Default:___ true"
                },
                {
                    "name": "Binary",
                    "lua_type": "boolean",
                    "desc": "Saves as a binary file (.rbxl/.rbxm) instead of XML (.rbxlx/.rbxmx). Much smaller and faster to load. Pass `XML = true` for the opposite. ___Default:___ true"
                },
                {
                    "name": "CompressionMode",
                    "lua_type": "string",
                    "desc": "How chunks are compressed in binary mode: \"zstd\", \"lz4\", or false for none. ___Default:___ \"zstd\""
                },
                {
                    "name": "CompressionLevel",
                    "lua_type": "number",
                    "desc": "Compression strength, higher is smaller but slower. Range is -7 to 22 inclusive. ___Default:___ 9"
                },
                {
                    "name": "CopyToClipboard",
                    "lua_type": "boolean",
                    "desc": "Puts the finished output on the clipboard instead of writing a file, so you can paste it straight into Studio. Best for small saves -- a full place is usually far too big for the clipboard to handle. ___Default:___ false"
                },
                {
                    "name": "RiskyServicesDisabled",
                    "lua_type": "{UGC, Encoding, Reflection = boolean}",
                    "desc": "Per-service kill switches for services games might detect. `UGC` skips UGCValidationService (GHP fallback reads, `MeshPart.VertexCount`). `Encoding` skips EncodingService (base64 encode/decode, zstd compression falls back to other funcs). `Reflection` skips ReflectionService (one of several API dump fallbacks, `Content` property lookups -- falls back to the other API dump sources). Examples: `{UGC = true}` disables only UGCValidationService; `{Encoding = true, Reflection = true}` disables both, leaving UGC untouched. ___Default:___ {UGC = false, Encoding = false, Reflection = false}"
                },
                {
                    "name": "SafeMode",
                    "lua_type": "boolean",
                    "desc": "Kicks you before Saving, which keeps you safe. **HIGHLY RECOMMENDED TO KEEP ENABLED**. ___Default:___ false"
                },
                {
                    "name": "KillAllScripts",
                    "lua_type": "boolean",
                    "desc": "Kills all scripts to further protect you. SafeMode also enables this by default. If you can't move after saving then this is the reason. **HIGHLY RECOMMENDED TO KEEP ENABLED**. ___Default:___ false"
                },
                {
                    "name": "BoostFPS",
                    "lua_type": "boolean",
                    "desc": "Massively boosts FPS by disabling 3D rendering. Other options also enable it, like: SafeMode. ___Default:___ false"
                },
                {
                    "name": "ShutdownWhenDone",
                    "lua_type": "boolean",
                    "desc": "Shuts the game down after saveinstance is finished. ___Default:___ false"
                },
                {
                    "name": "AntiIdle",
                    "lua_type": "boolean",
                    "desc": "Prevents the 20-minute-Idle Kick. ___Default:___ true"
                },
                {
                    "name": "Anonymous",
                    "lua_type": "{boolean|table{UserId = string?, Name = string?}}",
                    "desc": "* **RISKY:** Removes your Name and UserId from the file -- useful for games that store them in GUIs or other Instances. Can also be a table with UserId and/or Name keys to pick the replacements. May mess up unrelated text or numbers that happen to match. Inside attributes and tags the replacement is padded to the same length, so a name shorter than yours comes out as for example `Roblox____`. ___Default:___ false"
                },
                {
                    "name": "ShowStatus",
                    "lua_type": "boolean",
                    "desc": "___Default:___ true"
                },
                {
                    "name": "Callback",
                    "lua_type": "function",
                    "desc": "If set, the serialized data will be sent to the callback function instead of to file. ___Default:___ false"
                },
                {
                    "name": "mode",
                    "lua_type": "string",
                    "desc": "Valid modes: full, optimized, scripts. Change this to invalid mode like \"invalid\" if you only want ExtraInstances. \"optimized\" mode is **NOT** supported with *@Object* option. ___Default:___ `\"optimized\"`"
                },
                {
                    "name": "Decompile",
                    "lua_type": "boolean",
                    "desc": "Script decompiling. ___Default:___ true"
                },
                {
                    "name": "scriptcache",
                    "lua_type": "boolean",
                    "desc": "Use decompiled script cache to avoid decompiling duplicate scripts. ___Default:___ true"
                },
                {
                    "name": "DecompileTimeout",
                    "lua_type": "number",
                    "desc": "If the decompilation run time exceeds this value it gets cancelled. Set to -1 to disable timeout. ___Default:___ 10"
                },
                {
                    "name": "BytecodeTimeout",
                    "lua_type": "number",
                    "desc": "If the SaveBytecode run time exceeds this value it gets cancelled. Set to -1 to disable timeout. ___Default:___ 3"
                },
                {
                    "name": "DecompileJobless",
                    "lua_type": "boolean",
                    "desc": "Includes already decompiled code in the output. No new scripts are decompiled. ___Default:___ false"
                },
                {
                    "name": "SaveBytecode",
                    "lua_type": "boolean",
                    "desc": "Includes bytecode in the output. Useful if you wish to be able to decompile it yourself later. Respects **@DecompileIgnore**. ___Default:___ false"
                },
                {
                    "name": "DecompileIgnore",
                    "lua_type": "{Instance | Instance.ClassName | [Instance.ClassName] = {Instance.Name}}",
                    "desc": "Ignores matched instances and their descendants by default. To ignore only the instance itself, set the value to `false`. Examples: `\"Chat\"` matches any instance with ClassName \"Chat\"; `Players = {\"MyPlayerName\"}` matches class \"Players\" AND name \"MyPlayerName\" only; `workspace` matches a specific instance by reference; `[workspace] = false` matches a specific instance by reference, ignoring only itself and not its descendants. ___Default:___ {TextChatService}"
                },
                {
                    "name": "IgnoreList",
                    "lua_type": "{Instance | Instance.ClassName | [Instance.ClassName] = {Instance.Name | false}}",
                    "desc": "Structure mirrors **@DecompileIgnore**, except `false` means keep the instance but ignore its descendants. Supports both instance references and ClassName strings. Examples: `\"CoreGui\"` skips entirely; `CorePackages = false` keeps the instance but skips its descendants; `Players = {\"SomePlayer\"}` skips a specific named instance with specific ClassName. ___Default:___ {CoreGui, CorePackages, Packages = false}"
                },
                {
                    "name": "ExtraInstances",
                    "lua_type": "{Instance}",
                    "desc": "If used with any invalid mode (like \"invalidmode\") it will only save these instances. ___Default:___ {}"
                },
                {
                    "name": "IgnoreProperties",
                    "lua_type": "table",
                    "desc": "Ignores properties by Name. ___Default:___ {}"
                },
                {
                    "name": "SaveCacheInterval",
                    "lua_type": "number",
                    "desc": "The less the value the more often it saves, but that would mean less performance due to constantly saving. XML Only. ___Default:___ 0x1600 * 10"
                },
                {
                    "name": "FilePath",
                    "lua_type": "string",
                    "desc": "The name (can include a path) of the file to save to. If it has no extension, `.rbxmx/rbxm` (models) or `.rbxlx/rbxl` (places) is appended; an existing extension is left as-is. Ignores `OPTIONS.AvoidFileOverwrite`. ___Default:___ false"
                },
                {
                    "name": "AvoidFileOverwrite",
                    "lua_type": "boolean",
                    "desc": "Prevents writing to place file that already exists. ___Default:___ true"
                },
                {
                    "name": "Object",
                    "lua_type": "Instance",
                    "desc": "* If provided, saves as .rbxmx (Model file) instead. If Object is game, it will be saved as a .rbxl file. **MUST BE AN INSTANCE REFERENCE, FOR EXAMPLE - *game.Workspace***. `\"optimized\"` mode is **NOT** supported with this option. If IsModel is set to false then Object specified here will be saved as a place file. ___Default:___ false"
                },
                {
                    "name": "IsModel",
                    "lua_type": "boolean",
                    "desc": "If Object is specified then sets to true automatically, unless you set it to false. ___Default:___ false"
                },
                {
                    "name": "NilInstances",
                    "lua_type": "boolean",
                    "desc": "Save instances that aren't Parented (Parented to nil). ___Default:___ false"
                },
                {
                    "name": "NilInstancesFixes",
                    "lua_type": "{[Instance.ClassName] = function}",
                    "desc": "* This can cause some Classes to be fixed even though they might not need the fix (better be safe than sorry though). For example, Bones inherit from Attachment if we dont define them in the NilInstancesFixes then this will catch them anyways. **TO AVOID THIS BEHAVIOR USE THIS EXAMPLE:** {ClassName_That_Doesnt_Need_Fix = false}. ___Default:___ {Animator = function, AdPortal = function, BaseWrap = function, Attachment = function}"
                },
                {
                    "name": "IgnoreDefaultProperties",
                    "lua_type": "boolean",
                    "desc": "Ignores default properties during saving. XML Only (XML=true) because Binary (default) doesn't really need it.  ___Default:___ true"
                },
                {
                    "name": "IgnoreNotArchivable",
                    "lua_type": "boolean",
                    "desc": "Ignores the Archivable property and saves Non-Archivable instances. ___Default:___ true"
                },
                {
                    "name": "IgnorePropertiesOfNotScriptsOnScriptsMode",
                    "lua_type": "boolean",
                    "desc": "Ignores property of every instance that is not a script in \"scripts\" mode. ___Default:___ false"
                },
                {
                    "name": "IgnoreSpecialProperties",
                    "lua_type": "boolean",
                    "desc": "Prevents calls to `gethiddenproperty` and uses fallback methods instead. This also helps with crashes. If your file is corrupted after saving, you can try turning this on. ___Default:___ false"
                },
                {
                    "name": "IsolateStarterPlayer",
                    "lua_type": "boolean",
                    "desc": "Saves StarterPlayer as separate folder, children of the original instance will be ignored. ___Default:___ false"
                },
                {
                    "name": "IsolatePlayers",
                    "lua_type": "boolean",
                    "desc": "Saves All Players as separate folder, children of the original instance will be ignored. ___Default:___ false"
                },
                {
                    "name": "IsolateLocalPlayer",
                    "lua_type": "boolean",
                    "desc": "Saves LocalPlayer as separate folder, original instance will be ignored. ___Default:___ false"
                },
                {
                    "name": "IsolateLocalPlayerCharacter",
                    "lua_type": "boolean",
                    "desc": "Saves LocalPlayer.Character as separate folder, original instance will be ignored. ___Default:___ false"
                },
                {
                    "name": "SavePlayerCharacters",
                    "lua_type": "boolean",
                    "desc": "Save player characters while saving. ___Default:___ false"
                },
                {
                    "name": "SaveNotCreatable",
                    "lua_type": "boolean",
                    "desc": "* Includes non-serializable instances as Folder objects (Name is misleading as this is mostly a fix for certain NilInstances and isn't always related to NotCreatable). Other options also enable it, like: IsolatePlayers, IsolateLocalPlayer, etc. ___Default:___ false"
                },
                {
                    "name": "NotCreatableFixes",
                    "lua_type": "table<Instance.ClassName>",
                    "desc": "* {\"Player\"} is the same as {Player = \"Folder\"}; Format like {SpawnLocation = \"Part\"} is only to be used when SpawnLocation inherits from \"Part\" AND \"Part\" is Creatable. ___Default:___ { \"\", \"Player\", \"PlayerScripts\", \"PlayerGui\", \"TouchTransmitter\" }"
                },
                {
                    "name": "AlternativeWritefile",
                    "lua_type": "boolean",
                    "desc": "* Splits file content string into segments and writes them using appendfile. This might help with crashes when it starts writing to file. Though there is a risk of appendfile working incorrectly on some executors. ___Default:___ true"
                },
                {
                    "name": "IgnoreDefaultPlayerScripts",
                    "lua_type": "boolean",
                    "desc": "* **RISKY**: Ignores Default PlayerScripts like PlayerModule & RbxCharacterSounds. Prevents crashes on certain Executors. ___Default:___ true"
                },
                {
                    "name": "SharedBinaryStrings",
                    "lua_type": "boolean",
                    "desc": "Stores BinaryString values in a shared pool so identical ones are only written once, instead of repeating them for every instance. Good when many instances hold the same data (like copies of the same mesh) -- can make files noticeably smaller. Slightly bigger when everything is unique. Roblox doesn't officially support this, so there's a small chance it confuses Studio. ___Default:___ false"
                },
                {
                    "name": "TreatUnionsAsParts",
                    "lua_type": "boolean",
                    "desc": "* **RISKY:** Converts all UnionOperations to Parts. Useful if your Executor isn't able to save (read) Unions, because otherwise they will be invisible. ___Default:___ false (except Solara)"
                }
            ],
            "source": {
                "line": 3611,
                "path": "saveinstance.luau"
            }
        },
        {
            "name": "OptionsAliases",
            "desc": "Alias → Canonical option mapping for the [SynSaveInstance.CustomOptions] table.\nFormat: { Alias = CanonicalOption }\nThese are resolved before user options are processed and cannot be modified at runtime.",
            "fields": [
                {
                    "name": "Clipboard",
                    "lua_type": "string",
                    "desc": "CopyToClipboard"
                },
                {
                    "name": "DecompileScripts",
                    "lua_type": "string",
                    "desc": "Decompile"
                },
                {
                    "name": "FileName",
                    "lua_type": "string",
                    "desc": "FilePath"
                },
                {
                    "name": "IgnoreArchivable",
                    "lua_type": "string",
                    "desc": "IgnoreNotArchivable"
                },
                {
                    "name": "IgnoreDefaultProps",
                    "lua_type": "string",
                    "desc": "IgnoreDefaultProperties"
                },
                {
                    "name": "InstancesBlacklist",
                    "lua_type": "string",
                    "desc": "IgnoreList"
                },
                {
                    "name": "IsolatePlayerGui",
                    "lua_type": "string",
                    "desc": "IsolateLocalPlayer"
                },
                {
                    "name": "SaveCharacters",
                    "lua_type": "string",
                    "desc": "SavePlayerCharacters"
                },
                {
                    "name": "SaveLocalPlayer",
                    "lua_type": "string",
                    "desc": "IsolateLocalPlayer"
                },
                {
                    "name": "SaveNilInstances",
                    "lua_type": "string",
                    "desc": "NilInstances"
                },
                {
                    "name": "SaveNonCreatable",
                    "lua_type": "string",
                    "desc": "SaveNotCreatable"
                },
                {
                    "name": "SavePlayerGui",
                    "lua_type": "string",
                    "desc": "IsolateLocalPlayer"
                },
                {
                    "name": "SavePlayers",
                    "lua_type": "string",
                    "desc": "IsolatePlayers"
                },
                {
                    "name": "StatusText",
                    "lua_type": "string",
                    "desc": "ShowStatus"
                },
                {
                    "name": "timeout",
                    "lua_type": "string",
                    "desc": "DecompileTimeout"
                }
            ],
            "source": {
                "line": 3632,
                "path": "saveinstance.luau"
            }
        },
        {
            "name": "OptionsAliasesInverse",
            "desc": "Alias → Canonical option mapping with boolean inversion.\nFormat: { Alias = CanonicalOption }\nThese aliases invert the provided boolean value before applying it.\nExample: noscripts = true → Decompile = false\nThese are resolved before user options are processed and cannot be modified at runtime.",
            "fields": [
                {
                    "name": "DisableCompression",
                    "lua_type": "string",
                    "desc": "CompressionMode"
                },
                {
                    "name": "noscripts",
                    "lua_type": "string",
                    "desc": "Decompile"
                },
                {
                    "name": "RemovePlayerCharacters",
                    "lua_type": "string",
                    "desc": "SavePlayerCharacters"
                },
                {
                    "name": "RemovePlayers",
                    "lua_type": "string",
                    "desc": "IsolatePlayers"
                },
                {
                    "name": "XML",
                    "lua_type": "string",
                    "desc": "Binary"
                }
            ],
            "source": {
                "line": 3645,
                "path": "saveinstance.luau"
            }
        }
    ],
    "name": "SynSaveInstance",
    "desc": "Represents the options for saving instances with custom settings using the synsaveinstance function.",
    "source": {
        "line": 3558,
        "path": "saveinstance.luau"
    }
}