🏠 Home 

Rewrite Reddit links to use "Old Reddit"

Rewrites all links to Reddit to "old.reddit.com" to automatically use the original UI, not the new one

// ==UserScript==
// @name         Rewrite Reddit links to use "Old Reddit"
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  Rewrites all links to Reddit to "old.reddit.com" to automatically use the original UI, not the new one
// @author       https://greasyfork.org/en/users/728793-keyboard-shortcuts
// @match        https://*/*
// @match        http://*/*
// @icon         https://www.reddit.com/favicon.ico
// @grant        none
// @license      MIT
// ==/UserScript==
/* jshint esversion: 6 */
(function() {
'use strict';
/**
*                                               Description
*
* This script looks for links to Reddit on any page and rewrites them to use old.reddit.com which forces
* the use of the "old" (or original) site theme, which many people prefer to the current theme.
*
*/
/**
* These links break when "old.reddit" is used with them, so we don't replace them.
*/
function excludedUrl(url) {
return url.indexOf('reddit.com/poll/') !== -1 || // do not include polls
url.indexOf('reddit.com/gallery/') !== -1 || // or galleries
url.indexOf('reddit.com/sw.') !== -1; // or service workers
}
/**
* Each object in the `transforms` array below can have the following fields:
* 1. `regex` matches link targets and selects them for re-writing
* 2. `match` defines a lambda that takes a regex match object and returns whether this is a valid candidate for re-writing
* 3. `replace` defines a lambda that takes a regex match object and returns the new target for the link
*/
const transforms = [
{regex: /^(https?:\/\/)((www|new)\.)?(reddit\.com\/.*)/,
match: m => m[3] !== 'old' && !excludedUrl(m[4]), // not already containing `.old` and not a poll or gallery
replace: m => 'https://old.' + m[4]},
{regex: /^(https?:\/\/)redd\.it\/(.*)/,
match: m => true, // always match
replace: m => 'https://old.reddit.com/' + m[2]}
];
function cleanupLinks() {
const anchors = document.getElementsByTagName('a');
for (var i = 0; i < anchors.length; i++) {
for (const tr of transforms) {
const target = anchors[i].href || '';
const match = tr.regex.exec(target);
if (match && tr.match(match)) { // link matches
const newTarget = tr.replace(match);
anchors[i].href = newTarget;
}
}
}
}
setInterval(cleanupLinks, 1000); // call again to deal with links that were added dynamically
cleanupLinks(); // call once first
})();