…I was some sort of upset with the development of Script Sync, also set up of other tools did not inspire me because of their complexity… so here it goes:
A Roblox Studio plugin for two-way script synchronization between your Studio project and an external file system, with a built-in unified diff viewer.
Overview
script_io bridges your Roblox Studio scripts and local file system, enabling an external-editor workflow. It connects to a local HTTP server to sync your Lua scripts back and forth, compare changes, and review diffs — all without leaving Studio.
Key Features
- Two-way sync: Save scripts from Studio to your local file system and load them back. The plugin tracks which scripts are new, changed, or removed using MD5 checksums.
- Unified diff viewer: A dedicated dockable widget displays line-by-line diffs with color-coded additions, removals, and context lines. Includes in-diff search with navigation, whitespace error highlighting (trailing spaces, missing trailing newline), and a one-click whitespace fixer.
- Selective hunk operations: Select multiple diff lines and choose to revert or save only those specific hunks — no need to apply an all-or-nothing approach.
- Two connection modes:
- Server mode: Connects to a local HTTP server (configurable port) to read/write scripts from your file system, request checksums, and fetch diffs.
- Draft mode: Compares the committed .Source property of scripts against their live editor source, useful for reviewing unsaved changes before committing.
- Bulk operations: Save all changed files or revert all changes in one action, with confirmation popups for safety.
- Per-file actions: View diff, save, revert, delete, or load individual scripts directly from the status panel.
- Script type awareness: Properly maps Script, LocalScript, and ModuleScript to distinct file extensions (.s.lua, .l.lua, .m.lua).
- Hidden scripts list: Hide specific scripts from the change list so they won’t be included in bulk operations. The list is per-folder and persisted across sessions.
- Studio theme integration: Automatically adapts to light/dark themes and updates on theme change.
- Plugin action: A keyboard-shortcut-compatible action to instantly update the status and show the diff for the currently open script.
- Configurable folder: Set the base folder path that maps to your project’s DataModel hierarchy for clean relative paths.
How it works
The plugin computes MD5 checksums of all LuaSourceContainer instances in your game and compares them against checksums from your file system (or committed source in draft mode). It then presents new, changed, and removed files in the status widget, where you can review diffs, save, revert, or delete them individually or in bulk.
Requirements
- A local HTTP server running on your machine (for server mode) that exposes /save/, /load/, /checksums/, /diff/, and /delete/ endpoints to synchronize with local file system.
Get the plugin: https://create.roblox.com/store/asset/108632449188694/scriptiopublic
Get HTTP server (python script): GitHub - af2048/script_io_server: http server for Roblox plugin · GitHub
UI:
-
example of status widget:
not saved files (exist in studio, not on file system):
changed file:
deleted file in studio (exists on file system):
-
diff widget:
Required permissions:
- HTTP requests to the server’s port to sync with file system
- Script Injection is what this plugin does.
Limitations:
- duplicated paths are not supported: there should be warnings in the output window. This is a price of keeping instances pristine in your experience: the plugin does not set any tags/attributes to track/identify them.
- no automatic sync[!] with background checks/polls and so on: click “update status” button when needed
Warning!
- the plugin can be destructive if used not correctly. Save you experience before pressing any button till you get used to the plugin.
To help with that:
- in “draft” mode (with team create) revert/save require confirmation
- in “server” mode only revert requires confirmation, it’s assumed that you have “protected” changes on file system with a version control system
You’ve been warned.
Questions? Issues? Leave a comment! Thanks!

























