{"id":257022,"date":"2025-10-24T13:34:57","date_gmt":"2025-10-24T13:34:57","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/js-links-obfuscation-de-liens-seo\/"},"modified":"2025-10-24T14:12:09","modified_gmt":"2025-10-24T14:12:09","slug":"js-links","status":"publish","type":"plugin","link":"https:\/\/twd.wordpress.org\/plugins\/js-links\/","author":23385599,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"2.0.0","stable_tag":"2.0.0","tested":"6.8.5","requires":"5.9","requires_php":"7.4","requires_plugins":null,"header_name":"JS Links \u2013 SEO Link Obfuscation","header_author":"Pierre Ribeaucourt","header_description":"Hide selected links from crawlers while keeping them clickable. Lightweight and SEO-safe.","assets_banners_color":"070b0a","last_updated":"2025-10-24 14:12:09","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/www.ribeaucourt.fr\/js-links\/","header_author_uri":"https:\/\/ribeaucourt.fr","rating":0,"author_block_rating":0,"active_installs":10,"downloads":220,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.0.0":{"tag":"2.0.0","author":"pierreseo","date":"2025-10-24 14:12:09"}},"upgrade_notice":{"2.0.0":"<p>Initial release of JS Links \u2014 hide links from crawlers safely and easily.<\/p>\n\n<hr \/>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3384096,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3384096,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3384096,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3384096,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Gutenberg \u201cJS Link\u201d button","2":"Menu link exclusion field","3":"Visual customization options (color, hover, expert mode)"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[1953,19933,175,12170,186],"plugin_category":[34,55],"plugin_contributors":[249687],"plugin_business_model":[],"class_list":["post-257022","plugin","type-plugin","status-publish","hentry","plugin_tags-accessibility","plugin_tags-internal-linking","plugin_tags-links","plugin_tags-obfuscation","plugin_tags-seo","plugin_category-accessibility","plugin_category-seo-and-marketing","plugin_contributors-pierreseo","plugin_committers-pierreseo"],"banners":{"banner":"https:\/\/ps.w.org\/js-links\/assets\/banner-772x250.png?rev=3384096","banner_2x":"https:\/\/ps.w.org\/js-links\/assets\/banner-1544x500.png?rev=3384096","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/js-links\/assets\/icon-128x128.png?rev=3384096","icon_2x":"https:\/\/ps.w.org\/js-links\/assets\/icon-256x256.png?rev=3384096","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>JS Links<\/strong> lets you obfuscate links so crawlers can\u2019t follow them \u2014 while users still can.<br \/>\nIt replaces <code>&lt;a&gt;<\/code> tags with accessible <code>&lt;span&gt;<\/code> elements (<code>role=\"link\"<\/code>, <code>tabindex=\"0\"<\/code>) containing Base64-encoded URLs.<\/p>\n\n<p>\u2705 <strong>Use cases<\/strong>\n- Hide links to legal pages, login, or affiliate URLs<br \/>\n- Prevent PageRank dilution in footers or widgets<br \/>\n- Keep a clean, SEO-friendly internal linking structure<\/p>\n\n<p>\u2705 <strong>Key features<\/strong>\n- Lightweight, no external calls or tracking<br \/>\n- 100 % reversible (disable = restores original links)<br \/>\n- Works with all SEO plugins (Yoast, Rank Math, SEOPress)<br \/>\n- Compatible with any theme or builder<br \/>\n- Accessible (keyboard navigation supported)<br \/>\n- Optionally disable obfuscation on specific pages<br \/>\n- Custom CSS styling per area (content, menu, footer, widget)<\/p>\n\n<p>\u2705 <strong>Why not just use <code>nofollow<\/code>?<\/strong><br \/>\nBecause <code>nofollow<\/code> links are still visible to crawlers and can leak PageRank.<br \/>\nJS Links removes the <code>href<\/code> entirely and hides the destination \u2014 Google can\u2019t see it, so no PageRank flows.<\/p>\n\n<p>\u2705 <strong>Safe and compliant<\/strong>\nJS Links follows WordPress coding standards and includes:\n- URL sanitization (<code>esc_url_raw()<\/code>)\n- Output escaping (<code>esc_attr()<\/code>, <code>wp_kses_post()<\/code>)\n- CSS filtering (<code>safecss_filter_attr()<\/code>)\n- Protection against reverse tabnabbing (<code>noopener noreferrer<\/code>)<\/p>\n\n<p>\ud83e\udde0 <em>Result: total control of your internal link flow, with zero impact on UX.<\/em><\/p>\n\n\n\n<h3>Description (FR)<\/h3>\n\n<p><strong>JS Links<\/strong> permet d\u2019obfusquer certains liens pour emp\u00eacher Google et les robots d\u2019exploration de les suivre \u2014 tout en conservant un comportement identique pour l\u2019utilisateur.<br \/>\nLes balises <code>&lt;a&gt;<\/code> sont remplac\u00e9es par des <code>&lt;span&gt;<\/code> cliquables (<code>role=\"link\"<\/code>, <code>tabindex=\"0\"<\/code>) contenant l\u2019URL encod\u00e9e en Base64.<\/p>\n\n<p>\u2705 <strong>Cas d\u2019usage<\/strong>\n- Emp\u00eacher la transmission de PageRank sur les liens non strat\u00e9giques (CGU, mentions l\u00e9gales, etc.)<br \/>\n- Bloquer les liens d\u2019affiliation ou externes sans casser le design<br \/>\n- Pr\u00e9server un maillage interne propre et hi\u00e9rarchis\u00e9<\/p>\n\n<p>\u2705 <strong>Fonctionnalit\u00e9s<\/strong>\n- Ultra-l\u00e9ger et 100 % r\u00e9versible<br \/>\n- Compatible avec tous les th\u00e8mes et plugins SEO<br \/>\n- Accessible au clavier<br \/>\n- Personnalisation visuelle simple (CSS par zone)<br \/>\n- Exclusion possible de certaines pages<\/p>\n\n<p>\u2705 <strong>Diff\u00e9rence avec <code>nofollow<\/code><\/strong><br \/>\nUn lien <code>nofollow<\/code> reste une balise <code>&lt;a&gt;<\/code> visible par Google.<br \/>\nJS Links, lui, supprime l\u2019attribut <code>href<\/code> et encode l\u2019URL \u2014 donc <strong>Google ne voit pas le lien.<\/strong><\/p>\n\n<p>\u2705 <strong>S\u00e9curit\u00e9<\/strong>\nJS Links respecte les bonnes pratiques WordPress :\n- Nettoyage et validation des URLs<br \/>\n- \u00c9chappement syst\u00e9matique des sorties<br \/>\n- Filtrage CSS s\u00e9curis\u00e9<br \/>\n- Protection contre le reverse tabnabbing<br \/>\n- Fallback sans JavaScript (<code>&lt;noscript&gt;<\/code>)<\/p>\n\n<p>\ud83e\udde0 <em>En clair : tu gardes ton jus SEO sans sacrifier ton ergonomie.<\/em><\/p>\n\n\n\n<h3>Credits<\/h3>\n\n<p>Developed and maintained by <a href=\"https:\/\/ribeaucourt.fr\">Pierre Ribeaucourt<\/a><\/p>\n\n\n\n<h3>Support<\/h3>\n\n<p>If you encounter any issues or have suggestions, feel free to open a thread on the <a href=\"https:\/\/wordpress.org\/support\/plugin\/js-links\/\">Support Forum<\/a>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>js-links<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through the \u201cPlugins\u201d menu in WordPress<\/li>\n<li>In the Gutenberg editor, use the <strong>JS Link<\/strong> button.<\/li>\n<li>For menus, a dedicated field is available under <em>Appearance &gt; Menus<\/em>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id='how%20is%20this%20different%20from%20rel%3D%22nofollow%22%3F'><h3>How is this different from rel=\"nofollow\"?<\/h3><\/dt>\n<dd><p>A <code>nofollow<\/code> link is still a visible <code>&lt;a&gt;<\/code> tag and may leak PageRank.<br \/>\nJS Links removes the <code>href<\/code> attribute and encodes the URL \u2014 Google doesn\u2019t follow it.<\/p><\/dd>\n<dt id='is%20it%20compatible%20with%20seo%20plugins%20like%20yoast%2C%20rank%20math%2C%20or%20seopress%3F'><h3>Is it compatible with SEO plugins like Yoast, Rank Math, or SEOPress?<\/h3><\/dt>\n<dd><p>Yes. JS Links runs after SEO plugins and doesn\u2019t interfere with their output.<\/p><\/dd>\n<dt id='is%20it%20accessible%3F'><h3>Is it accessible?<\/h3><\/dt>\n<dd><p>Yes \u2014 links are fully keyboard-activable (<code>Enter<\/code> \/ <code>Space<\/code>) via <code>role=\"link\"<\/code> and <code>tabindex=\"0\"<\/code>.<br \/>\nHowever, some screen readers that only list real <code>&lt;a&gt;<\/code> links may skip them.<br \/>\nWe recommend not obfuscating critical navigation or accessibility links.<\/p><\/dd>\n<dt id='can%20i%20exclude%20specific%20pages%3F'><h3>Can I exclude specific pages?<\/h3><\/dt>\n<dd><p>Yes, by listing their relative URLs (e.g., <code>\/<\/code>, <code>\/contact<\/code>, <code>\/legal<\/code>) in the exclusion field.<\/p>\n\n<\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Initial WordPress.org release<\/li>\n<li>WP 6.8 compatibility \/ PHP 7.4+<\/li>\n<li>Improved accessibility and sanitization<\/li>\n<\/ul>","raw_excerpt":"Hide specific links from crawlers without breaking design or accessibility. Lightweight, reversible, and SEO-safe.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/257022","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=257022"}],"author":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/pierreseo"}],"wp:attachment":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=257022"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=257022"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=257022"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=257022"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=257022"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=257022"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}