diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 62c4c078a3d060cb4c479ced578906394b4b8798..912f4d8753acfba383a81920888a4d364c537a1f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,4 +1,5 @@
 stages:
+- deploy_unstable
 - deploy
 
 deploy:
@@ -7,3 +8,12 @@ deploy:
     - sh deploy.sh
   only:
     - master
+  when: manual
+
+deploy_unstable:
+  stage: deploy_unstable
+  script:
+    - sh deploy_unstable.sh
+  only:
+    - master
+  when: manual
diff --git a/YoutubeUnstableConfig.json b/YoutubeUnstableConfig.json
new file mode 100644
index 0000000000000000000000000000000000000000..98e42322e03b74e9b475b66150ee1e9f0f88aaf6
--- /dev/null
+++ b/YoutubeUnstableConfig.json
@@ -0,0 +1,237 @@
+{
+	"name": "Youtube (Alt)",
+	"description": "One of the biggest video platforms owned by Google",
+	"author": "FUTO",
+	"authorUrl": "https://futo.org",
+	"platformUrl": "https://youtube.com",
+	"sourceUrl": "https://plugins.grayjay.app/YoutubeUnstable/YoutubeConfig.json",
+	"repositoryUrl": "https://futo.org",
+	"scriptUrl": "./YoutubeScript.js",
+
+	"version": 219,
+	"iconUrl": "./youtube.png",
+	"id": "35ae969a-a7db-11ed-afa1-0242ac120003",
+	
+	"scriptSignature": "",
+	"scriptPublicKey": "",
+	"packages": ["Http", "Utilities", "DOMParser"],
+
+	"subscriptionRateLimit": 140,
+
+	"reduceFunctionsInLimitedVersion": true,
+	
+	"allowEval": false,
+	"allowUrls": [
+		"youtube.com",
+		"m.youtube.com",
+		"www.youtube.com",
+		"youtu.be",
+		"www.youtu.be",
+		"m.youtu.be",
+		"s.youtube.com",
+		"consent.youtube.com",
+		"suggestqueries-clients6.youtube.com",
+		"youtubei.googleapis.com",
+		"www.google.com",
+		"google.com",
+		"returnyoutubedislikeapi.com",
+		"sponsor.ajay.app",
+		".googlevideo.com"
+	],
+
+	"settings": [
+		{
+			"variable": "authChannels",
+			"name": "Use Login for Channels",
+			"description": "Use authenticated client for channel (videos) requests. (eg. for member videos)",
+			"type": "Boolean",
+			"default": "false",
+			"warningDialog": "Only enable this if you need it for channel membership content.\n\nTry disabling if you have issues when loading channels."
+		},
+		{
+			"variable": "authDetails",
+			"name": "Use Login for video details",
+			"description": "Use authenticated client for video requests. (eg. for member videos)",
+			"type": "Boolean",
+			"default": "false",
+			"warningDialog": "Only enable this if you need it for channel membership content.\n\nTry disabling if you have issues when loading videos and comments."
+		},
+		{
+			"variable": "allowLoginFallback",
+			"name": "Allow Loginfallback",
+			"description": "Allow usage of login in case where login required (eg. bot check)",
+			"type": "Boolean",
+			"default": "true"
+		},
+		{
+			"variable": "youtubeActivity",
+			"name": "Provide Youtube Activity",
+			"description": "Use authenticated client for playback, telling Youtube what you watched.",
+			"type": "Boolean",
+			"default": "false"
+		},
+		{
+			"variable": "allowAgeRestricted",
+			"name": "Allow Age Restricted",
+			"description": "Allow watching of age restricted videos",
+			"type": "Boolean",
+			"default": "false"
+		},
+		{
+			"variable": "allowControversialRestricted",
+			"name": "Allow Controversial Restricted",
+			"description": "Allow watching of controversial restricted videos",
+			"type": "Boolean",
+			"default": "false"
+		},
+		{
+			"variable": "useUMP",
+			"name": "Force Experimental UMP Streams",
+			"description": "Force usage of experimental implementation of UMP. May be unstable and cost more performance.",
+			"type": "Boolean",
+			"default": "false"
+		},
+		{
+			"variable": "showVerboseToasts",
+			"name": "Show Verbose Messages",
+			"description": "Show messages that give more information about what is happening, might be considered annoying for some.",
+			"type": "Boolean",
+			"default": "false"
+		},
+		{
+			"variable": "youtubeDislikerHeader",
+			"name": "Return Youtube Dislike",
+			"description": "This is a third-party database of video dislikes that combines historic data, crowd-sourced data, and estimations, and may not be accurate.\n\n(Using https://returnyoutubedislike.com)",
+			"type": "Header"
+		},
+		{
+			"variable": "youtubeDislikes",
+			"name": "Enable",
+			"description": "Use Return YoutubeDislike to provide dislikes for videos",
+			"type": "Boolean",
+			"default": "false"
+		},
+		{
+			"variable": "sponsorBlockHeader",
+			"name": "SponsorBlock",
+			"description": "This is NOT Adblock. SponsorBlock allows you to (automatically) skip in-video sponsor segments.\nIt will harm creators.\n\n(Using https://sponsor.ajay.app)\n\nFUTO respects your decision to use SponsorBlock. But only if you're supporting creators in other ways.",
+			"type": "Header"
+		},
+		{
+			"variable": "sponsorBlock",
+			"name": "Enable",
+			"description": "If enabled support creators in other ways.\nDo not freeload.",
+			"type": "Boolean",
+			"default": "false",
+			"warningDialog": "SponsorBlock will harm creators.\nDo not freeload, support creators in other ways."
+		},
+		{
+			"variable": "sponsorBlockNoVotes",
+			"name": "Allow No Vote Segments",
+			"description": "Allow segments without votes, this may cause questionable video skips.",
+			"type": "Boolean",
+			"default": "false",
+			"dependency": "sponsorBlock"
+		},
+		{
+			"variable": "sponsorBlockCat_Sponsor",
+			"name": "Skip Sponsors",
+			"description": "Skip segments labeled as sponsors",
+			"type": "Dropdown",
+			"default": "1",
+			"dependency": "sponsorBlock",
+			"options": ["No skip", "Manual", "Automatic"]
+		},
+		{
+			"variable": "sponsorBlockCat_Intro",
+			"name": "Skip Intros",
+			"description": "Skip segments labeled as intros",
+			"type": "Dropdown",
+			"default": "0",
+			"dependency": "sponsorBlock",
+			"options": ["No skip", "Manual", "Automatic"]
+		},
+		{
+			"variable": "sponsorBlockCat_Outro",
+			"name": "Skip Outros",
+			"description": "Skip segments labeled as outros",
+			"type": "Dropdown",
+			"default": "0",
+			"dependency": "sponsorBlock",
+			"options": ["No skip", "Manual", "Automatic"]
+		},
+		{
+			"variable": "sponsorBlockCat_Self",
+			"name": "Skip Self-Promos",
+			"description": "Skip segments labeled as self-promos",
+			"type": "Dropdown",
+			"default": "0",
+			"dependency": "sponsorBlock",
+			"options": ["No skip", "Manual", "Automatic"]
+		},
+		{
+			"variable": "sponsorBlockCat_Offtopic",
+			"name": "Skip Music-Offtopic",
+			"description": "Skip segments labeled as music-offtopic",
+			"type": "Dropdown",
+			"default": "0",
+			"dependency": "sponsorBlock",
+			"options": ["No skip", "Manual", "Automatic"]
+		},
+		{
+			"variable": "sponsorBlockCat_Preview",
+			"name": "Skip Preview",
+			"description": "Skip segments labeled as previews",
+			"type": "Dropdown",
+			"default": "0",
+			"dependency": "sponsorBlock",
+			"options": ["No skip", "Manual", "Automatic"]
+		},
+		{
+			"variable": "sponsorBlockCat_Filler",
+			"name": "Skip Fillers",
+			"description": "Skip segments labeled as fillers",
+			"type": "Dropdown",
+			"default": "0",
+			"dependency": "sponsorBlock",
+			"options": ["No skip", "Manual", "Automatic"]
+		},
+		{
+			"variable": "advanced",
+			"name": "Advanced",
+			"description": "These are settings not intended for most users, but may help development or power users.",
+			"type": "Header"
+		},
+		{
+			"variable": "notify_cipher",
+			"name": "Show Cipher every Video",
+			"description": "Shows a toast with the cipher when loading a video",
+			"type": "Boolean",
+			"default": "false"
+		}
+	],
+
+	"developerSubmitUrl": "https://dev.grayjay.app/api/Dev/Submit",
+
+	"captcha": {
+		"userAgent": "Mozilla/5.0 (Linux; Android 10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.5481.153 Mobile Safari/537.36",
+		"captchaUrl": null,
+		"cookiesToFind": ["GOOGLE_ABUSE_EXEMPTION"]
+	},
+	
+	"authentication": {
+		"userAgent": "Mozilla/5.0 (Linux; Android 12) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.230 Mobile Safari/537.36",
+		"completionUrl": "https://m.youtube.com/youtubei/v1/guide?*",
+		"loginUrl": "https://accounts.google.com/ServiceLogin?service=youtube&uilel=3&passive=true&continue=https%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26app%3Ddesktop%26hl%3Den%26next%3Dhttps%253A%252F%252Fwww.youtube.com%252Fchannel_switcher&hl=en&ec=65620",
+		"headersToFind": ["authorization"],
+		"domainHeadersToFind": {
+			".youtube.com": ["authorization"]
+		},
+		"cookiesToFind": ["SIDCC"],
+		"cookiesExclOthers": false,
+		"loginWarning": "You must select a profile after login for authentication to complete."
+	},
+
+	"supportedClaimTypes": [2],
+	"primaryClaimFieldType": 1
+}
diff --git a/deploy_unstable.sh b/deploy_unstable.sh
new file mode 100644
index 0000000000000000000000000000000000000000..980868f84fabe0858e570699afe2f5e1f0c15253
--- /dev/null
+++ b/deploy_unstable.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+DOCUMENT_ROOT=/var/www/sources
+
+# Take site offline
+echo "Taking site offline..."
+touch $DOCUMENT_ROOT/maintenance.file
+
+# Swap over the content
+echo "Deploying content..."
+mkdir -p $DOCUMENT_ROOT/YoutubeUnstable
+cp youtubeAlt.png $DOCUMENT_ROOT/YoutubeUnstable/youtube.png
+cp YoutubeUnstableConfig.json $DOCUMENT_ROOT/YoutubeUnstable/YoutubeConfig.json
+cp YoutubeScript.js $DOCUMENT_ROOT/YoutubeUnstable
+sh sign.sh $DOCUMENT_ROOT/YoutubeUnstable/YoutubeScript.js $DOCUMENT_ROOT/YoutubeUnstable/YoutubeConfig.json
+
+# Notify Cloudflare to wipe the CDN cache
+echo "Purging Cloudflare cache for zone $CLOUDFLARE_ZONE_ID..."
+curl -X POST "https://api.cloudflare.com/client/v4/zones/$CLOUDFLARE_ZONE_ID/purge_cache" \
+     -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
+     -H "Content-Type: application/json" \
+     --data '{"files":["https://plugins.grayjay.app/YoutubeUnstable/youtube.png", "https://plugins.grayjay.app/YoutubeUnstable/YoutubeConfig.json", "https://plugins.grayjay.app/YoutubeUnstable/YoutubeScript.js"]}'
+
+# Take site back online
+echo "Bringing site back online..."
+rm $DOCUMENT_ROOT/maintenance.file