{"id":390437,"date":"2026-10-31T06:05:31","date_gmt":"2026-10-31T06:05:31","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/webot-anchor-check\/"},"modified":"2026-10-31T06:05:01","modified_gmt":"2026-10-31T06:05:01","slug":"webot-anchor-check","status":"publish","type":"plugin","link":"https:\/\/ar.wordpress.org\/plugins\/webot-anchor-check\/","author":23548670,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Webot Anchor Check","header_author":"Suraj Dev","header_description":"Finds #anchor links that point to an ID that does not exist on the target page, so jump links never fail silently.","assets_banners_color":"626e73","last_updated":"2026-10-31 06:05:01","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/surajdev.com\/tools\/webot-anchor-check.html","header_author_uri":"https:\/\/surajdev.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":130,"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":"surajdev","date":"2026-10-31 06:05:01","revision":3776374}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3776374,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3776374,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3776394,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3776374,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3776374,"resolution":"1","location":"assets","locale":"","width":1600,"height":822},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3776374,"resolution":"2","location":"assets","locale":"","width":1600,"height":818},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3776374,"resolution":"3","location":"assets","locale":"","width":1600,"height":820}},"screenshots":{"1":"The dashboard displays pages scanned, total anchor links, broken anchors and scan status.","2":"The initial dashboard provides the Scan my site action and weekly scan settings.","3":"The Links view displays anchor IDs, source pages, link text and individual scan results."}},"plugin_section":[],"plugin_tags":[9441,8533,14279,25658,186],"plugin_category":[55],"plugin_contributors":[289874],"plugin_business_model":[],"class_list":["post-390437","plugin","type-plugin","status-publish","hentry","plugin_tags-anchor-links","plugin_tags-audit","plugin_tags-broken-links","plugin_tags-jump-links","plugin_tags-seo","plugin_category-seo-and-marketing","plugin_contributors-surajdev","plugin_committers-surajdev"],"banners":{"banner":"https:\/\/ps.w.org\/webot-anchor-check\/assets\/banner-772x250.png?rev=3776374","banner_2x":"https:\/\/ps.w.org\/webot-anchor-check\/assets\/banner-1544x500.png?rev=3776394","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/webot-anchor-check\/assets\/icon-128x128.png?rev=3776374","icon_2x":"https:\/\/ps.w.org\/webot-anchor-check\/assets\/icon-256x256.png?rev=3776374","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/webot-anchor-check\/assets\/screenshot-1.png?rev=3776374","caption":"The dashboard displays pages scanned, total anchor links, broken anchors and scan status."},{"src":"https:\/\/ps.w.org\/webot-anchor-check\/assets\/screenshot-2.png?rev=3776374","caption":"The initial dashboard provides the Scan my site action and weekly scan settings."},{"src":"https:\/\/ps.w.org\/webot-anchor-check\/assets\/screenshot-3.png?rev=3776374","caption":"The Links view displays anchor IDs, source pages, link text and individual scan results."}],"raw_content":"<!--section=description-->\n<p>A button says \"Pricing\" and links to <code>#pricing<\/code>, but that section's ID was renamed or deleted. Nothing happens when a visitor clicks it, and no broken-link checker tells you, because the page itself still loads.<\/p>\n\n<p>Webot Anchor Check scans your published pages and posts, reads the rendered HTML (so menus, headers, footers and page-builder output are included), and checks that every <code>#fragment<\/code> link points to an element ID or <code>&lt;a name&gt;<\/code> that really exists on the target page.<\/p>\n\n<p><strong>What you get<\/strong><\/p>\n\n<ul>\n<li>A full scan log of every page and every #anchor link, each marked OK, Broken, Failed, Skipped or Unchecked<\/li>\n<li>Filter and search the log, switch between a Links view and a Pages view<\/li>\n<li>A live progress terminal while the scan runs<\/li>\n<li>Failed pages are listed with the reason (for example HTTP 404), so nothing is skipped silently<\/li>\n<li>One-click edit links to the page that contains the broken link<\/li>\n<li>Optional weekly scan with a dashboard notice<\/li>\n<li>CSV export of the full log<\/li>\n<li>An ignore list for IDs that JavaScript creates after the page loads<\/li>\n<li>No external services, no account, no tracking. Everything stays on your site.<\/li>\n<\/ul>\n\n<p><strong>What it skips on purpose<\/strong><\/p>\n\n<ul>\n<li><code>#top<\/code> (browsers scroll to the top without an ID)<\/li>\n<li><code>#!<\/code> and <code>#\/<\/code> style links used by JavaScript routers<\/li>\n<li>Text fragments (<code>#:~:text=<\/code>)<\/li>\n<li>Links to other websites<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>webot-anchor-check<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install it from the Plugins screen.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Go to Tools &gt; Anchor Check and click Scan my site.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"why%20does%20it%20report%20an%20anchor%20that%20works%20on%20my%20site%3F\"><h3>Why does it report an anchor that works on my site?<\/h3><\/dt>\n<dd><p>Some tabs, accordions and sliders create their IDs with JavaScript after the page loads. The plugin reads the server-rendered HTML, so it cannot see those IDs. Add them to the ignore list under Tools &gt; Anchor Check &gt; Settings. Use * at the end to match a prefix, for example <code>tab-*<\/code>.<\/p><\/dd>\n<dt id=\"does%20it%20check%20links%20to%20other%20websites%3F\"><h3>Does it check links to other websites?<\/h3><\/dt>\n<dd><p>No. Only links to pages on your own site are checked.<\/p><\/dd>\n<dt id=\"will%20it%20slow%20down%20my%20site%3F\"><h3>Will it slow down my site?<\/h3><\/dt>\n<dd><p>Visitors are not affected. A scan requests your pages the same way a visitor would, in small batches, and only when you start it or when the weekly scan runs.<\/p><\/dd>\n<dt id=\"my%20site%20is%20behind%20a%20password%20or%20maintenance%20mode.\"><h3>My site is behind a password or maintenance mode.<\/h3><\/dt>\n<dd><p>Pages that do not return a normal 200 response are skipped, because their anchors cannot be checked.<\/p><\/dd>\n<dt id=\"does%20it%20change%20my%20content%3F\"><h3>Does it change my content?<\/h3><\/dt>\n<dd><p>No. It only reads and reports.<\/p><\/dd>\n<dt id=\"what%20data%20does%20it%20store%3F\"><h3>What data does it store?<\/h3><\/dt>\n<dd><p>The latest scan results and log, your settings and short-lived cached ID lists, all in your own database. Everything is removed when you delete the plugin.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"Finds #anchor links that point to an ID that doesn't exist, so jump links, tables of contents and menu items never fail silently.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/390437","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=390437"}],"author":[{"embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/surajdev"}],"wp:attachment":[{"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=390437"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=390437"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=390437"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=390437"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=390437"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=390437"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}