Why I built it
For years, my move when someone sent me a paywalled article was to type 12ft.io/ in front of the URL. Then in July 2025, the News Media Alliance announced it had taken 12ft.io down for good. The domain still sits there returning errors.
I kept getting links I couldn't read, mostly on my phone, so I built a replacement. It's called WallHop. It started as a side project at nopaywall.wafflehacker.dev and grew into something I use every day.
This post covers what it does, how paywalls work under the hood, and the iOS Shortcut that turned out to be my favorite part.
What it does
You give WallHop an article URL and it hands back the readable article: no paywall popup, no ads, no newsletter modal. There's no signup and no extension. You can use it four ways:
- Paste a link into the box on wallhop.io.
-
Prefix any URL, the same habit 12ft trained into all of us:
wallhop.io/https://example.com/article. - Bookmarklet for desktop. Drag it to your bookmarks bar and click it on any article.
-
Raw and API endpoints for scripting:
/raw/<url>returns the cleaned page, and/api/<url>is there if you want to build on it.
I've tested it on most major news outlets, a lot of local papers, and Medium's member-only posts, which 12ft never handled.
How paywalls actually work
Most paywalls fall into one of four buckets, and each one leaks in a different place.
- Client-side overlays. The server sends the whole article, then JavaScript covers it with a modal or truncates it. The text is already in the HTML. This is the kind 12ft beat by stripping scripts.
- Metered paywalls. You get a few free articles a month, counted in cookies or local storage. The server decides what to send based on that count, so a clean request often looks like a first-time reader.
- Crawler exceptions. Publishers want their articles in search results, so many serve the full text to search engine crawlers. This used to be the easy route. Bigger sites now verify that a request claiming to be a crawler really comes from one.
- Hard server-side paywalls. The article body never leaves the server unless you're logged in and paying. Nothing in the response to work with.
The catch is that a single site can mix these, and publishers change their setup without notice. A trick that works on Monday can break on Thursday.
The approach: don't rely on one trick
12ft mostly did one thing well, and when publishers learned to block it, there was no plan B. WallHop is built around the opposite idea: try several methods per request and keep going until one works.
It started from everywall/ladder, an open-source proxy that rewrites requests and responses on the way through. I've modified it heavily since. A request goes roughly like this:
- Fetch the page with the method most likely to work for that site.
- Check whether the response actually contains the article, not just a teaser and a login wall.
- If it doesn't, move to the next method and try again.
- If every method fails, fall back to an archived copy from archive.is.
- Clean the result: strip scripts, overlays, and ads, and return a readable page.
Step 2 matters more than it looks. A lot of paywalled pages return a 200 with a perfectly valid HTML page that just happens to be missing the story. Detecting that is what makes the fallback chain work.
I noticed no trick really worked with medium articles, but I already pay $5 for medium. So I just implemented my medium session cookie into wallhop, so Medium articles work on it by pretty much sharing my Medium login with the wallhop users!
The iOS Shortcut: one tap from the Share sheet
Most paywalled links reach me on my phone, in a text or a group chat. Editing a URL on an iPhone is miserable, so I made an Apple Shortcut instead.
Once it's installed, you open any article and tap Share › WallHop. That's it. The Shortcut takes the URL from the Share sheet, builds the WallHop link, and opens the clean article in Safari. It works from Safari, from in-app browsers, and from most apps that can share a link.
There's no App Store app to install and no account. You can grab it at wallhop.io/shortcut. Honestly, this is how I use WallHop most of the time, and it's the feature I'd point people to first.
What it can't do
I'd rather be upfront about the limits than have you find them on your own.
- Hard server-side paywalls are mostly out of reach. If the article never leaves the server, the only hope is an archived copy, and not every article has one.
- Sites change. Publishers update their paywalls, and some methods stop working without warning. The fallback chain absorbs a lot of that, but not all of it. But that's usually when I will probe around and do a bypass for that individual site.
- It's for reading, not logging in. WallHop doesn't touch your accounts and doesn't need any.
One more thing: paywalls pay for journalism. If there's a paper you read every day, subscribe to it. WallHop is for the one-off article someone texts you from a site you'll never visit again.
Try it
Go to wallhop.io, paste a link, and see what happens. If you're on iPhone, install the Shortcut first.
If you find a site that breaks, drop the link in the comments. Those reports are the most useful thing you can send me, and I'll work on the ones I can fix.
I'm Josh, a full-stack engineer who builds side projects at wafflehacker.dev. Thanks for reading.
Top comments (1)
Official Platform Update
Security protocols have been updated for all developer accounts.