To undo in Roblox Studio, press Ctrl + Z on Windows or Command + Z on Mac to reverse the latest recorded edit. Repeat the shortcut to undo more edits, or choose Edit > Redo to reapply an undone change. Redo shortcuts vary between scripts, text boxes, and animation controls, so use the combination for the editor you have focused.
The short version
- Undo an edit: Press Ctrl + Z on Windows or Command + Z on Mac.
- Redo an edit: Choose Edit > Redo, or use the shortcut assigned to your active editor.
- Keep buttons handy: Add Undo and Redo to a custom toolbar tab.
- Recover older work: Use Version History or an earlier local place file when ordinary undo cannot recover the change.
| Method or option | How to use it | Best fit or limit |
|---|---|---|
| Keyboard undo | Ctrl + Z on Windows; Command + Z on Mac | Latest recorded place edit |
| Script Editor shortcuts | Windows redo uses Ctrl + Y; Mac redo uses Command + Shift + Z | Focused script editor |
| Edit menu | Edit > Undo or Redo | Available history in the active context |
| New custom tab | +, then Add tools | Clickable undo and redo buttons |
| Duplicate toolbar tab | Duplicate tab, then Add tools | Customize a copy of a default tab |
| Local toolbar configuration | Edit or share custom tab JSON files | Advanced customization stored on each machine |
| Quick Open Actions | Ctrl + Alt + P on Windows; Command + Option + P on Mac | Search for an undo or redo action |
| Shortcut assignments | Customize Shortcuts in the File menu | Inspect or change key bindings |
| Text input undo and redo | Use text-field shortcuts with the input focused | Typing inside a text box |
| Animation pose undo | Ctrl + Z on Windows; Command + Z on Mac | Pose changes in the Animation Editor |
| Facial slider history | Windows redo uses Ctrl + Y; Mac redo uses Command + Y | Face Animation Editor sliders |
| Facial slider reset | Right-click the slider, then Reset Selected | Restore the default slider value |
| Remove an Assistant script | Select the new script and press Delete | Remove a separately created script |
| Discard playtest changes | Stop or Shift + F5 | Reset simulation state |
| Studio place restoration | Window > Version History | Restore a Roblox-saved place version |
| Browser place restoration | Creator Dashboard, then Version History | Restore a retained place version |
| Collaborative place recovery | Disable Team Create, then restore a version | Owner-controlled recovery |
| Earlier script code | View Script History, then Open Script | Manually copy back historical code |
| Deleted collaborative script | In Drafts, choose Restore Script | A collaborator deleted a script you were editing |
| One modified package | Undo Changes to Package | Discard unpublished package changes |
| Several modified packages | Undo Changes to Selected Packages | Discard changes across selected copies |
| Published package version | Package Details, then Versions | Restore an earlier published version |
| Package configuration reset | Properties > Attributes, then Reset | Restore one configuration default |
| Local place recovery | Open an earlier place or recovery file | Requires a suitable existing file |
| Automatic recovery checkpoints | Enable Auto-Recovery Enabled | Prepare for future recovery |
| Recorded Command Bar changes | Use Studio's Undo or Redo | Completed recorded commands in the multi-line beta |
| Plugin history | Use Studio history or the plugin's controls | Plugin changes must be recorded |
Undo and redo your latest edits
Press Ctrl + Z on Windows or Command + Z on Mac once for each recorded edit you want to reverse. You can also open Edit and choose Undo. To bring an undone change back, choose Edit > Redo, repeating the command as needed.
To find either command through action search, press Ctrl + Alt + P on Windows or Command + Option + P on Mac to open Quick Open Actions. Search for Undo or Redo, select the matching action, and press Enter. Alternatively, open Quick Open with Ctrl + P on Windows or Command + P on Mac, type >, and search for the action.
Use the right shortcuts in scripts and text boxes
Double-click a script in Explorer, then focus its editor before using a shortcut. On Windows, press Ctrl + Z to undo and Ctrl + Y to redo. On Mac, use Command + Z to undo and Command + Shift + Z to redo.
With a text input box focused, undo typing with Ctrl + Z on Windows or Command + Z on Mac. Redo with Ctrl + Y or Ctrl + Shift + Z on Windows. On Mac, text boxes accept Command + Y or Command + Shift + Z for redo.
Fix shortcuts that do not respond as expected
Check which editor or text input has focus when a shortcut affects the wrong edit. Then open Customize Shortcuts from the File menu and locate Undo or Redo to inspect or edit its assignment. Use the assigned combination for that action.
You can also choose Edit > Undo or Redo without using a shortcut. These commands depend on the history available in the active editing context. If that history cannot recover your work, restore a saved version or an earlier local copy.
Add undo and redo buttons to your toolbar
Click + beside the toolbar tabs, enter a name for your custom tab, and press Enter. Right-click an empty area of the new toolbar and choose Add tools. Search for Undo and enable its checkbox, then repeat for Redo. Click the resulting buttons whenever you need either action.
To put the buttons into a copy of a familiar tab, right-click that tab and choose Duplicate tab. In the duplicate, right-click empty toolbar space, choose Add tools, and enable Undo and Redo. Repeat for other tabs where you want the buttons, and use Manage tabs to hide the originals if desired. Default tabs must be duplicated before you can modify their toolsets.
The permanent top-left arrows shown in older tutorials belonged to the retired interface. Roblox no longer supports opting out of the new interface, so use the Edit commands or add buttons to your current toolbar.
Reverse animation and playtest changes
While editing a rig's pose in the Animation Editor, press Ctrl + Z on Windows or Command + Z on Mac to undo the pose change. For facial animation, open Avatar > Clip Editor, select a character with an animatable head, and click Face in the track list.
After changing a facial slider, undo with Ctrl + Z on Windows or Command + Z on Mac. Redo with Ctrl + Y on Windows or Command + Y on Mac. To restore the slider's default value, right-click it and choose Reset Selected.
To discard simulation changes during a playtest, click Stop in the testing controls or press Shift + F5. Studio stops the simulation and returns objects and instances to their pre-playtest state. Edits made before testing still require ordinary undo or another recovery method.
Reverse changes made by Assistant and plugins
Use ordinary undo for supported non-script place changes made by Assistant. If Assistant created a separate script you do not want, select that script by name in Explorer and press Delete. Deleting the new script does not reconstruct an existing script that Assistant modified.
Assistant's redo icon generates another response; to reapply an undone Studio edit, use Studio's Redo command.
You can undo plugin changes through Studio history when the plugin records them. Roblox warns that an unfinished plugin recording can break undo history, so use saved versions or local recovery files if history stops working. Any undo or redo buttons supplied by a plugin may have different labels.
If you develop a Studio plugin, check GetCanUndo() or GetCanRedo() before invoking ChangeHistoryService:Undo() or ChangeHistoryService:Redo(). Record your plugin's changes with TryBeginRecording() and FinishRecording() so they participate in Studio history. These operations require Plugin Security access.
For recorded Command Bar changes, enable File > Beta Features > Multi-line Command Bar. After a command completes, use Studio's Undo or Redo to reverse or replay its recorded changes to the DataModel. Continuously running commands can leave recordings unfinished.
Revert changes to packages
Locate the modified package copy in Explorer, where a dot on its package icon identifies unpublished modifications. Right-click it and choose Undo Changes to Package to discard those changes. For several copies, select them together, including at least one modified copy, then right-click and choose Undo Changes to Selected Packages.
To restore a previously published package version, right-click the package in Explorer, Toolbox, or Asset Manager. Choose Package Options > Package Details, then select Versions in Asset Configuration. Click the checkmark beside the version you want and choose Submit.
Reset configuration overrides separately from package versions. Select the package, open Properties > Attributes, and open the affected configuration attribute's options menu. Choose Reset to restore that attribute's default value.
Restore an earlier saved place
When available undo history cannot recover the change, you can restore a place version saved to Roblox if you have sufficient permissions. In Studio, open Window > Version History, find the desired version, and click its ⋮ menu followed by Open Local Copy. Inspect the historical place in the new Studio session before replacing your saved place.
In that new session, choose File > Save to Roblox As. Select the game and place to overwrite, then confirm. This restores the place from that version rather than reversing only one edit.
To restore through Creator Dashboard, open Creations and select the game, then choose Configure > Places. Select the place, open Version History, and click Restore beside the desired version before confirming. Restoration creates a new version; publish it from Studio if it must replace the live version.
Recover a local copy and enable future checkpoints
If you have an earlier local .rbxl or .rbxlx file, open it in Studio and inspect its contents before saving. Recovery files provide another option when a suitable file exists, but they are conditional backups rather than a complete undo history.
On Windows, inspect %LOCALAPPDATA%\Roblox\RobloxStudio\AutoSaves for recovery files. On Mac, inspect ~/Library/Application Support/Roblox/RobloxStudio/AutoSaves/. Open the desired place file in Studio and confirm it contains the work you need before saving it.
To enable future recovery checkpoints, open Studio Settings with Alt + S on Windows or Option + S on Mac. Select Studio, enable Auto-Recovery Enabled, and set Auto-Recovery Interval (Minutes) to your desired interval. Enabling recovery cannot create backups of past changes retroactively.
Frequently Asked Questions
Does undo affect every cursor when editing a script with multiple cursors?
Undoing or redoing a multi-cursor script edit affects all cursors together. You cannot use that history action to reverse the edit at only one cursor.
Can you recover older code without restoring the entire place?
In collaborative scripting, right-click the script in Explorer and choose View Script History. Select the desired version and choose Open Script, then compare it with your current script and manually copy back the code you need. For a multi-script batch, use Show and Open All Scripts From Batch. The history interface does not provide a direct Restore button.
How can a place owner restore a version while other people are editing?
As the owner, click a collaborator icon to open Live Collaborators, then click the bottom-right ⋯ menu and choose Disable Team Create before confirming. Restore the intended place version afterward through Version History. Ending collaboration prevents active editors' automatic saves from overwriting the restoration.
Can you restore a script that a collaborator deleted?
In Drafts mode, you can restore a script that a collaborator deleted while you were editing it. In the Drafts window, right-click the affected script marked with a red ⊘ icon and choose Restore Script. Move the restored script from Workspace back to its original parent if necessary.
Can you share a custom toolbar containing undo and redo buttons?
After adding the buttons to a custom tab, you can edit or share its JSON configuration files, although the configurations are local to each machine. Open the tab files in %LOCALAPPDATA%\Roblox\<userID>\CustomRibbonTabs on Windows or ~/Documents/Roblox/<userID>/CustomRibbonTabs on Mac. Keep control Id values unique when editing the files. RibbonLayout.json controls tab order and visibility.
Does Studio's plugin undo system provide undo for players inside a running game?
You cannot use Studio's plugin undo system as a player undo feature inside a running game. ChangeHistoryService is disabled in running experiences.