Google's John Mueller: Bracketed and Percent-Encoded URLs Are Different URLs, So Pick One Form and Stick to It

Google's John Mueller said on 19 October that a URL with raw square brackets and its percent-encoded version are not equivalent under RFC 3986, and that he had probably given the wrong answer before. Google will crawl both and de-duplicate them if the content matches, so consistency across links, canonicals and sitemaps matters.

Vibhu Dhariwal
Cofounder & CTO, Digital Gratified
Published
Section
Explainers
Reading time
4 minutes
Data card: raw square brackets and %5B%5D are different URLs, says Google's John Mueller

Google Search Advocate John Mueller said on 19 October 2026 that a URL containing raw square brackets and the same URL with those brackets percent-encoded are not equivalent, reversing what he said he had assumed and probably told people in the past. In a Bluesky thread replying to former Googler Vanessa Fox, Mueller pointed to the internet standard for URLs, RFC 3986, which treats brackets and plus signs as reserved characters. His advice: pick one form and use it consistently.

What was asked

Fox asked on 18 October whether Google treats an encoded URL as distinct from its unencoded form, giving the example of example.com/category?filter[]=123 in links versus example.com/category?filter%5B%5D=123 in canonical values. This pattern is common on ecommerce and faceted navigation sites, where frameworks generate array-style query parameters.

What Mueller said

  • They are different URLs. Mueller wrote that he "would have assumed they're equivalent, but they're NOT", citing RFC 3986 section 2.2, which lists [ ] and + in the reserved set.
  • Google may still merge them. If a server returns the same content for both, Google would crawl both versions and, on seeing the same content, de-duplicate them and pick one.
  • Spaces and plus signs have the same problem. A space, a + and %20 are also handled differently, and the result depends on whether the character sits in the path or the query string.
  • Hex case does not matter. Mueller said %5B and %5b are the same.
  • Raw brackets are technically invalid. Under RFC 3986, [ and ] may only appear in the hostname to wrap IPv6 addresses. Browsers generally encode them when you type them, but code that requests a URL may send them as they are.

When Fox replied that a client site uses raw brackets throughout and indexes fine, Mueller said in a follow-up that he would expect it to keep working because much of the web is messy, but that he would not build a new site that way and would pay extra attention to keeping internal links, rel=canonical and structured data consistent. Fox added that she was seeing similar results for other characters, although Google appeared to treat ' and %27 as equivalent.

What the standard says

RFC 3986 states that URIs which differ only by replacing a reserved character with its percent-encoded form "are not equivalent". The same standard says the hexadecimal digits in a percent-encoding are case-insensitive, which is the basis for Mueller's point that %5B equals %5b. Google's own URL structure documentation already says Google Search supports URLs as defined by IETF STD 66 and that reserved characters "must be percent encoded".

Pair of URLsEquivalent under RFC 3986?Browser URL parser (WHATWG) treats as same string?
?filter[]=123 vs ?filter%5B%5D=123No (reserved characters)No
?x=%5B vs ?x=%5bYes (hex case is insensitive)No (case is not normalised)
?q=a+b vs ?q=a%20bNo (+ is reserved)No
?q=a b (raw space) vs ?q=a%20bRaw space is not allowedYes (space is encoded to %20)
Equivalence of common URL variants. RFC column from RFC 3986 sections 2.2 and 6.2.2.1. Parser column from our own test using the JavaScript URL API in Node.js 22 on 21 October 2026, comparing the resulting href strings.

Our test shows why this trips people up. Running the comparison Mueller posted, new URL(...).href returns false for the bracket pair, as he said. It also returns false for %5B versus %5b, because the browser parser keeps the case as written even though the standard treats the two as equal. Any script that de-duplicates URLs with a plain string comparison will therefore see more distinct URLs than Google does in some cases, and fewer in others.

Context

Duplicate URL variants are an old crawl budget problem. Google's documentation on consolidating duplicate URLs says it chooses a canonical from signals including rel=canonical, redirects and sitemap inclusion, so mixed signals across encoded and unencoded forms make that choice less predictable. Mueller also noted that other crawlers, indexers and fetchers may be less exact than Google, which matters now that AI search tools fetch pages with their own code.

What to do

  • Choose one form. If your platform generates bracketed parameters, decide on either the encoded or the raw form and output it everywhere: internal links, rel=canonical, hreflang, XML sitemaps and structured data.
  • Prefer encoding for new builds. Google's documentation and Mueller both point to percent-encoding reserved characters.
  • Check Search Console. Use URL Inspection on both forms of a sample URL to see which one Google selected as canonical.
  • Audit your crawler settings. Make sure your own crawling and log analysis tools are not silently normalising or splitting these variants, so your reports match what search engines see.
  • Do not rush a migration. For established sites that index well with raw brackets, Mueller's advice was consistency, not a wholesale URL change.

Conclusion

Mueller's correction is a small technical point with wide reach: an encoded and an unencoded URL can be two URLs to Google, and the search engine only merges them when it sees the same content. Sites using array-style parameters do not need to panic, since Google de-duplicates matching pages, but they should make every signal point at the same form.

Questions and answers

Does Google treat ?filter[]= and ?filter%5B%5D= as the same URL?

No. John Mueller said on 19 October 2026 that the two are not equivalent because RFC 3986 defines square brackets as reserved characters. Google would crawl both and de-duplicate them if the content is the same.

Does the case of percent-encoding matter to Google?

Mueller said hex case does not matter, so %5B and %5b are the same. RFC 3986 also says the hexadecimal digits in a percent-encoding are case-insensitive.

Should I change a site that already uses raw square brackets?

Mueller said he would expect such a site to keep working, but he would not set up a new site that way and would pay extra attention to keeping internal links, canonicals and structured data consistent.

What does Google's documentation say about reserved characters?

Google's URL structure documentation says Google Search supports URLs as defined by IETF STD 66 and that characters defined by the standard as reserved must be percent encoded.

More releases

  1. Industry news

    Meta Drops "Train" From Its Website Crawling Terms but Keeps Broad Access Ahead of the 30 October Start

    Meta has revised the crawling clause in its new Commercial Terms, removing the word "train" and limiting the stated purposes to advertising and business products. Legal experts say the wording still permits broad crawling of sites linked to Meta business accounts. The terms take effect on 30 October.

  2. Studies

    8 of 10 AI Search Tools Cited a Made-Up Concept Within a Week of Seeding, Fudan University Study Finds

    Researchers at Fudan University posted a fictional concept on sites that AI search tools already cite, and 8 of 10 tools cited it within seven days. Grok cited the posts in 93.7% of answers after first pickup, while 40 posts on a self-hosted WordPress site drew no citations at all.

  3. Industry news

    DeepSeek Opens Its In-House Search Engine to Developers at $0.75 per 1,000 Calls, With a 0 to 4 Authority Tier

    DeepSeek opened Search and Fetch APIs built on its own search engine on 17 October. Each result carries a 0 to 4 authority tier and a 0 to 3 rerank score, both undocumented, and DeepSeek says the engine filters SEO spam and "GEO manipulation". Billing starts 31 October at 16:00 UTC.

Every release

Tell us the site and the goals.

Rankings in Google and visibility in AI answers, from one monthly plan. One call is enough to say which one fits. Email works just as well.