AmputatorBot

Remove AMP from your URLs

AmputatorBot strips AMP from links and returns the canonical version — as a website, a Reddit bot , and a free public API . Built to push back on Google's power over independent publishers, protect user privacy, and support the Open Web.

Spot AMP URLs by looking for amp in the path, e.g. google.com/amp/… or bbc.com/n/amp/….

The case

The problem with AMP

AMP was Google's 2015 attempt at "speeding up the mobile web" — pages first, later extended to stories, ads, and email. On its face, a reasonable goal. The execution was less reasonable.

The premise was always shakier than the pitch. Real-world benchmarks against well-built non-AMP pages were mixed at best, and the gains required publishers to surrender most of the stack: AMP pages must use Google's component subset, drop their own JavaScript, and serve from Google's cache. Publishers traded functional richness and control over their own sites for placement Google was withholding by other means.

For five years, Google's Top Stories carousel on mobile, the most valuable real estate in Search, exclusively featured AMP pages. Publishers who declined to adopt AMP were sidelined there regardless of how good their actual journalism was. Plenty adopted AMP anyway, and then watched their ad revenue drop: internal Google documents (unsealed in the US antitrust case) show AMP pages brought publishers about 40% less revenue.

It gets worse. Those same internal emails surface lines like "how to publicly justify making something slower", because Google was throttling non-AMP ads with a one-second artificial delay to give AMP what one employee called a "nice comparative boost." Two members of AMP's own advisory committee, Jeremy Keith and Terence Eden, eventually resigned, both citing AMP's persistent hostility to users and publishers.

Cached AMP pages also keep users inside Google's ecosystem: the publisher's domain is hidden behind a google.com/amp prefix, and Google's own support docs note that "Google and the publisher that made the AMP page may each collect data about you." Mozilla and Apple both publicly opposed the standards Google introduced to paper over the URL-obfuscation issue.

Google dropped the AMP-exclusive Top Stories requirement in July 2021 after public backlash and antitrust scrutiny. AMP itself has been slowly declining ever since. But the damage to the web ecosystem was already done: Google normalized platform-controlled content delivery, distorted publishing incentives, and AMP URLs are still everywhere.

AMP's flaws threaten the Open Web — and user privacy along with it. AmputatorBot exists to empower individuals to push back.

Read the full write-up on Reddit — with sources →

Under the hood

1.7M+ AMP links converted since 2019

The original AmputatorBot was a Python bot held together with PRAW and good intentions. As of 2026 it's rewritten in Rust — both for the performance improvement and, frankly, because Rust is fun. It's now also a Devvit app for Reddit's new Developer Platform, with the legacy Python bot still running in parallel as a safety net during the transition.

Hosted in the EU on Scaleway (Paris/AMS), open source on GitHub, and free to use — same as it's been since day one. The API is public, has no auth, and accepts the same query shape it did in 2019, so any tool you've wired up against it keeps working.

While you're here

There are bigger problems than AMP

AMP links are annoying. An ongoing invasion killing civilians is much worse. United24 is Ukraine's official donation platform — humanitarian aid, reconstruction, and defense. This bot is quite cheap to run; if you can spare something, it'll do more good there than here.

How it actually works

Eleven ways to find the canonical

Stripping /amp from a URL gets you the right answer roughly half the time. The other half it produces broken links, wrong articles, or 404s — different sites bury the canonical in different places, and there's no single tag we can rely on. So AmputatorBot tries each of these in priority order, and falls through to the next when one doesn't match. The result you get back tells you exactly which one succeeded.

The last one, guess-and-check, is the interesting one: when nothing on the page tells us what the canonical is, we strip the AMP markers, fetch the resulting page, and compare its article text to the AMP page's article text. If they're similar enough, we trust the guess. If not, we return nothing — better no answer than a wrong one.

  1. 01 HTML canonical tag

    The page declared its own canonical URL.

    HTML
    <link rel="canonical" href="https://example.com/article" />
  2. 02 canurl URL parameter

    The AMP URL carries a canurl pointing at the real page.

    URL
    https://amp.example.com/article?canurl=https://example.com/article
  3. 03 OpenGraph URL

    Pulled from the page's social-sharing metadata.

    HTML
    <meta property="og:url" content="https://example.com/article" />
  4. 04 Google AMP cache URL

    Decoded straight from the Google AMP cache URL.

    URL
    https://www.google.com/amp/s/example.com/article/amp/
  5. 05 Google AMP page JS redirect

    Extracted from the cached AMP page's redirect handler.

    JavaScript
    const redirectUrl = "https://example.com/article";
  6. 06 Bing AMP cache

    Extracted from a Bing AMP cache marker.

    JSON
    {"originalUrl": "https://example.com/article", ...}
  7. 07 Schema.org metadata

    From a JSON-LD <script> block on the page.

    JSON
    {"@context": "https://schema.org", "@type": "Article", "mainEntity": "https://example.com/article"}
  8. 08 t.co title heuristic

    Read off Twitter's t.co interstitial page.

    HTML
    <title>https://example.com/article — t.co</title>
  9. 09 Meta refresh redirect

    A <meta http-equiv="refresh"> on the page points at the real URL.

    HTML
    <meta http-equiv="refresh" content="0; url=https://example.com/article" />
  10. 10 Heuristic URL transformation

    Strip AMP markers from the URL; the orchestrator separately verifies via article-text comparison.

    URL
    https://news.sky.com/story/amp/article  →  https://news.sky.com/story/article
    (orchestrator then fetches + compares article text to determine confidence)
  11. 11 Cached from a previous run

    AmputatorBot resolved this AMP URL within the past year.