How to Remove ?m=1 from Blogger: Improve SEO in 3 Steps

Permanently remove ?m=1 from your Blogger site with our 3-step guide using JavaScript and Cloudflare. Improve your site's SEO and performance now!

Are you a Blogger user frustrated by the unsightly ?m=1 tag appearing in your mobile URLs? You're not alone. This little addition, while intended to optimize for mobile devices, can silently hurt your site's SEO and overall performance. But don't worry, we have the definitive solution!

In this comprehensive guide, we'll show you exactly how to permanently remove ?m=1 from your Blogger site. We've tackled this problem head-on and developed three effective methods, including a simple JavaScript fix and two advanced Cloudflare-based solutions, to ensure your site is perfectly optimized for search engines and visitors alike. Get ready to significantly improve your site's SEO and performance!

Why Remove ?m=1? Improve Your Site's SEO

The ?m=1 parameter in Blogger URLs is automatically appended when your blog is viewed on a mobile device. It's a remnant of Blogger's older mobile templating system, indicating that the mobile version of a page is being served. While seemingly harmless, it introduces several issues:

A Simple Definition: Duplicate Content and SEO Headaches

Essentially, ?m=1 creates a separate URL for the mobile version of your content. This means that for every post and page on your site, search engines like Google see two distinct URLs for the exact same content (e.g., yourblog.com/your-post.html and yourblog.com/your-post.html?m=1). This is known as duplicate content, which can confuse search engine crawlers, dilute your link equity, and negatively impact your search rankings. In simple terms, your site's SEO suffers because search engines don't know which version to prioritize or rank.

An Example (Or Two): Real-World Impact

  • Example 1: Search Engine Crawling

    Imagine Google's bot crawling your site. If it encounters both yourblog.com/awesome-article.html and yourblog.com/awesome-article.html?m=1, it might waste crawl budget on the duplicate, or worse, split the ranking signals between the two, preventing either from ranking as highly as it could.

  • Example 2: User Experience and Analytics

    From a user perspective, while they might not consciously notice, having inconsistent URLs can be less professional. For analytics, it can sometimes complicate tracking if not handled properly, showing traffic split between two URLs for the same content.

By removing ?m=1, you consolidate your URLs, present a cleaner structure to search engines, and improve your overall SEO, ensuring your content gets the recognition it deserves. Now, let's dive into the practical steps to achieve this.

How to Permanently Remove ?m=1: Your 3-Step Guide

We've broken down the process into three distinct methods. The first method uses simple JavaScript, ideal for all Blogger users. The second and third methods leverage Cloudflare, offering powerful control for those whose domains are connected to Cloudflare.

Method 1: Remove ?m=1 Using JavaScript (For All Blogger Users)

This method is universal and works for any Blogger site, regardless of whether you use Cloudflare or not. It involves adding a small JavaScript snippet to your blog's template that automatically redirects mobile visitors from the ?m=1 URL to the clean URL.

Brief Overview: Adding a Simple Script to Your Template

You'll edit your Blogger theme's HTML to insert a JavaScript code that checks for the ?m=1 parameter and performs a client-side redirect.

Detail of This Step: Implement the JavaScript Code

  1. Log in to your Blogger Dashboard.

  2. Navigate to "Theme" (or "Template" in older interfaces).

  3. Click on "Edit HTML". This will open your theme's code editor. Always back up your theme before making any changes! You can do this by clicking the "Backup / Restore" button.

  4. Locate the <head> section. You can use Ctrl+F (or Cmd+F on Mac) to search for <head>.

  5. Paste the following JavaScript code immediately below the <head> tag:

    
    <script type='text/javascript'>
      //<![CDATA[
      var uri = window.location.toString();
      if (uri.indexOf("?m=1") > 0) {
        var clean_uri = uri.substring(0, uri.indexOf("?m=1"));
        window.history.replaceState({}, document.title, clean_uri);
      }
      //]]>
    </script>
    

    Explanation of the code:

    • var uri = window.location.toString(); gets the current URL.
    • if (uri.indexOf("?m=1") > 0) checks if the ?m=1 string exists in the URL.
    • var clean_uri = uri.substring(0, uri.indexOf("?m=1")); creates a new URL by removing the ?m=1 part.
    • window.history.replaceState({}, document.title, clean_uri); replaces the current URL in the browser's history with the clean URL without reloading the page. This is crucial for a smooth user experience and proper SEO.
  6. Click "Save theme" (or "Save template").

Tips: After saving, clear your browser's cache and test your site on a mobile device. You should no longer see ?m=1 in the URL.

Cloudflare Solutions: Advanced Control for Connected Domains

If your custom domain is connected to Cloudflare, you have more robust and server-side options to handle the ?m=1 redirection. This is generally preferred for performance and SEO as the redirect happens before the page content is even loaded by the browser.

Important Requirements for Cloudflare Methods:

  • Your custom domain MUST be connected to Cloudflare. This means your domain's nameservers are pointing to Cloudflare.
  • You will need an active Cloudflare account.
  • Familiarity with Cloudflare's dashboard is helpful.

Cloudflare Limitations to be Aware Of: While powerful, Cloudflare's free plan has some limitations on the number of Workers and Workers Routes you can use. However, for a simple ?m=1 redirect, the free tier is usually sufficient.

Method 2: Remove ?m=1 Using Cloudflare Workers

Cloudflare Workers allow you to run JavaScript code on Cloudflare's edge network, closer to your users. This means the redirect happens extremely fast, often before the request even reaches your Blogger server.

Brief Overview: Server-Side Logic for Clean URLs

You'll deploy a small JavaScript worker script that intercepts requests containing ?m=1 and redirects them to the clean URL.

