Fix guides

Fix: URLs with parameters and URL structure

Fix URLs with parameters (?sort=, ?utm_, filters) with canonical tags, clean internal links and careful robots.txt rules, plus long, uppercase and underscore URLs.

Updated Oct 24, 2026

A parameter is everything after ? in a URL, for example https://shop.com/shoes?color=red&sort=price. This guide covers the crawl notice URLs with parameters and the audit’s URL structure lines.

WhereCheck nameFlagged when
Site crawlURLs with parameters (notice)A crawled URL contains ?
Site crawl › Overview › IndexabilityCanonicalisedPages whose canonical points to another URL (often parameter URLs pointing to the clean one: that’s good)
Audit, On-pageURL is too long / URL is too shortThe URL length is outside the recommended range
Audit, On-pageUnderscore is found in the URLThe URL uses _ between words
Audit, On-pageUppercase letters found in the URLThe URL has capital letters

Find the affected URLs in the app

  1. Site crawl › open the crawl › Issues › URLs with parameters lists the URLs (the first 20; Export for all).
  2. Sort the export to see which parameters repeat (sort=, filter_, utm_, page=, add-to-cart=, replytocom=).
  3. Site crawl › Links: search for the parameter (for example utm_ or ?sort) to see which pages link to parameter URLs (Found on).
  4. Site crawl › Overview › Indexability: a high Canonicalised count with parameter URLs means canonicals are already doing their job.

URLs with parameters

How we detect it

Every crawled URL that contains ? is counted as a URL with parameters (notice). The crawler only reaches these URLs because a page links to them.

Why it matters

  • Each parameter combination is a separate URL to Google (Google: consolidate duplicate URLs). Ten filters can create thousands of near-identical pages that compete and waste crawl budget.
  • Duplicates split links and signals between several URLs.
  • Tracking parameters on internal links (?utm_source=) create endless duplicates and overwrite the real traffic source in Google Analytics 4.

Common causes

ParameterTypical sourceBest fix
utm_source, utm_medium, gclid, fbclid on internal linksMenus or banners pasted from a campaignRemove from internal links; canonical to clean URL
?sort=, ?order=, ?view=Shop sorting dropdownsCanonical to clean URL; optionally block in robots.txt
?color=, ?size=, filter_Faceted navigation / filtersCanonical to the category; block endless combinations in robots.txt
?s=, ?q=, /search?Internal site searchnoindex, and block in robots.txt
?add-to-cart=, ?replytocom=WooCommerce, WordPress commentsBlock in robots.txt / turn off
?page=2, /page/2/PaginationKeep crawlable; self-canonical on each page
?sid=, ?sessionid=Old session handlingUse cookies instead of URL sessions
?variant=123Shopify product variantsLeave it: Shopify canonicalises to the product URL

Fix: basic

  1. In Site crawl, use Links › Found on to find the pages that link to parameter URLs.
  2. Change those links to the clean URL (menus, banners, buttons). Keep UTMs only on links from outside the site.
  3. Check one parameter URL with Ctrl+U: rel="canonical" must point to the clean URL. Yoast SEO, Rank Math, Shopify, Wix and Squarespace do this automatically; Webflow needs one setting (see Platform steps). More on canonicals: Fix: indexing › Canonical tag.
  4. Filter plugins that build their own URLs (for example /shop/color-red/) usually have an SEO option to noindex or canonicalise filter pages; turn it on.
  5. Only if parameters create endless combinations: block them in robots.txt (see Fix: expert and Fix: indexing › Disallow rules in robots.txt).
  6. WordPress ?replytocom=: in your WordPress admin, Settings › Discussion (/wp-admin/options-discussion.php), turn off Enable threaded (nested) comments, or block it in robots.txt.

Fix: expert

Every indexable page should carry a self-referencing canonical without parameters:

<link rel="canonical" href="https://www.example.com/shoes/">

Shopify, if the canonical is missing from layout/theme.liquid (inside <head>):

<link rel="canonical" href="{{ canonical_url }}">

robots.txt for a WooCommerce shop (block only endless or useless URLs, never pages that need to rank):

