Broken Link Notifier
Basic Set Up (Optional)
The plugin works out of the box just by installing it and visiting pages with broken links on them; however, you might notice a lot of links being flagged as broken that are not actually broken. Therefore, there are some things you can do to manage this from the get-go. Let’s start with updating your settings first.
In the admin area of your site, navigate to Broken Links > Settings.
- Disable notifications: By default, you will be emailed notifications every time someone visits a page with newly found broken links on it. Once a broken link is found, it will be added to your Results page and you won’t be notified again of the same broken links unless they are removed from your results before resolving them. It is recommended to disable notifications until you get everything set up, though, as getting bombarded with emails isn’t exactly fun.
- Prepare for a one-time Site Scan: Enable “Also Fetch Pages Remotely During Page Scan, Site Scan & Link Browser”
- Enable Scanning for Post Types: Keep Posts and Pages checked, and select any additional post types that are on your front-end that are used like posts or pages. Some post types are used for other data collecting only and should not be selected.
- Save the settings with Ctrl + S or clicking on “Save” at the top of the page.
Navigate to Broken Links > Omitted Pages.
- Omit pages that don’t need to be scanned, such as custom login pages, 404 pages, or archive pages that are automatically generated. you can add notes to remind you why you omitted them if that’s important to you.
- To omit all pages under a certain directory, you can use a wildcard like this:
/category/*and/tag/*– by adding an asterisk at the end.
Navigate to Broken Links > Site Scan. We will begin by looking at all of your pages and posts so we can catch things before your visitors do. This may take awhile depending on how big your site is.
- Click on “Discover Links” to fetch all links on your site. Wait for it to complete.
- Click on “Check for Broken Links” to test all links. Wait for it to complete.
- If it found broken links or warnings, click on “View Results” or navigate to Broken Links > Results.
Refer to the Results section of this help guide to learn how to handle broken links and warnings.
Once you’ve gone through all your links and omitted links and pages, you can go back to Settings and enable notifications. That way you get notified about any new findings in the future.
Settings
In the admin area of your site, navigate to Broken Links > Settings.
Settings are organized into sections below. Hover over the icon next to any setting’s label for a description of what it does. Click “Save” in the top-left of the page (or press Ctrl+S / Cmd+S) to save your changes — a reminder will appear if you have unsaved changes so you don’t lose them.
Scanning Behavior
- Pause Front-End Scanning: Pauses scanning when visitors load a page, if you’d rather scan manually using Page Scan, Site Scan, or Multi-Scan.
- Also Fetch Pages Remotely During Page Scan, Site Scan & Link Browser: In addition to reading a page’s stored content, also fetches its live published URL and scans that HTML for links. Catches links rendered by shortcodes or templates that depend on live page context (common with listing/directory themes), at the cost of a slower scan since it makes a real web request per page.
- Max Links Per Page: The maximum number of links checked per page (0 for unlimited), to help prevent timeouts or abuse on pages with an unusually large number of links.
- Enable Warnings: Includes warning-level results (not just broken) in your scans and Results page.
- Show Good Links in Results: Includes good (working) links on your Results page, purely so you can verify the plugin is finding and checking links correctly. More performance-heavy — click “Verify Link Statuses” to check and clear them once you’re done reviewing.
- Enable Delete Source Action Link: Adds a “Trash Page” action link under a result’s Source, letting you trash the page directly from Results.
- Check for Broken Images: Includes image
srclinks in scans. - Warn if SSL is Not Verified: Flags insecure/unverified SSL connections. Disable if this isn’t a concern for you.
- Scan
<header>Elements: Only applies to page-load scans — includes links inside your site’s header (usually navigation menus). - Scan
<footer>Elements: Only applies to page-load scans — includes links inside your site’s footer. - Enable Scanning for These Post Types: Controls which post types are included in Site Scan’s discovery, front-end page-load scanning, and (if enabled) Multi-Scan.
Advanced
- User Agent: The user agent string sent when checking links. Only change this if you know what you’re doing.
- Timeout (seconds): How long to wait for a link’s server to respond before giving up.
- Max Redirects: The maximum number of redirects to follow before giving up on a link (only used if Allow Redirects, below, is enabled).
- Delay Between Scan Requests (ms): Adds a pause between each request during Link Browser and Site Scan. Use this if scanning is putting too much load on your server; 0 disables the delay.
- Allow Redirects: Switches link-checking from
HEADtoGETrequests. May help with links to larger documents, but can cause other issues. - Force Documents to Use
HEADRequests: If Allow Redirects is on, images/videos/audio normally still forceHEADrequests. Some servers blockHEADrequests entirely — enabling this can help you diagnose whether that’s happening on large documents that fail to scan. - Show Results in Dev Console: Only applies to page-load scans. Shows scan results in your browser’s developer console — visible to anyone viewing the console, not just admins, so it’s best left off unless you’re troubleshooting or support has asked you to enable it.
- Length of Time to Cache Good Links (in Seconds): How long a link’s “good” result is cached before it’s checked again. Use 0 to disable caching. Broken and warning results are never cached.
- Cache: Shows how many links are currently cached, with a “Clear Cache” button to wipe the cache immediately — useful if you’ve just changed a setting that affects how links are checked (like Status Codes) and want fresh results right away, rather than waiting for the cache to expire on its own.
- Remove Data on Uninstall: Automatically removes the plugin’s database tables and settings when it’s uninstalled.
- Backup & Reset: Download your current settings as a file, upload a previously downloaded file to restore them, or reset everything back to its defaults. None of these save automatically — you’ll still need to click “Save” afterward to apply the changes.
Notification Methods
- Enable Emailing / Emails to Send Notifications: Turns email notifications on or off, and sets who receives them (comma-separated). A “Send Test” button lets you confirm it’s working.
- Enable Discord Notifications / Discord Webhook URL: Sends notifications to a Discord channel. Click “How to Connect to Discord” for step-by-step setup instructions, and use “Send Test” to confirm it’s working.
- Enable Slack Notifications / Slack Webhook URL: Same as above, for Slack.
- Enable Microsoft Teams Notifications / Microsoft Teams Webhook URL: Same as above, for Microsoft Teams.
Access Control
- Enable REST API / API Key: Exposes a read/delete REST API endpoint for use with AI agents and external tools. Generate, copy, or clear your API key here.
- Allow These Additional Roles to Manage Broken Links: Grants non-administrator roles access to this plugin’s admin pages.
Status Codes
- Status Codes: Shows a quick summary of which status codes are currently treated as Broken or Warning. Click “View/Change Status Types” to see every status code individually and change whether each is treated as Good, Warning, or Broken.
Results
This is where all of your flagged links can be found. Navigate to Broken Links > Results.
You might notice that there are some links that showed up here that are not actually broken. This can be due to many reasons, with a common one being websites taking too long to load and respond. You can get in the habit of clicking the “Verify Link Statuses” button in the top-right of the page. This re-checks every link currently shown on the page as-is; it does not check whether the link is still present on its source page. You’ll notice some links resolve themselves and get automatically removed in the process, so you can safely ignore those.
Unlike earlier versions of this plugin (< 2.0), links are no longer automatically re-verified when you load the page — you’ll need to click “Verify Link Statuses” yourself. This gives you control over when the re-checking happens instead of it running in the background every time you visit.
Look for repeated links that all start with the same thing but are coming up flagged. For example, maybe you have links on your event pages for an Add to Calendar button that uses JavaScript to create an .ics file for download. It might start with https://www.google.com/calendar/render, and end with a string of data that is different every time. You can omit these types of links by going to Broken Links > Omitted Links and adding the link followed by an asterisk (ie. https://www.google.com/calendar/render*).
At the top of the content, you’ll see a row of counts you can click to filter the table: All, Broken, Broken – Internal, Broken – External, and if warnings are enabled in Settings, Warnings, Warnings – Internal, and Warnings – External. Clicking any of these filters the table to just that group, and the “Export to CSV” button will export whatever is currently filtered.
Above and below the table, you’ll find:
- Bulk Actions: Select links using the checkboxes, then choose an action — Clear Results (removes the selected results without omitting anything), Omit Links (adds the selected links to Omitted Links), or Omit Sources (adds the pages they were found on to Omitted Pages) — and click Apply.
- Per Page: Choose how many results to show at once.
- Pagination: Navigate between pages of results, or type a page number directly.
Columns:
- Type: Shows “Broken” or “Warning,” along with the status code and status message. “Good” links only appear here if you’ve enabled it settings.
- Link: The flagged link itself. Hovering over it gives you options to Clear the result, Omit it from future scans, or Replace it directly from this page. Replacing a link automatically marks the result as good and clears it from your results, so it won’t show up again.
- Source: The page the link was found on. Hovering over it gives you options to View the page, Omit Source (excludes the page entirely from future scans), Scan Page (runs a single Page Scan on it), and Edit (to fix it directly). It’s often easiest to View the page to spot the link, then Edit to fix it. If you’ve enabled “Enable Delete Source Action Link” in Settings, a Trash Page link appears here too.
- Source Post Type: The post type the source page belongs to — Page, Post, or another custom post type.
- Date: The date and time the link was first discovered, along with how many days it’s been showing as broken.
- Verify: Shows “Pending” until you click “Verify Link Statuses” above the table, at which point each visible link is re-checked one at a time and this column updates with the result. It will only verify links on the page you are on; if you have results on multiple pages, you will need to click over to the next page to continue. To minimize paginating, you can change the per page count.
Omitted Links
Navigate to Broken Links > Omitted Links.
Here you can omit links from all future scans. By omitting them, they will not be checked for validity and you will not be notified if it is broken. This is useful if you have links that you are giving you problems but you know are valid.
You can omit full links or partial links with wildcards. For instance, if you want to omit all links from a certain domain, you can include the domain followed by an asterisk: https://example.com/*.
When adding an omitted link, you can add an optional note for your own records. That way you and your teammates know why it was omitted down the road.
Omitted Pages
Navigate to Broken Links > Omitted Pages.
Here you can omit entire pages from all future scans. By omitting them, none of the links on the page will be checked for validity and you will not be notified if they are broken. This is useful if you have pages that don’t have links or if they have dynamic content. There is no purpose in scanning them, so you might as well save the resources. Also, you’ll need to omit any pages that redirect elsewhere, as they can cause issues with scanning — though the plugin will automatically detect and omit most redirecting pages for you during Site Scan or Link Browser, noting why in the page’s description.
Rather than typing or pasting a page’s URL from memory, use the Quick Add dropdowns above the URL field: choose a post type, then choose the specific page from the second dropdown, and the URL field will fill in automatically. You can still edit the URL afterward — for example, to turn it into a wildcard.
You can omit full page paths or partial paths with wildcards. For instance, if you want to omit all pages that are children of a specific parent page, you can include the parent page followed by an asterisk: https://yoursite.com/parent-page/*.
When adding an omitted page, you can add an optional note for your own records. That way you and your teammates know why it was omitted down the road.
Pitfall: the Quick Add dropdown only lists post types currently enabled under “Enable Scanning for These Post Types” in Settings — if a post type you want to omit a page from isn’t showing up in the dropdown, that’s why.
Page Scan
Navigate to Broken Links > Page Scan.
This allows you to check all of the links on a specific page from your site. It will not check links on an external website. It is useful to verify if links are actually being found or if they are reported as “Good” when they are not reported to your Results as a warning or broken. Links that are dynamic or hidden behind conditional logic may not get scanned, unless you’ve enabled “Also Fetch Pages Remotely During Page Scan, Site Scan & Link Browser” in Settings — see the note below.
There are two ways to choose a page to scan:
- Browse for a Page: Choose a post type, then choose the specific page from the second dropdown.
- Enter a URL, Post ID, or Title: Type any of these directly, and suggestions will appear as you type a title.
Click “Scan Now” next to whichever option you used. You can also get here from the Results page under the Source column.
At the top of the results, you’ll see a note explaining what was scanned:
- If “Also Fetch Pages Remotely” is off (the default), the note reminds you that links inside the
<header>or<footer>aren’t included, and that content hidden behind conditional logic won’t be found, since the page’s stored content is read directly rather than the page as rendered. - If that setting is on, the note instead confirms that links were also fetched from the live published page — this typically catches more, including header/footer links and content generated by shortcodes or templates that depend on live page context (common with listing/directory-style themes), at the cost of a slightly slower scan.
- View (button in the top-right of the table): Takes you to the page you scanned. Any broken links not inside hidden elements will attempt to glow yellow with a red dashed border so they’re easy to spot.
- Edit (button in the top-right of the table): Takes you to the edit screen for the page so you can resolve any issues.
- Link: The link found.
- Title: If it’s a link to another page on your website, this shows that page’s title.
- Status: “Good,” “Warning,” or “Broken.”
- Code: The status code returned by the link’s server when a request is made.
- Message: A brief description of what the code means.
- Speed: How long it took to check the link — useful for spotting a link that’s timing out.
- Actions: “Omit” omits the link from all future scans (not just this page). “Find” opens the page on the front end so you can see where the link is; if it’s not inside a hidden element, it’ll attempt to glow yellow with a red dashed border so it’s easy to spot.
Multi-Scan
Navigate to Broken Links > Multi-Scan.
This tool is disabled by default as of version 2.0, replaced by Site Scan (see the next section below), which discovers and checks every link on your site directly rather than requiring you to work through each post type’s list table one at a time. Multi-Scan is kept available for backward compatibility, but won’t appear in your navigation unless it’s been re-enabled.
Developers can re-enable it by using the blnotifier_enable_legacy_multiscan hook (see developer docs).
Everything below describes how Multi-Scan works for anyone still using it.
Our Multi-Scan is different than most plugins. It doesn’t just scan the whole website and give you results like you would expect. The reason we don’t do that is because most hosts do not allow for such a big load all at once. It causes a slew of issues and often times out. Generally speaking, doing a full scan like that is better to be done off-site. Here are a few links to consider:
The way we do it is by loading your WP List Tables for individual post types, checking one set of pages at a time. We also ignore the header and footer during the process since it’s unlikely to be an issue. The scan runs on AJAX in the background, too, so you can see the results as they happen.
To begin, choose one of the post types that has at least one post or page from the buttons. This will go to your published posts or pages, not all of them. If you have any Private pages, you might want to click on the Private link at the top of the page and scan those as well. You can also navigate to your post types without going to the Multi-Scan page first, and click on the “Scan for Broken Links” button at the top of the page. This button will only appear on the post types you have selected in your Settings.
To stop scanning, click on the “Stop Scanning” button at the top.
During the scan you can see a new column called “Broken Links” that starts scanning each page that is not omitted.
- If it is omitted, it will say so.
- If there is no content, it will say so.
- If there are links, it will show that it is scanning and how many links in the process. It will also show…
- the total number of links found,
- how many are broken,
- how many warnings there are,
- how many errors that occurred if any, and
- how long it took to scan.
- If any broken links, warning links, or errors are found, they will be listed individually under the scanning results. It will include…
- the link
- the type (Good, Warning, or Broken)
- the status code and message
- action links: Omit” allows you to omit the link from all future scans (not just on the multi-scan). “Find On Page” allows you to view the page on the front-end of your site so you can see where the broken link is. If it’s not inside a hidden element, the link will glow yellow with a red dashed line around it so it’s easy to spot.
If you hover over the post/page title, you will see two action links:
- Scan for Broken Links: Takes you to the Page Scan and starts scanning that page.
- Omit from Scans: Skips scanning this page in all future scans (not just on the multi-scan).
If you have more pages that are on the screen, click on the “>” button at the top or bottom right of the table to scan the next set of pages. If you want to scan more pages at once, you can change the number of items per page in the Screen Options at the top right of the screen.
Site Scan
Navigate to Broken Links > Site Scan.
Site Scan is the recommended way to check your entire site for broken links, replacing the old Multi-Scan approach. It works in two steps: first it discovers every link on your site, then it checks each one and reports what it finds — all directly on this page, with live progress, no need to work through your post types one at a time.
Site Scan shares its discovery data with Link Browser, so if you’ve already run one, the other already has it too — you don’t need to start over.
Step 1: Discover Links
Click “Discover Links” to crawl every post, page, and enabled post type on your site, along with your site’s registered navigation menus (header, footer, and any others), collecting every link found. This can take a little while on larger sites — you’ll see a progress count while it runs, and a note reminding you to stay on the page until it finishes.
Pages that redirect to somewhere else are automatically detected during this step and omitted from future scans, with a note added to Omitted Pages explaining why. This prevents redirecting pages from repeatedly causing scan issues without you having to track them down yourself.
Once discovery finishes, you’ll see a summary — total links found, how many are internal, and how many are external — along with a “View Links” button that takes you to Link Browser to look through them individually. If you’ve run discovery before, this page will show when it was last run and by whom, along with a “Rescan for New Links” button instead.
Step 2: Check for Broken Links
Once links have been discovered, click “Check for Broken Links” to test every one of them and report what’s broken or showing a warning. A progress bar tracks the check as it runs.
When it finishes, you’ll see a summary of how many links were checked, how many were found broken, and how many showed warnings, along with a “View Results” button that takes you straight to your Results page to review and resolve them. Refer to the Results section of this guide for how to work through what’s found there.
A note on remote fetching: if you’ve enabled “Also Fetch Pages Remotely During Page Scan, Site Scan & Link Browser” in Settings, Site Scan will also make a live request to each page’s actual published URL during discovery, in addition to reading its stored content. This catches links rendered by shortcodes or templates that depend on live page context — common with listing or directory-style themes — at the cost of a slower scan, since it now makes a real web request per page in addition to reading the database.
Link Browser
Navigate to Broken Links > Link Browser.
This scans every page on your site at once and builds a master list of every link found, so you can review your entire site’s links in one place instead of checking pages one at a time. Unlike Page Scan, it doesn’t check whether each link is broken by default — it’s a directory of what links exist and where, which you can then check individually as needed. Pages that are omitted (under Omitted Pages) are skipped.
Link Browser shares its discovery data with Site Scan, so if you’ve already run one, the other already has it too — you don’t need to start over.
Click “Discover Links” (in the top-left) to build or refresh the list. This can take a little while on larger sites since it scans one page at a time in the background — you can watch the progress counter while it runs. Once finished, a checkmark and summary appear where the counter was, showing how many links were found.
Pages that appear to redirect elsewhere are automatically detected during scanning and omitted from future scans, with a note added to Omitted Pages explaining why — this prevents redirecting pages from repeatedly causing issues without you having to track them down yourself.
- All / Internal / External (clickable counts above the table): Click any of these to filter the table to that group; the count in parentheses updates as you scan or filter.
- Kind dropdown: Narrow the table to Links, Images, or Files, based on the link’s file extension.
- Search field: Filter the table by typing part of a link — results update as you type.
- Per page dropdown: Controls how many rows show at once.
- Link: The link that was found.
- # of Pages: How many of your pages that link appears on.
- Pages Found On: The title(s) of the page(s) it was found on, linked to their edit screens. If it’s on more than two pages, click “View other pages” to expand the rest.
- Type: Whether the link is Internal or External, and whether it’s a Link, Image, or File.
- Actions: “Show Me” opens the first page the link was found on with the link highlighted, the same way it works from Link Search (or the menu editor, for a menu-only link). “Check Status” checks the link right there in the table and shows its status, code, and message underneath it without leaving the page. “Omit Link” removes the link from all future scans.
In the top-right, “Go to Site Scan” takes you to Site Scan if you’d rather move on to checking your links for broken ones, and “Export to CSV” downloads whatever is currently filtered on the page.
