{"id":305316,"date":"2026-06-01T07:13:47","date_gmt":"2026-06-01T07:13:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/link-obfuscator\/"},"modified":"2026-06-01T07:13:28","modified_gmt":"2026-06-01T07:13:28","slug":"bthiers-link-obfuscator","status":"publish","type":"plugin","link":"https:\/\/mai.wordpress.org\/plugins\/bthiers-link-obfuscator\/","author":20301750,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Link Obfuscator par Benjamin Thiers","header_author":"Benjamin Thiers","header_description":"Masque les liens aux crawlers Google. Le texte d'ancre est visible d\u00e8s le chargement (couleur + soulignement configurables). La balise &lt;a href&gt; est inject\u00e9e uniquement \u00e0 la premi\u00e8re interaction humaine.","assets_banners_color":"","last_updated":"2026-06-01 07:13:28","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/www.benjaminthiers.net\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":23,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"bthiers","date":"2026-06-01 07:13:28"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3556332,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3556319,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":{"bthiers-link-obfuscator\/obflink":{"name":"bthiers-link-obfuscator\/obflink","title":"Obfuscated Link"}},"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Settings page with the shortcode generator and live preview.","2":"Documentation panel with all available parameters.","3":"The Gutenberg block in the editor."}},"plugin_section":[],"plugin_tags":[1953,5362,265286,12171,186],"plugin_category":[34,55],"plugin_contributors":[265287],"plugin_business_model":[],"class_list":["post-305316","plugin","type-plugin","status-publish","hentry","plugin_tags-accessibility","plugin_tags-affiliate-links","plugin_tags-link-obfuscation","plugin_tags-obfuscator","plugin_tags-seo","plugin_category-accessibility","plugin_category-seo-and-marketing","plugin_contributors-bthiers","plugin_committers-bthiers"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/bthiers-link-obfuscator\/assets\/icon-128x128.png?rev=3556332","icon_2x":"https:\/\/ps.w.org\/bthiers-link-obfuscator\/assets\/icon-256x256.png?rev=3556319","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Link Obfuscator par Benjamin Thiers<\/strong> hides specific URLs from SEO bots and crawlers. The anchor text is visible immediately on page load (with configurable color and underline). The actual <code>&lt;a href&gt;<\/code> tag is only injected on the first human interaction \u2014 Google never sees the URL.<\/p>\n\n<p>This is ideal for:<\/p>\n\n<ul>\n<li>Affiliate links you don't want indexed or followed<\/li>\n<li>Private or partner URLs<\/li>\n<li>Any link you want to keep out of search engine results<\/li>\n<\/ul>\n\n<h4>How it works<\/h4>\n\n<p>The URL is encoded server-side (base64, charcode, ROT13, hex, or chunk redirect). A <code>&lt;span&gt;<\/code> with ARIA attributes (<code>role=\"link\"<\/code>, <code>aria-label<\/code>) is rendered in its place. On the first mouse, touch or keyboard interaction, JavaScript decodes the URL and injects the real <code>&lt;a&gt;<\/code> tag \u2014 making it fully accessible to human users while remaining invisible to crawlers.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>5 obfuscation methods: Base64, CharCode, ROT13, Hex, Redirect<\/li>\n<li>Shortcode <code>[linkobf_link]<\/code> and native Gutenberg block<\/li>\n<li>Configurable link color and underline per link<\/li>\n<li>Custom CSS class assignable to each link<\/li>\n<li>Accessible: <code>role=\"link\"<\/code>, <code>aria-label<\/code>, keyboard navigation (<code>tabindex<\/code>)<\/li>\n<li>Built-in shortcode generator in the settings page<\/li>\n<li>No external dependencies, no tracking<\/li>\n<\/ul>\n\n<h4>Accessibility<\/h4>\n\n<p>Each obfuscated link renders as a <code>&lt;span&gt;<\/code> with <code>role=\"link\"<\/code> and <code>aria-label<\/code>, so screen readers announce it correctly. Keyboard users can tab to it and activate it with Enter or Space. This meets RGAA and WCAG 2.1 Level AA requirements for links.<\/p>\n\n<h4>Privacy<\/h4>\n\n<p>This plugin does not collect, store or transmit any personal data. It is fully compatible with GDPR requirements. No cookies are set.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>bthiers-link-obfuscator<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Go to <strong>Settings &gt; Link Obfuscator<\/strong> to use the shortcode generator.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20work%20with%20the%20gutenberg%20block%20editor%3F\"><h3>Does this work with the Gutenberg block editor?<\/h3><\/dt>\n<dd><p>Yes. A native block called \"Obfuscated Link\" is available directly in the block editor. Search for it by name in the block inserter.<\/p><\/dd>\n<dt id=\"which%20obfuscation%20method%20should%20i%20use%3F\"><h3>Which obfuscation method should I use?<\/h3><\/dt>\n<dd><p>Base64 is the default and works well for most use cases. All methods are decoded client-side via JavaScript \u2014 choose based on your preference. None of them are cryptographically secure; the goal is to prevent crawlers from indexing the URL, not to protect sensitive data.<\/p><\/dd>\n<dt id=\"what%20do%20crawlers%20see%3F\"><h3>What do crawlers see?<\/h3><\/dt>\n<dd><p>They see a <code>&lt;span&gt;<\/code> with text and ARIA attributes. No <code>href<\/code>, no URL. Example:\n    My link<\/p><\/dd>\n<dt id=\"does%20it%20work%20if%20javascript%20is%20disabled%3F\"><h3>Does it work if JavaScript is disabled?<\/h3><\/dt>\n<dd><p>No. The link injection relies on JavaScript. If JS is disabled, the visitor will see the anchor text but won't be able to click through. This is expected behavior for an obfuscation plugin.<\/p><\/dd>\n<dt id=\"is%20it%20compatible%20with%20caching%20plugins%3F\"><h3>Is it compatible with caching plugins?<\/h3><\/dt>\n<dd><p>Yes. The obfuscation is done server-side at render time. The resulting HTML is static and cacheable. The JavaScript injection happens client-side on interaction.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Shortcode <code>[linkobf_link]<\/code> with 5 obfuscation methods.<\/li>\n<li>Native Gutenberg block.<\/li>\n<li>Settings page with shortcode generator and live preview.<\/li>\n<li>RGAA\/WCAG accessibility compliance.<\/li>\n<\/ul>","raw_excerpt":"Hide links from search engine crawlers while keeping them accessible to human visitors, with full RGAA\/WCAG accessibility compliance.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/305316","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=305316"}],"author":[{"embeddable":true,"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/bthiers"}],"wp:attachment":[{"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=305316"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=305316"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=305316"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=305316"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=305316"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=305316"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}