Faceted navigation best (and 5 of the worst) practices

Wednesday, February 12, 2014

Selecting filters with faceted navigation can cause many URL combinations
Selecting filters with faceted navigation can cause many URL combinations, such as https://www.example.com/category.php?category=gummy-candies&price=5-10&price=over-10

Faceted navigation, such as filtering by color or price range, can be helpful for your visitors, but it's often not search-friendly since it creates many combinations of URLs with duplicative content. With duplicative URLs, search engines may not crawl new or updated unique content as quickly, and/or they may not index a page accurately because indexing signals are diluted between the duplicate versions. To reduce these issues and help faceted navigation sites become as search-friendly as possible, we'd like to:

Background

In an ideal state, unique content—whether an individual product/article or a category of products/articles— would have only one accessible URL. This URL would have a clear click path, or route to the content from within the site, accessible by clicking from the home page or a category page.

  • Clear path that reaches all individual product/article pages

    On the left is potential user navigation on the site (or, the click path), on the right are the pages accessed.
  • One representative URL for category page https://www.example.com/category.php?category=gummy-candies

    Category page for gummy candies
  • One representative URL for individual product page https://www.example.com/product.php?item=swedish-fish

    One representative URL for individual product page

Undesirable duplication caused with faceted navigation

  • Numerous URLs for the same article/product

    • Canonical: example.com/product.php?item=swedish-fish

      Canonical URL for the same product
    • Duplicate: example.com/product.php?item=swedish-fish&category=gummy-candies&price=5-10

      Duplicate URL for the same product

    The same product page for swedish fish can be available on multiple URLs.

  • Numerous category pages that provide little or no value to searchers and search engines), as demontrated in the following table:

    URL example.com/category.php?category=gummy-candies&taste=sour&price=5-10 example.com/category.php?category=gummy-candies&taste=sour&price=over-10
    category page for gummy candies in the price range $5-10 category page for gummy candies that are over $10
    Issues
    • No added value to Google searchers given users rarely search for "sour gummy candy price five to ten dollars".
    • No added value for search engine crawlers that discover same item ("fruit salad") from parent category pages (either "gummy candies" or "sour gummy candies").
    • Negative value to site owner who may have indexing signals diluted between numerous versions of the same category.
    • Negative value to site owner with respect to serving bandwidth and losing crawler capacity to duplicative content rather than new or updated pages.
    • No value for search engines (should have 404 response code).
    • Negative value to searchers.

Worst (search un-friendly) practices for faceted navigation

Worst practice #1: Non-standard URL encoding for parameters, like commas or brackets, instead of key=value& pairs.

Worst practices:

example.com/category?[category:gummy-candy][sort:price-low-to-high][sid:789]
  • Key-value pairs marked with : rather than =.
  • Multiple parameters appended with [ ] rather than &.
example.com/category?category,gummy-candy,,sort,lowtohigh,,sid,789
  • Key-value pairs marked with a , rather than =.
  • Multiple parameters appended with ,, rather than &.

Best practice:

example.com/category?category=gummy-candy&sort=low-to-high&sid=789

While humans may be able to decode odd URL parameters, such as ,,, crawlers have difficulty interpreting URL parameters when they're implemented in a non-standard fashion. Software engineer on Google's Crawling Team, Mehmet Aktuna, says "Using non-standard encoding is just asking for trouble." Instead, connect key-value pairs with an equal sign (=) and append multiple parameters with an ampersand (&).

Worst practice #2: Using directories or file paths rather than parameters to list values that don't change page content.

Worst practice:

Where /c123/ is a category,