A passion-driven, faster fork of UniversalSynSaveInstance — the universal saveinstance revival, running smoother than ever. Also doubles as a fully editable Roblox Format File writer.
local Params = {
RepoURL = "https://raw.githubusercontent.com/henrq-crdso/ImprovedUniversalSynSaveInstance/main/",
SSI = "saveinstance",
}
local synsaveinstance = loadstring(
game:HttpGet(Params.RepoURL .. Params.SSI .. ".luau", true), Params.SSI)()
local Options = { SafeMode = false, Decompile = true } -- You can set your own configurations! See henrq-crdso.github.io or "Options Reference" for more information.
synsaveinstance(Options)All option names are case-insensitive. Pass any combination in the options table.
| Option | Default | Description |
|---|---|---|
__DEBUG_MODE |
false |
Print debug logs for unusual scenarios |
ReadMe |
true |
Include auxiliary readme file when supported |
SafeMode |
true |
Run a protection flow before saving |
KillAllScripts |
true |
Stop all scripts during the save process |
BoostFPS |
false |
Reduce visual load during export for better performance |
ShutdownWhenDone |
false |
Close/shutdown the environment when finished |
AntiIdle |
true |
Prevent idle disconnection during long saves |
ShowStatus |
true |
Show live progress during the save |
| Option | Default | Description |
|---|---|---|
mode |
"optimized" |
Save mode: full, optimized, or scripts. Use any invalid string to save only ExtraInstances |
FilePath |
false |
Output file name or path (no extension needed) |
AvoidFileOverwrite |
true |
Skip save if a file with the same name already exists |
Callback |
false |
Send serialized data to a function instead of writing to disk |
SaveCacheInterval |
0x1600 * 10 |
How often the cache is flushed during saving |
AlternativeWritefile |
true |
Split file writes using appendfile when available |
| Option | Default | Description |
|---|---|---|
Decompile |
true |
Attempt to decompile scripts when environment allows |
scriptcache |
true |
Reuse cache for duplicate scripts |
DecompileTimeout |
10 |
Per-script decompile time limit (seconds) |
DecompileJobless |
false |
Include already-available bytecode without spawning new jobs |
SaveBytecode |
false |
Include raw bytecode in output when supported |
DecompileIgnore |
{TextChatService} |
Classes or instances to skip during decompile |
IgnorePropertiesOfNotScriptsOnScriptsMode |
false |
In scripts mode, skip non-script object properties |
| Option | Default | Description |
|---|---|---|
IgnoreList |
{CoreGui, CorePackages} |
Exclude instances by reference, ClassName, or ClassName + Name |
ExtraInstances |
{} |
Additional instances to include in the save |
IgnoreProperties |
{} |
Property names to exclude from all instances |
Object |
false |
Save a specific instance as a model or place |
IsModel |
false |
When using Object, output as a .rbxm model |
NilInstances |
false |
Include parented-to-nil instances when accessible |
NilInstancesFixes |
table |
Per-class fixes for nil instances |
IgnoreDefaultProperties |
true |
Skip properties that match their default value |
IgnoreNotArchivable |
true |
Save instances even when Archivable = false |
IgnoreSpecialProperties |
false |
Avoid calling special properties; use fallback values instead |
| Option | Default | Description |
|---|---|---|
IsolateStarterPlayer |
false |
Save StarterPlayer into a separate folder |
IsolatePlayers |
false |
Save Players service into a separate folder |
IsolateLocalPlayer |
false |
Save LocalPlayer into a separate folder |
IsolateLocalPlayerCharacter |
false |
Save LocalPlayer.Character separately |
SavePlayerCharacters |
false |
Control whether player characters are included |
IgnoreDefaultPlayerScripts |
true |
Ignore default player scripts to prevent crashes |
| Option | Default | Description |
|---|---|---|
SaveNotCreatable |
false |
Include non-serializable instances as Folder substitutes |
NotCreatableFixes |
table |
Map non-creatable classes to replacement classes |
IgnoreSharedStrings |
true |
Skip SharedStrings to avoid crashes in some environments |
SharedStringOverwrite |
false |
Allow overwriting SharedStrings to reduce output size |
TreatUnionsAsParts |
false |
Convert UnionOperations to Parts when union reading fails |
Anonymous |
false |
Scrub identifying data (Name, UserId) from the final file |
Aliases are resolved before options. Some invert boolean values.
| Alias | Resolves to |
|---|---|
timeout |
DecompileTimeout |
FileName |
FilePath |
IgnoreArchivable |
IgnoreNotArchivable |
IgnoreDefaultProps |
IgnoreDefaultProperties |
InstancesBlacklist |
IgnoreList |
SaveLocalPlayer |
IsolateLocalPlayer |
IsolatePlayerGui |
IsolateLocalPlayer |
SavePlayerGui |
IsolateLocalPlayer |
SavePlayers |
IsolatePlayers |
SaveNonCreatable |
SaveNotCreatable |
SaveCharacters |
SavePlayerCharacters |
| Alias | Resolves to |
|---|---|
noscripts |
Decompile |
RemovePlayers |
IsolatePlayers |
RemovePlayerCharacters |
SavePlayerCharacters |
Save the full game:
local Options = { mode = "full", SafeMode = true }Save only scripts:
local Options = { mode = "scripts", DecompileTimeout = 20 }Save a specific object:
local Options = { Object = workspace, IsModel = true, FilePath = "WorkspaceExport", mode = "full" }Save a specific list of instances:
local Options = {
workspace.Map,
game.ReplicatedStorage.Assets,
}, {
FilePath = "SelectedInstances",
mode = "invalid", -- invalid mode = only ExtraInstances
IsModel = true,
}Fast export with no decompile:
local Options = { noscripts = true, SafeMode = false, BoostFPS = true, FilePath = "FastExport" }- Original Project: luau/UniversalSynSaveInstance — The foundation of this revival tool.
- Decompiler Support: Special thanks to plugiant5 for providing essential decompiler logic.
- Fork Maintainer: henrq-crdso — Focused on performance optimization and API refinement.
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). This license ensures that the software remains free and that any modifications or network-based implementations are also shared with the community. See the LICENSE file for the full legal text.
