diff --git a/mods/FRHD Save-Load.user.js b/mods/FRHD Save-Load.user.js
new file mode 100644
index 0000000..b2839ca
--- /dev/null
+++ b/mods/FRHD Save-Load.user.js
@@ -0,0 +1,57 @@
+// ==UserScript==
+// @name FRHD Save-Load
+// @namespace http://tampermonkey.net/
+// @version 1.0.0
+// @description Adds a save and load button to the editor
+// @author revelcw
+// @match https://www.freeriderhd.com
+// @include /^https?:\/\/(www\.)?freeriderhd\.com
+// @icon https://www.google.com/s2/favicons?domain=freeriderhd.com
+// @grant none
+// ==/UserScript==
+
+let url;
+setInterval(() => {
+ if (
+ window.location.href !== url &&
+ window.location.href.startsWith('https://www.freeriderhd.com/create')
+ ) {
+ main();
+ }
+ url = window.location.href;
+}, 1000);
+
+function saveData() {
+ let code = GameManager.game.currentScene.track.getCode();
+ localStorage.setItem('savedCode', code);
+}
+function loadData() {
+ GameManager.game.currentScene.importCode = localStorage.getItem('savedCode');
+}
+const main = async () => {
+ let timer = setInterval(() => {
+ if (
+ document.querySelector('#game-container > div > div.topMenu.unselectable')
+ ) {
+ clearInterval(timer);
+ let menuBar = document.querySelector(
+ '#game-container > div > div.topMenu.unselectable'
+ );
+ let publishButton = document.querySelector(
+ '#game-container > div > div.topMenu.unselectable > div:nth-child(4)'
+ );
+ var save = document.createElement('div');
+ save.className = 'topMenu-button topMenu-button_offline';
+ save.title = 'Save your track to local storage';
+ save.onclick = saveData;
+ save.innerHTML = 'Save';
+ var load = document.createElement('div');
+ load.className = 'topMenu-button topMenu-button_offline';
+ load.title = 'Load your track from local storage';
+ load.onclick = loadData;
+ load.innerHTML = 'Load';
+ menuBar.insertBefore(save, publishButton);
+ menuBar.insertBefore(load, publishButton);
+ }
+ });
+};