{"id":393087,"date":"2026-10-27T17:05:32","date_gmt":"2026-10-27T17:05:32","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/quiet-link-checker\/"},"modified":"2026-10-27T17:05:11","modified_gmt":"2026-10-27T17:05:11","slug":"quiet-link-checker","status":"publish","type":"plugin","link":"https:\/\/vi.wordpress.org\/plugins\/quiet-link-checker\/","author":23593353,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.4","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"Quiet Link Checker","header_author":"Andr\u00e9s Garc\u00eda","header_description":"Lightweight broken link checker. Scans links and images in the background, 100% on your own server: no account, no cloud, no tracking.","assets_banners_color":"6e8694","last_updated":"2026-10-27 17:05:11","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/quiet-link-checker\/","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":63,"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":"andres0547","date":"2026-10-27 17:05:11","revision":3769098}},"upgrade_notice":{"1.0.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3769096,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3769096,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3769096,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3769096,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3769096,"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":3769096,"resolution":"1","location":"assets","locale":"","width":1280,"height":860},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3769096,"resolution":"2","location":"assets","locale":"","width":1280,"height":860},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3769096,"resolution":"3","location":"assets","locale":"","width":1280,"height":640},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3769096,"resolution":"4","location":"assets","locale":"","width":1280,"height":1500}},"screenshots":{"1":"The list of problems with status, link text, where each link appears and quick actions.","2":"Editing a broken URL inline: it is replaced everywhere it appears.","3":"Scan progress, running in the background.","4":"Settings: what to scan and how fast."}},"plugin_section":[],"plugin_tags":[905,128337,14279,14280,186],"plugin_category":[55],"plugin_contributors":[289014],"plugin_business_model":[],"class_list":["post-393087","plugin","type-plugin","status-publish","hentry","plugin_tags-905","plugin_tags-broken-images","plugin_tags-broken-links","plugin_tags-link-checker","plugin_tags-seo","plugin_category-seo-and-marketing","plugin_contributors-andres0547","plugin_committers-andres0547"],"banners":{"banner":"https:\/\/ps.w.org\/quiet-link-checker\/assets\/banner-772x250.png?rev=3769096","banner_2x":"https:\/\/ps.w.org\/quiet-link-checker\/assets\/banner-1544x500.png?rev=3769096","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/quiet-link-checker\/assets\/icon.svg?rev=3769096","icon":"https:\/\/ps.w.org\/quiet-link-checker\/assets\/icon.svg?rev=3769096","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/quiet-link-checker\/assets\/screenshot-1.png?rev=3769096","caption":"The list of problems with status, link text, where each link appears and quick actions."},{"src":"https:\/\/ps.w.org\/quiet-link-checker\/assets\/screenshot-2.png?rev=3769096","caption":"Editing a broken URL inline: it is replaced everywhere it appears."},{"src":"https:\/\/ps.w.org\/quiet-link-checker\/assets\/screenshot-3.png?rev=3769096","caption":"Scan progress, running in the background."},{"src":"https:\/\/ps.w.org\/quiet-link-checker\/assets\/screenshot-4.png?rev=3769096","caption":"Settings: what to scan and how fast."}],"raw_content":"<!--section=description-->\n<p>Quiet Link Checker finds broken links and broken images in your posts, pages, custom post types and (optionally) comments, and lets you fix them in one click.<\/p>\n\n<p>It is called <em>quiet<\/em> because it stays out of the way: it works in the background without slowing your site, it never nags you, and it talks to no server other than the ones your links point to.<\/p>\n\n<p>It is built around three promises:<\/p>\n\n<ul>\n<li><strong>It does not slow your site down.<\/strong> Checks run in the background in short, time-boxed batches, never during your visitors' page loads. You choose how many requests run in parallel, how long each batch may work and how long to pause between requests. It never sends two requests at the same time to the same external site.<\/li>\n<li><strong>Everything stays on your server.<\/strong> No account, no sign-up, no cloud service, no tracking. The only outgoing requests are the checks of the links in your own content.<\/li>\n<li><strong>No upsell noise.<\/strong> No banners, no nags, no dashboard ads. The free plugin is complete.<\/li>\n<\/ul>\n\n<h4>What it checks<\/h4>\n\n<ul>\n<li>Links (<code>&lt;a href&gt;<\/code>) and images (<code>&lt;img src&gt;<\/code>) in published content of the post types you choose.<\/li>\n<li>Links in approved comments (optional).<\/li>\n<li>Broken links (404, 410 and other 4xx\/5xx errors), redirects (301\/302\u2026) and timeouts.<\/li>\n<li>Internal and external links. Relative URLs are resolved against each page.<\/li>\n<\/ul>\n\n<h4>How it decides a link is broken<\/h4>\n\n<ul>\n<li>It sends a light <code>HEAD<\/code> request first and falls back to <code>GET<\/code> when a server does not answer <code>HEAD<\/code> properly (many reply 403\/405 to <code>HEAD<\/code> and 200 to <code>GET<\/code>).<\/li>\n<li>404 and 410 are reported straight away, and so are pages or images that now redirect to the site's home page (a \"soft 404\": the content was removed). Server errors (5xx), \"too many requests\" (429) and timeouts are <strong>retried later with backoff<\/strong> (5 min, 20 min, 80 min\u2026) before being reported, so a site that was down for a minute does not fill your list with false alarms.<\/li>\n<li>Each URL is checked once, however many pages use it, and links that worked are cached for a number of days you choose.<\/li>\n<\/ul>\n\n<h4>Quick actions<\/h4>\n\n<p>From the list of problems, for each link:<\/p>\n\n<ul>\n<li><strong>Edit URL<\/strong> \u2013 replaces it everywhere it appears (all posts and comments) without touching the rest of your markup or blocks.<\/li>\n<li><strong>Remove link<\/strong> \u2013 removes the link but keeps its text.<\/li>\n<li><strong>Ignore<\/strong> \u2013 hides it from the problems list and stops checking it.<\/li>\n<li><strong>Recheck<\/strong> \u2013 checks it again right now.<\/li>\n<\/ul>\n\n<p>Edits are saved as normal post updates, so a revision is stored and you can always undo them from the post's revisions.<\/p>\n\n<h4>Filters and search<\/h4>\n\n<p>Views for problems, broken links, redirects, timeouts, links being retried and ignored links; filter by links or images; search by URL or link text; sort by URL, status, detection date or last check.<\/p>\n\n<h4>Built for big sites<\/h4>\n\n<ul>\n<li>Its own database tables (nothing piled into <code>wp_options<\/code> or <code>postmeta<\/code>).<\/li>\n<li>Nothing is loaded on the front end and its assets only load on its own admin screen.<\/li>\n<li>Pause, resume or stop a scan at any time.<\/li>\n<li>WP-CLI commands for system cron on large sites: <code>wp quiet-link-checker scan<\/code>, <code>wp quiet-link-checker run<\/code>, <code>wp quiet-link-checker status<\/code>.<\/li>\n<\/ul>\n\n<h4>Privacy<\/h4>\n\n<p>Quiet Link Checker does not collect, store or send any personal data, and it does not contact any server of its own. To check a link it requests that link's URL from your server, as a visitor's browser would, identifying itself with the user agent <code>QuietLinkChecker\/1.0 (+your site URL)<\/code>. If you enable the robots.txt option, it also requests <code>\/robots.txt<\/code> from each linked site once a day.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin from <strong>Plugins \u2192 Add New<\/strong>, or upload the <code>quiet-link-checker<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Go to <strong>Tools \u2192 Quiet Link Checker<\/strong> and click <strong>Scan now<\/strong>.<\/li>\n<li>Leave the page if you like: the scan continues in the background. Come back to see the problems found.<\/li>\n<\/ol>\n\n<p>Optional: in <strong>Settings<\/strong> choose which content types to scan, whether to include comments, and how fast to check.<\/p>\n\n<p>On large sites, or if WP-Cron is disabled, add a system cron job that runs <code>wp quiet-link-checker run<\/code> every few minutes.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"will%20it%20slow%20down%20my%20website%3F\"><h3>Will it slow down my website?<\/h3><\/dt>\n<dd><p>No. Checking happens in background batches (WP-Cron, WP-CLI, or while you have the Quiet Link Checker screen open), never while a visitor's page is loading. Each batch has a time limit and the pace is configurable. On visitor page loads the plugin only registers its hooks: no queries, no HTTP requests, no scripts or styles.<\/p><\/dd>\n<dt id=\"do%20i%20need%20an%20account%20or%20an%20api%20key%3F\"><h3>Do I need an account or an API key?<\/h3><\/dt>\n<dd><p>No. There is no account, no external service and no API key. Everything runs inside your WordPress.<\/p><\/dd>\n<dt id=\"does%20it%20send%20any%20data%20anywhere%3F\"><h3>Does it send any data anywhere?<\/h3><\/dt>\n<dd><p>No telemetry and no \"phone home\". The only outgoing requests are the checks of your own links.<\/p><\/dd>\n<dt id=\"how%20long%20does%20a%20scan%20take%3F\"><h3>How long does a scan take?<\/h3><\/dt>\n<dd><p>It depends on how many unique links you have and how fast the linked sites answer. The defaults are deliberately gentle: in our test site (2,000 posts, about 6,000 unique links) they checked about 110 links per minute, so a full first scan takes about an hour, in the background. With \"Parallel requests\" at 10, no pause and 60-second batches it checked about 400 links a minute, still with no measurable slowdown for visitors. Later scans are much faster because links that worked are cached.<\/p><\/dd>\n<dt id=\"why%20is%20a%20link%20marked%20%22retrying%22%3F\"><h3>Why is a link marked \"Retrying\"?<\/h3><\/dt>\n<dd><p>The site answered with a temporary error (5xx, 429) or did not answer in time. Quiet Link Checker will try again later before calling it broken, to avoid false alarms.<\/p><\/dd>\n<dt id=\"some%20sites%20%28linkedin%2C%20sites%20behind%20bot%20protection%29%20show%20%22access%20denied%22\"><h3>Some sites (LinkedIn, sites behind bot protection) show \"Access denied\"<\/h3><\/dt>\n<dd><p>Some sites refuse automated requests even though the page works in a browser. Open the link to confirm and, if it works, click <strong>Ignore<\/strong>.<\/p><\/dd>\n<dt id=\"can%20i%20check%20links%20on%20my%20intranet%20or%20on%20localhost%3F\"><h3>Can I check links on my intranet or on localhost?<\/h3><\/dt>\n<dd><p>By default, private and local network addresses are not requested (a safety measure, since comment links could point anywhere). Developers can allow them with the <code>quiet_link_checker_allow_unsafe_urls<\/code> filter.<\/p><\/dd>\n<dt id=\"is%20it%20compatible%20with%20multisite%3F\"><h3>Is it compatible with multisite?<\/h3><\/dt>\n<dd><p>Yes. Each site has its own tables and settings, and uninstalling removes the data of every site.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20uninstall%20it%3F\"><h3>What happens when I uninstall it?<\/h3><\/dt>\n<dd><p>Its tables, options and scheduled events are removed. Deactivating only stops the background work and keeps your results.<\/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":"Lightweight broken link checker that runs 100% on your own server. No account, no cloud, no tracking, and it won't slow your site down.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/393087","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=393087"}],"author":[{"embeddable":true,"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/andres0547"}],"wp:attachment":[{"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=393087"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=393087"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=393087"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=393087"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=393087"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=393087"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}