{"id":357787,"date":"2026-09-02T08:24:17","date_gmt":"2026-09-02T08:24:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/linkcanary\/"},"modified":"2026-09-02T22:22:45","modified_gmt":"2026-09-02T22:22:45","slug":"link-invader","status":"publish","type":"plugin","link":"https:\/\/cs.wordpress.org\/plugins\/link-invader\/","author":14996526,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.3","stable_tag":"1.0.3","tested":"7.1","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Link Invader","header_author":"Invader Digital Inc.","header_description":"Finds broken links, dead images, and bot-blocked URLs with a genuinely local, host-safe scanner. No account, no credit card, no link quotas, and your content never leaves your site. Tells broken from blocked, so working links never get flagged.","assets_banners_color":"f9fbfd","last_updated":"2026-09-02 22:22:45","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/invader.digital\/link-invader","header_author_uri":"https:\/\/invader.digital","rating":0,"author_block_rating":0,"active_installs":0,"downloads":57,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","faq","changelog"],"tags":{"1.0.3":{"tag":"1.0.3","author":"natewren","date":"2026-09-02 22:22:45","revision":3678738}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3678432,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3678432,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3678738,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3678479,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3678738,"resolution":"1","location":"assets","locale":"","width":1280,"height":800},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3678738,"resolution":"2","location":"assets","locale":"","width":1280,"height":800},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3678738,"resolution":"3","location":"assets","locale":"","width":1280,"height":800},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3678738,"resolution":"4","location":"assets","locale":"","width":1280,"height":800},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3678738,"resolution":"5","location":"assets","locale":"","width":1280,"height":800}},"screenshots":{"1":"Every broken link in one list, broken, blocked, redirects and SSL, sorted and filterable, and fixed in place without opening a post.","2":"The Link Invader dashboard: a live scan monitor and verdict tiles, with one-click checks.","3":"Blocked is not broken. Sites that refuse robots get their own status instead of a false positive.","4":"Runs entirely on your own server, no account, no cloud, no quota, with scheduled re-checks, email alerts, and control over what gets scanned.","5":"Catches what others miss. Expired SSL certificates and links that quietly redirect to a search page or a dead end get their own warning, never a silent pass."}},"plugin_section":[],"plugin_tags":[905,17210,14279,251549,186],"plugin_category":[55],"plugin_contributors":[274368],"plugin_business_model":[],"class_list":["post-357787","plugin","type-plugin","status-publish","hentry","plugin_tags-905","plugin_tags-broken-link-checker","plugin_tags-broken-links","plugin_tags-link-monitor","plugin_tags-seo","plugin_category-seo-and-marketing","plugin_contributors-natewren","plugin_committers-natewren"],"banners":{"banner":"https:\/\/ps.w.org\/link-invader\/assets\/banner-772x250.png?rev=3678479","banner_2x":"https:\/\/ps.w.org\/link-invader\/assets\/banner-1544x500.png?rev=3678738","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/link-invader\/assets\/icon-128x128.png?rev=3678432","icon_2x":"https:\/\/ps.w.org\/link-invader\/assets\/icon-256x256.png?rev=3678432","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/link-invader\/assets\/screenshot-1.png?rev=3678738","caption":"V\u0161echny nefunk\u010dn\u00ed odkazy v jednom seznamu \u2013 nefunk\u010dn\u00ed, blokovan\u00e9, p\u0159esm\u011brov\u00e1n\u00ed a SSL \u2013 se\u0159azen\u00e9 a s mo\u017enost\u00ed filtrov\u00e1n\u00ed, a to p\u0159\u00edmo na str\u00e1nce bez nutnosti otev\u00edrat p\u0159\u00edsp\u011bvek."},{"src":"https:\/\/ps.w.org\/link-invader\/assets\/screenshot-2.png?rev=3678738","caption":"\u0158\u00eddic\u00ed panel Link Invader: monitor v re\u00e1ln\u00e9m \u010dase a dla\u017edice s v\u00fdsledky, s mo\u017enost\u00ed kontroly jedn\u00edm kliknut\u00edm."},{"src":"https:\/\/ps.w.org\/link-invader\/assets\/screenshot-3.png?rev=3678738","caption":"\u201eZablokov\u00e1no\u201c neznamen\u00e1 \u201enefunk\u010dn\u00ed\u201c. Webov\u00e9 str\u00e1nky, kter\u00e9 odm\u00edtaj\u00ed p\u0159\u00edstup robot\u016f, dost\u00e1vaj\u00ed vlastn\u00ed stav nam\u00edsto fale\u0161n\u011b pozitivn\u00edho v\u00fdsledku."},{"src":"https:\/\/ps.w.org\/link-invader\/assets\/screenshot-4.png?rev=3678738","caption":"B\u011b\u017e\u00ed v\u00fdhradn\u011b na va\u0161em vlastn\u00edm serveru, bez \u00fa\u010dtu, bez cloudu, bez datov\u00e9ho limitu, s napl\u00e1novan\u00fdmi opakovan\u00fdmi kontrolami, e-mailov\u00fdmi upozorn\u011bn\u00edmi a mo\u017enost\u00ed nastavit, co se m\u00e1 skenovat."},{"src":"https:\/\/ps.w.org\/link-invader\/assets\/screenshot-5.png?rev=3678738","caption":"Zachyt\u00ed to, co ostatn\u00edm unikne. Pro\u0161l\u00e9 certifik\u00e1ty SSL a odkazy, kter\u00e9 nen\u00e1padn\u011b p\u0159esm\u011brov\u00e1vaj\u00ed na vyhled\u00e1vac\u00ed str\u00e1nku nebo do slep\u00e9 uli\u010dky, jsou doprov\u00e1zeny vlastn\u00edm varov\u00e1n\u00edm \u2013 nikdy nejsou p\u0159ehl\u00e9dnuty."}],"raw_content":"<!--section=description-->\n<p>Link Invader finds broken links, dead images, and bot-blocked URLs across your whole site, and keeps watching so you know when something breaks.<\/p>\n\n<p>Everything runs locally on your own site. There is no account to create, no credit card to enter, no monthly link quota, and none of your content is sent to anyone's cloud.<\/p>\n\n<h4>Local first<\/h4>\n\n<ul>\n<li>All scanning happens inside WordPress. Your links, your server, your data.<\/li>\n<li>Works on staging sites, intranets, and password-protected sites that cloud crawlers cannot reach.<\/li>\n<li>Unlimited links and unlimited scans. There is no quota, because there is no cloud bill behind it.<\/li>\n<\/ul>\n\n<h4>Host safe<\/h4>\n\n<ul>\n<li>The scanner works in small, strictly budgeted slices with hard time and memory limits, so it stays friendly to shared hosting.<\/li>\n<li>Throttled, per-host-limited checking. Never floods any server, including yours: internal links are resolved through WordPress itself instead of HTTP.<\/li>\n<li>WP-CLI runner for very large sites: <code>wp link-invader scan<\/code>.<\/li>\n<\/ul>\n\n<h4>Accurate<\/h4>\n\n<ul>\n<li>\"Blocked\" is not \"broken.\" Sites that refuse robots (403, bot challenges, rate limits) get their own status instead of a false positive.<\/li>\n<li>Nothing is flagged broken on first sight. Dead links are confirmed on a second, later check before you are told.<\/li>\n<li>Every verdict carries a confidence level, and one click dismisses a link you know is fine.<\/li>\n<\/ul>\n\n<h4>Works with page builders<\/h4>\n\n<ul>\n<li>Divi, Elementor, Beaver Builder, Bricks and WPBakery all keep your page somewhere other than the post content. Link Invader reads the finished page, so links inside builder modules are checked like any other link.<\/li>\n<li>If a page cannot be read that way, it fetches the page properly rather than guessing.<\/li>\n<li>If your host or firewall blocks that too, it reads the addresses out of the builder's own fields, and says in the log that it did.<\/li>\n<li>It never reports a link it did not actually find. A builder page is never padded out with results that are not on your site.<\/li>\n<\/ul>\n\n<h4>Complete coverage<\/h4>\n\n<ul>\n<li>Scans the RENDERED content of every public post type, products and portfolios included, so links added by page builders, shortcodes, and blocks are seen. Choose what to scan in Settings.<\/li>\n<li>Menus, widgets, and footer links are covered. Broken images too.<\/li>\n<li>Every broken link says how long it has been failing, because a link that broke an hour ago may be a server restart and one that has been failing for a week is a link to fix.<\/li>\n<li>A link you have deleted stops being reported. It is marked as no longer on your site for one scan so you can see the fix worked, then removed.<\/li>\n<li>Visitor watch: when someone visits a page, its links are quietly bumped to the front of the recheck queue, so your busiest pages have the freshest results. This never runs checks during a page view and stores nothing about the visitor.<\/li>\n<\/ul>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20link%20invader%20send%20my%20content%20anywhere%3F\"><h3>Does Link Invader send my content anywhere?<\/h3><\/dt>\n<dd><p>No. Your posts, pages, links, and scan results never leave your site. Scanning runs on your server, and the only requests the plugin makes are HTTP requests to the links that appear in your own content, to check whether they work, the same requests a visitor's browser would make by clicking them. Nothing is checked in a cloud, so there is no quota and no account.<\/p>\n\n<p>There is one exception, and you are asked about it up front. See the next question.<\/p><\/dd>\n<dt id=\"what%20is%20the%20opt-in%20screen%20when%20i%20activate%20the%20plugin%3F\"><h3>What is the opt-in screen when I activate the plugin?<\/h3><\/dt>\n<dd><p>Link Invader uses the Freemius SDK to handle licensing and updates for the paid version. When you activate the plugin, Freemius asks whether you are willing to share basic diagnostic information about your site (the details are listed on that screen: your site address, your admin email, and your WordPress and PHP environment). It is entirely your choice.<\/p>\n\n<ul>\n<li>If you skip it, the plugin works exactly the same. Nothing is sent.<\/li>\n<li>If you accept, only that diagnostic information is shared with Freemius. Your content and your scan results are never included either way.<\/li>\n<\/ul>\n\n<p>Freemius is the service that also runs checkout and license keys for Link Invader Pro. Their terms are at https:\/\/freemius.com\/terms\/ and their privacy policy at https:\/\/freemius.com\/privacy\/.<\/p><\/dd>\n<dt id=\"will%20it%20slow%20down%20my%20site%3F\"><h3>Will it slow down my site?<\/h3><\/dt>\n<dd><p>The scanner was engineered for cheap shared hosting: it works in short budgeted slices, limits parallel requests per host, checks internal links through WordPress instead of HTTP, and never runs work during a visitor's page view. On our 2-worker acceptance test rig, scanning ~1,000 links added roughly 10 ms to average front-end response time.<\/p><\/dd>\n<dt id=\"why%20does%20a%20working%20link%20show%20as%20%22blocked%22%3F\"><h3>Why does a working link show as \"Blocked\"?<\/h3><\/dt>\n<dd><p>Some sites (Amazon, LinkedIn, sites behind certain firewalls) refuse automated checks even though they work fine in a browser. Older link checkers report these as broken; Link Invader gives them their own \"Blocked\" status so you can tell the difference at a glance.<\/p><\/dd>\n<dt id=\"what%20is%20visitor%20watch%3F\"><h3>What is visitor watch?<\/h3><\/dt>\n<dd><p>When a visitor views a page, Link Invader bumps that page's links to the front of the recheck queue (one small throttled database write, nothing more). The actual checking still happens later inside the scanner's normal budgets. You can turn this off in settings.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Improved the safe, one-time migration from the former LinkCanary plugin name to Link Invader.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Added one contextual Link Invader Pro link to the end of free completed-scan emails for people who want scheduled reports with affected URLs.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>When a scheduled Pro summary is enabled, it is now the single authoritative email. The count-only completed-scan email is suppressed to avoid conflicting snapshots.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<p>First public release.<\/p>\n\n<ul>\n<li>Finds broken links, images, and redirects across every public post type, reading the finished page your visitors see so links added by page builders, shortcodes, and blocks are all included.<\/li>\n<li>Spots the link that redirects instead of failing: a page quietly swept to a search box, or a crowd of links all landing on the same place. It answers 200, so most checkers call it healthy. Reported as something to look at, never as broken, because the page does load.<\/li>\n<li>Never flags a link on one bad response. Everything is re-checked before it is reported, and links that are merely blocked to bots (403, 401, rate limits, bot challenges) are shown as blocked rather than broken.<\/li>\n<li>Verifies https certificates. Expired, self-signed, and wrong-host certificates get their own warning instead of being quietly accepted.<\/li>\n<li>Built for shared hosting. No long-running process at all: work happens in short slices with hard time and memory limits, requests to any one host are capped, internal links are resolved through WordPress rather than over HTTP, and nothing runs during a visitor page view.<\/li>\n<li>A live monitor that tells you the truth. If checking stops for any reason, the dashboard says so and offers a one-click restart, instead of showing yesterday's results as though nothing were wrong. A dropped background request, which shared hosts do routinely, is retried on its own before you are told anything at all.<\/li>\n<li>Reads Divi, Elementor, Beaver Builder, Bricks and WPBakery pages, and never invents a link it did not find.<\/li>\n<li>Fix links without leaving the results: change a URL everywhere it appears, remove a link but keep the wording, re-check, or dismiss. Content edits are saved as revisions, and by default they do not change the post's modified date.<\/li>\n<li>Pages whose links live somewhere it cannot safely edit are reported as skipped, with a count. It never claims a fix it did not make.<\/li>\n<li>Rechecks the pages your visitors are actually reading first, and re-checks everything weekly.<\/li>\n<li>WP-CLI for large sites: wp link-invader scan, wp link-invader status.<\/li>\n<li>Your content never leaves your site. All results are stored locally, and uninstalling removes every table, option, scheduled job, and log.<\/li>\n<\/ul>\n\n<p>Pro adds:<\/p>\n\n<ul>\n<li>A domain inventory: every other site you link to, how many links each has, and where those links actually end up.<\/li>\n<li>Catches a link that still works but no longer goes where you sent it, which is what happens when a domain you link to changes hands.<\/li>\n<li>Scan scheduling with a quiet window, so all checking happens overnight in your own timezone, and stops completely outside it rather than competing with your visitors.<\/li>\n<li>Instant alerts when a link breaks, plus daily or weekly summaries that are sent even when nothing is wrong, so silence never has to be interpreted. Slack, Discord, and plain JSON webhooks.<\/li>\n<li>Bulk re-check, dismiss, and unlink across every result.<\/li>\n<li>Replace one domain with another everywhere it appears, with a preview of every change before anything is written.<\/li>\n<li>Fixes links inside Elementor pages in place, backing up the page's data first.<\/li>\n<li>A WordPress Multisite dashboard listing every site in the network: broken counts, last scan, and whether each site's scanner is actually running, with a restart button for any that has stopped.<\/li>\n<\/ul>","raw_excerpt":"Find and monitor broken links with a genuinely local, host-safe scanner. No account, no credit card, no link quotas, no cloud.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cs.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/357787","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cs.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/cs.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/cs.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=357787"}],"author":[{"embeddable":true,"href":"https:\/\/cs.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/natewren"}],"wp:attachment":[{"href":"https:\/\/cs.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=357787"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/cs.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=357787"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/cs.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=357787"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/cs.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=357787"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/cs.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=357787"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/cs.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=357787"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}