Detail of This Step: Create a Cloudflare Worker

  1. Log in to your Cloudflare Dashboard.

  2. Select the domain for which you want to remove ?m=1.

  3. Go to "Workers & Pages" from the left-hand sidebar.

  4. Click "Create Application" then "Create Worker".

  5. Give your Worker a name (e.g., blogger-m1-redirect) and click "Deploy".

  6. Click "Edit code" on the newly created Worker. Replace the default code with the following:

    
    addEventListener('fetch', event => {
      event.respondWith(handleRequest(event.request))
    })
    
    async function handleRequest(request) {
      const url = new URL(request.url)
      const pathname = url.pathname
      const searchParams = url.searchParams
    
      if (searchParams.has('m') && searchParams.get('m') === '1') {
        searchParams.delete('m') // Remove the 'm' parameter
        const newUrl = url.origin + pathname + (searchParams.toString() ? '?' + searchParams.toString() : '');
        return Response.redirect(newUrl, 301) // 301 Permanent Redirect
      }
    
      // If ?m=1 is not present, just fetch the original request
      return fetch(request)
    }
    

    Explanation of the code:

    • addEventListener('fetch', event => { ... }); sets up the worker to listen for incoming requests.
    • handleRequest(event.request) processes each request.
    • const url = new URL(request.url); parses the incoming URL.
    • if (searchParams.has('m') && searchParams.get('m') === '1') { ... } checks if the URL has a parameter named 'm' with a value of '1'.
    • searchParams.delete('m'); removes the 'm' parameter from the URL.
    • const newUrl = ...; reconstructs the URL without ?m=1. It also ensures other query parameters are preserved.
    • return Response.redirect(newUrl, 301); issues a permanent (301) redirect to the clean URL. This is crucial for SEO, telling search engines the content has permanently moved.
    • return fetch(request); If ?m=1 is not present, the worker simply passes the request through to your Blogger site.
  7. Click "Save and Deploy".

  8. Go back to the "Workers & Pages" overview. You need to add a route for this Worker.

  9. Under your Worker, click "Add route".

    • Route: Enter yourdomain.com/* (replace yourdomain.com with your actual domain). This tells Cloudflare to run this worker for all requests to your domain.
    • Worker: Select the Worker you just created (e.g., blogger-m1-redirect).
  10. Click "Add route".

Info: It might take a few minutes for the Worker and route to become active across Cloudflare's network.

Method 3: Remove ?m=1 Using Cloudflare Workers Routes (More Granular Control)

This method is a variation of using Cloudflare Workers, but instead of writing a full Worker, you can use a simpler approach by configuring Workers Routes to directly redirect requests that match a specific pattern.

Brief Overview: Pattern Matching for Redirects

This method is less about custom code and more about setting up a powerful URL matching rule within Cloudflare.

Detail of This Step: Configure a Cloudflare Workers Route

While Cloudflare Workers provide ultimate flexibility, for simple redirects like removing ?m=1, you can achieve a similar outcome by creating a Page Rule or a more advanced Worker Route setup without writing extensive custom logic if your redirect needs are very specific.

Note: As of recent Cloudflare updates, creating simple redirects directly within Workers Routes without a Worker script attached is often done via "Page Rules" for simple 301/302 redirects, or the previous Worker method for dynamic changes. For the specific case of removing a query parameter and redirecting, the Cloudflare Worker (Method 2) is the most direct and recommended approach. However, if you wanted to use a different approach with Workers Routes, you would still attach a Worker to a route, but the Worker's logic could be even simpler if you were only performing a static redirect based on a simple pattern.

Let's refine this to directly address what Cloudflare offers for redirects, assuming you want a simpler alternative to writing a full Worker:

Alternative Cloudflare Method: Using Cloudflare Page Rules (Simpler Redirects)

While not explicitly "Workers Routes" in the same complex sense, Cloudflare Page Rules are a more straightforward way to handle redirects for those with Cloudflare domains. However, Page Rules are more suited for static redirects (e.g., redirecting old-page.html to new-page.html) and are not ideal for dynamically removing a query parameter like ?m=1 while preserving the rest of the URL structure and other query parameters. For that specific dynamic removal, Method 2 (Cloudflare Workers) is superior.

Why Page Rules might not be ideal for ?m=1: Page Rules typically match a URL pattern and then redirect. To remove ?m=1 dynamically while keeping other query parameters or parts of the path, a simple Page Rule becomes complex or impossible without regex, which isn't directly supported for query parameter manipulation in simple redirect rules. Hence, the Cloudflare Worker (Method 2) is truly the most effective Cloudflare-based solution for this specific problem.

Therefore, we strongly recommend Method 2 (Cloudflare Workers) for Cloudflare users looking to remove ?m=1, as it provides the necessary dynamic URL manipulation.

Conclusion: Supercharge Your Blogger SEO

Congratulations! By following this comprehensive guide, you've taken a significant step towards optimizing your Blogger site. Removing the problematic ?m=1 parameter not only cleans up your URLs but, more importantly, addresses potential duplicate content issues, thereby boosting your site's SEO and improving how search engines perceive and rank your content.

Whether you opted for the simple yet effective JavaScript method or leveraged the power of Cloudflare Workers for server-side redirection, your efforts will lead to a more professional, performant, and search-engine-friendly blog. Clean URLs contribute to a better user experience and ensure your hard-earned content gets the visibility it deserves.

Don't let a small URL parameter hinder your online success. Implement these changes today and watch your Blogger site climb the search rankings. Share this guide with fellow Blogger users and help them improve their online presence!

Need further assistance or have questions? Contact us!

/remove-m1-blogger-seo-guide