Skip to content

Instantly share code, notes, and snippets.

@mathix420
Last active July 7, 2025 14:29
Show Gist options
  • Save mathix420/e0604ab0e916622972372711d2829555 to your computer and use it in GitHub Desktop.
Save mathix420/e0604ab0e916622972372711d2829555 to your computer and use it in GitHub Desktop.
Bypass Medium Paywall - Working late 2023 - Greasy Fork, Violentmonkey, Tampermonkey - Click the RAW button to install
// ==UserScript==
// @name Medium Paywall Bypass
// @namespace Violentmonkey Scripts
// @run-at document-start
// @match *://*.medium.com/*
// @match *://medium.com/*
// @match *://*/*
// @grant none
// @version 2.4
// @inject-into content
// @updateURL https://gist.githubusercontent.com/mathix420/e0604ab0e916622972372711d2829555/raw/medium.user.js
// @downloadURL https://gist.githubusercontent.com/mathix420/e0604ab0e916622972372711d2829555/raw/medium.user.js
// @website https://freedium.cfd
// @author Mathix420, ZhymabekRoman
// @description Don't forget to remove `@match` filters you don't want.
// ==/UserScript==
// initCall is telling us if we need to inject the title observer
function mediumRedirecter(initCall = false) {
if (
// Allow seeing original articles that were already redirected to freedium.
!window.location.href.endsWith('#bypass') &&
// Do not redirect when editing on medium.
!window.location.href.includes("/edit?source=") &&
// Detect if we are on a medium website (regardless of the domain)
document.head?.querySelector('meta[property="al:android:url"]')?.content?.includes('medium://p/')
) {
window.location.href = 'https://freedium.cfd/' + window.location.href;
} else if (initCall && /(.*\.|^)medium\.com$/.test(window.location.host)) {
// Observe <title> changes
new MutationObserver(function(mutations) {
// If title change is detected, check if a freedium redirect is required
if (mutations[0].target.textContent) mediumRedirecter();
}).observe(
document.querySelector('title'),
{ subtree: true, characterData: true, childList: true }
);
}
}
mediumRedirecter(true);
@ZhymabekRoman
Copy link

Thanks for your effort.

The original script works great for me. However, your solution has one small problem: it can't work on domains other than medium.com. Here is a small list of third-party domains:

  • uxplanet.org
  • osintteam.blog
  • ahmedelfakharany.com
  • drlee.io
  • generativeai.pub
  • towardsdev.com
  • infosecwriteups.com
  • thetaoist.online
  • devopsquare.com
  • bettermarketing.pub
  • itnext.io
  • betterprogramming.pub
  • curiouse.co
  • betterhumans.pub
  • uxdesign.cc
  • thebolditalic.com
  • codeburst.io
  • writingcooperative.com
  • entrepreneurshandbook.co
  • storiusmag.com
  • javascript.plainenglish.io
  • code.likeagirl.io
  • medium.datadriveninvestor.com
  • blog.det.life
  • python.plainenglish.io
  • blog.stackademic.com
  • ai.gopubby.com
  • blog.devops.dev
  • levelup.gitconnected.com
  • ai.plainenglish.io

And so on.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment