# SEO Link Obfuscation: hide faceted links and optimize crawl budget

> Rewrite faceted, sorting and pagination links into non-crawlable elements, directly in the HTML you serve. Crawlers no longer see those links, visitors notice nothing: left click, middle click, ctrl+click and keyboard navigation all behave the same.

- Page: <https://www.datafirefly.com/en/product/dfobfuscator/>
- Language: en
- Last updated: 2026-07-28
- Platform: PrestaShop
- Category: SEO & Search Optimisation
- SKU: DF-OBFUSCATOR-FR
- Price: 79.00 EUR
- Other languages: [fr](https://www.datafirefly.com/product/dfobfuscator/index.md), [es](https://www.datafirefly.com/es/producto/dfobfuscator/index.md), [de](https://www.datafirefly.com/de/produkt/dfobfuscator/index.md), [it](https://www.datafirefly.com/it/product/dfobfuscator/index.md), [pl](https://www.datafirefly.com/pl/produkt/zaciemnianie-linkow-seo-prestashop/index.md), [nl](https://www.datafirefly.com/nl/product/dfobfuscator/index.md), [pt](https://www.datafirefly.com/pt/produto/dfobfuscator/index.md)
- Index: <https://www.datafirefly.com/en/product/llms.txt>

## Faceted navigation manufactures thousands of URLs

A set of six filters with four values each produces thousands of URL combinations on a single category. Googlebot discovers them, queues them and crawls them. Meanwhile your new product pages wait. Crawl budget goes into filter pages, and internal linking dilutes its equity across URLs you never intended to rank.

The usual answers each have a limit. Noindex lets the crawler burn through its queue before it understands. A robots.txt disallow blocks crawling but leaves the links passing PageRank into a wall. A canonical requires Google to crawl the page to read the instruction. In all three cases, the crawler saw the link first.

## Server-side rewriting, not a JavaScript patch

This module works on the final HTML, before it leaves for the browser, through the actionOutputHTMLBefore hook. Links matching your selectors become span elements carrying the encoded URL in a data attribute. No link tag remains in the source for those elements.

The difference with purely JavaScript solutions is clear: a crawler that does not execute JavaScript, or that parses the raw HTML before rendering, finds nothing to crawl. With obfuscation applied after page load, the link sits in the source and stays usable.

## What a visitor sees

Nothing different. Left click opens the page, middle click and ctrl+click open a new tab, the Enter key works from the keyboard. Obfuscated elements get tabindex 0, role link and a visible focus outline, so keyboard navigation and screen readers keep treating them as links.

AJAX filter refreshes and infinite scroll inject links into the page after the initial render. A MutationObserver applies the same selectors to them, which avoids inconsistent behaviour between the first display and the following ones.

## What this module is not

It is not cloaking. The content served is strictly identical for a visitor and for a crawler: no user-agent detection, no alternative HTML. The only thing that changes is that certain links are no longer links for anyone, and the browser reconstructs them at interaction time.

It is not a replacement for robots.txt or noindex either. Those tools remain relevant for URLs already indexed. Obfuscation prevents the discovery of new ones, it does not deindex what exists.