User-agent: *
Disallow: /*?*add-to-cart=
Disallow: /*?*orderby=
Disallow: /*?*filter_
Disallow: /*?s=
Disallow: /search/
Disallow: /*?*replytocom=

Sitemap: https://www.example.com/sitemap_index.xml

Shopify robots.txt: Shopify already blocks sort and filter parameters. To add a rule, create robots.txt.liquid and keep the default rules:

{% for group in robots.default_groups %}
  {{- group.user_agent }}
  {%- for rule in group.rules %}
    {{ rule }}
  {%- endfor %}
  {%- if group.user_agent.value == '*' %}
    {{ 'Disallow: /*?*view=' }}
  {%- endif %}
  {%- if group.sitemap != blank %}
    {{ group.sitemap }}
  {%- endif %}
{% endfor %}

robots.txt stops crawling, not indexing (Google’s robots.txt guide). Google can’t see the canonical or noindex on a blocked URL. If a parameter URL is already indexed, first let Google crawl it with a canonical or noindex, then block it later. The crawl respects robots.txt for the user agent SEOAuditSoftware and the * group, so blocked URLs also disappear from the next crawl.

Platform steps

WordPress

  1. Menus: in your WordPress admin, Appearance › Menus (/wp-admin/nav-menus.php) › edit the custom link and delete the ?… part › Save Menu.
  2. Canonical override for special cases: Yoast SEO › edit page › Advanced › Canonical URL; Rank Math › Advanced › Canonical URL.
  3. robots.txt: Yoast SEO › Tools › File editor, or Rank Math SEO › General Settings › Edit robots.txt.
  4. Yoast crawl cleanup: Yoast SEO › Settings › Advanced › Crawl optimization.

Shopify

  1. Menus: Shopify admin › Online Store › Navigation › edit the menu item › Save menu.
  2. robots.txt: Shopify admin › Online Store › Themes › … › Edit code › Add a new template › robots.txt, then paste the Liquid above › Save.

Webflow

  1. From the Webflow dashboard, open the site’s Site settings › SEO › Global canonical tag URL › enter https://www.example.com › Save › Publish.
  2. robots.txt: Site settings › SEO › Indexing › robots.txt.

Wix

  1. Canonicals are automatic. robots.txt: Wix dashboard › Marketing & SEO › SEO › Tools and settings › Robots.txt Editor.

Squarespace

  1. Canonicals are automatic; robots.txt can’t be edited, so rely on canonicals and clean links.

Verify the fix

  1. Load a parameter URL (for example /shoes/?sort=price), press Ctrl+U and check rel="canonical" points to the clean URL.
  2. Open https://www.example.com/robots.txt and check the rules are live. In Google Search Console, Settings › robots.txt shows the version Google fetched.
  3. Site crawl › Crawl again, then Compare: URLs with parameters should affect fewer URLs.

Automation

Assisted: parameter sources and canonicals are detected automatically; link edits and robots.txt changes need WordPress admin via plugin, the Shopify Admin API (themes) or CMS settings, and robots rules need a human check.

Uppercase letters found in the URL

How we detect it

The classic audit scanner checks the page URL for capital letters and writes Uppercase letters found in the URL.

Why it matters

URLs are case sensitive on most servers. /About-Us and /about-us can be two addresses for one page, which creates duplicates and broken links.

Common causes

  • If the site is hand-built or migrated → file or folder names kept their capitals.
  • If links were typed by hand → mixed case in the link only.

Fix: basic

  1. Use lowercase slugs for all new pages (WordPress lowercases slugs automatically).
  2. For existing uppercase URLs, change the slug to lowercase.
  3. Add a 301 from the old URL to the new one and update internal links (how: Fix: HTTPS, SSL and redirects › URL redirect).

Fix: expert

# one rule per old URL, inside the server { } block
location = /About-Us/ { return 301 /about-us/; }
Redirect 301 /About-Us/ https://www.example.com/about-us/

Platform steps

WordPress / Shopify / Webflow / Wix / Squarespace

  1. Edit the slug or URL handle in the page settings (see Fix: content › Keyword in the URL for each platform’s menu), keeping the platform’s redirect option on.

Verify the fix

  1. curl -I on the old URL shows one 301 to the lowercase URL.
  2. In Audits, click Run again on the audit for the new URL.

Automation

Assisted: redirects can be generated automatically; applying them needs WordPress admin via plugin, the Shopify Admin API or server SSH.

Underscore is found in the URL

How we detect it

The classic audit scanner checks the URL for _ and writes Underscore is found in the URL with “use hyphens as separators”.

Why it matters

Google reads hyphens as word separators but not underscores, so words joined by _ blur together (Google: URL structure).

Common causes

  • If the site is hand-built → file names like roof_repair.html.
  • If URLs come from a database export → IDs or titles joined with underscores.

Fix: basic

  1. Change /roof_repair_austin/ to /roof-repair-austin/ in the page settings.
  2. Add a 301 from the old URL and update internal links.

Fix: expert

Redirect 301 /roof_repair_austin/ https://www.example.com/roof-repair-austin/
location = /roof_repair_austin/ { return 301 /roof-repair-austin/; }

Platform steps

All platforms

  1. Edit the slug as under Uppercase letters found in the URL, with the redirect option on.

Verify the fix

  1. The old URL returns one 301 to the hyphenated URL.
  2. Click Run again on the audit.

Automation

Assisted: same access as Uppercase letters found in the URL.

URL is too long

How we detect it

The classic audit scanner measures the URL and writes URL is too long, URL is too short or URL length should be between … characters.

Why it matters

Short, descriptive URLs are easier to read, share and trust in search results.

Common causes

  • If WordPress post URLs contain dates → the permalink structure includes /%year%/%monthnum%/%day%/.
  • If slugs are full titles → the slug was generated from a long title.
  • If folders repeat → /services/services-plumbing/plumbing-repair/.

Fix: basic

  1. Keep slugs to about 3 to 5 words.
  2. Remove stop words, dates and repeated folders: /blog/2024/05/12/how-to-choose-the-best-emergency-plumber-in-leeds-for-your-home/ → /blog/choose-emergency-plumber-leeds/.
  3. For new WordPress sites, use Settings › Permalinks (/wp-admin/options-permalink.php) › Post name (/%postname%/).
  4. Change URLs of pages that already rank only when there’s a clear benefit, and always with a 301.

Fix: expert

Changing a live WordPress permalink structure from dated URLs needs a regex redirect for every old URL:

RedirectMatch 301 ^/\d{4}/\d{2}/\d{2}/(.+)$ https://www.example.com/$1
rewrite ^/\d{4}/\d{2}/\d{2}/(.+)$ https://www.example.com/$1 permanent;

Platform steps

WordPress

  1. In your WordPress admin, Settings › Permalinks › Post name › Save Changes, then add the regex redirect above (or a Rank Math › Redirections regex rule).

Other platforms

  1. Shorten the slug in page settings with the redirect option on.

Verify the fix

  1. An old dated URL returns one 301 to the short URL.
  2. Click Run again on the audit.

Automation

Assisted: slug shortening and redirects can be generated; structure changes need a human decision and WordPress admin or server SSH.

Common questions

Are URLs with parameters bad for SEO?

Not by themselves. Search, pagination and filters often need them. The problem is when many parameter URLs show the same content and get crawled or indexed as duplicates. A canonical tag to the clean URL and clean internal links solve most cases.

Should I block parameters in robots.txt or use canonical tags?

Prefer canonical tags. Google can't read the canonical on a URL that robots.txt blocks, so blocked duplicates can still appear in results without a description. Use robots.txt only for endless combinations (filters, sort orders, internal search) that waste crawl time.

Can I set parameter handling in Google Search Console?

No. Google retired the URL Parameters tool in 2022. Use canonical tags, clean internal links and, where needed, robots.txt.

Do UTM tags on my own links cause problems?

Yes. UTM parameters on internal links create duplicate URLs and overwrite the real traffic source in Google Analytics 4. Use UTMs only on links from outside the site (emails, ads, social posts).

Still need help?

Ask in the chat inside the app, or send us a message on the contact page. You can also browse all help topics.