Links are now found outside post content – in custom fields (including ACF), navigation menus, category and tag descriptions, author bios and websites, post excerpts, and the block content the editor stores outside your posts such as synced patterns, templates, template parts and navigation blocks.
Page builder support – links inside Elementor, Divi (4 and 5), WPBakery Page Builder, SiteOrigin Page Builder, Avada Builder and SeedProd layouts are now found and reported, including the pictures a block or a section background points at.
Broken link reports by email – a weekly email listing the links that broke since the last report, and a monthly scorecard of your site's link health, sent to the recipients you choose.
The report is now organised around where each link was found, with every location for a link listed and paginated inline, and a filter to narrow the report to one source – offering only the sources that actually hold links.
Filter the report by internal or external links, and by images, videos or non-media links.
Export the report to CSV, matching the filters and search you have on screen.
Exclude URLs by wildcard, by host, or by regular expression, in a single exclusion list.
Added a scan frequency setting to control how often links are rechecked.
Added per-source scanning settings, so you choose which places are monitored – navigation menus, custom fields, term descriptions, author bios and websites, synced patterns and templates.
When a broken link redirects, the report offers the end of the redirect chain as the replacement.
Audio files, and the images that core blocks keep in a block attribute, are now reported.
Added Site Health checks that report when link monitoring has stopped, and an admin bar warning when the account is not connected.
A dashboard – it opens on what to do next rather than on a list of everything that is wrong. Its main panel ranks the fewest fixes that clear the most broken links: one dead address used in many places, a whole host that has gone, a page carrying several at once, broken images and videos. Alongside it, why your links are failing, the domains costing you the most, how long each has been broken, and where on your site they live. Every figure opens the report already narrowed to it.
The Broken Links Highlighter can be switched on and off from the toolbar while you are looking at a page, and each person can turn it off for themselves without changing it for anyone else.
Multisite support – the network admin has its own Site Activations screen, where you connect the network's license once and then activate or deactivate the individual sites on the network from a single list.
Registered the plugin's abilities with the WordPress Abilities API.
A destination whose SSL certificate has expired, or does not match, is now reported as broken. These answer a link check normally, so the report used to call them working links while a browser stops your visitors with a warning screen.
Videos embedded as an iframe – pasted in as HTML, or written by a page builder – are now checked, so a video that was taken down no longer leaves a dead player on the page with nothing said about it.
The CSV export has a Reason column, so a row reading “Broken” beside a working status code explains itself in a spreadsheet.
The dashboard says how many links are still waiting for a verdict, next to the counts they are missing from, and the monthly email names what they are waiting for rather than giving one reason for all of them.
Updated
The highlighter now explains a broken link where you find it. Hovering a marked link shows what it points at, why the check failed, and a note that only logged-in editors can see the marks – along with where to turn them off. The panel stays open while you move the pointer onto it. The highlighter is also enabled by default for new users.
The report shows how long each link has been broken and can be sorted by it, so the breakage that has been live longest is easy to find.
The Broken Link Checker widget on your WordPress dashboard now shows the single most useful thing to fix, rather than a chart of your link totals.
AIOSEO's Details column now marks broken links with a broken chain icon and links the count straight to the rows behind it, for any post title.
AIOSEO's 404 log now shows how many of your posts link to each 404'd URL.
Rewrote the email template so it renders correctly in Outlook, Gmail, and clients that invert colours.
The broken links report is substantially faster – counts are cached, rows no longer cost a query each, and paging no longer recounts the whole table.
Every source is now indexed regardless of the settings, so switching a source on shows its links immediately instead of waiting for a full rescan. Switching one off no longer deletes anything.
A synced pattern, template or navigation block is reindexed as soon as it is saved, so a link you fix there leaves the report right away.
A synced pattern is only editable from the report by someone who can edit that particular pattern, since a pattern belongs to whoever created it.
Removing a URL exclusion now restores the links it had removed from every source, not just from posts.
An action a source cannot perform now explains why on hover instead of quietly disappearing.
An image's alternative text is not something the report can rewrite, and it now says so instead of appearing to save the change.
Replaced the link status details modal with an inline panel that states exactly what a change will affect.
Elementor pages no longer report the same link twice, a page built with a builder is reported as a page, and a builder that is no longer active stops being reported.
The report can now be sorted by when each link was last checked.
Reorganised the settings – the link settings have their own section, the Advanced Settings master switch is gone, and scan sources use the same post type toggles as the rest of the plugin.
Your link quota is now explained where it is shown, and turns red as it approaches the limit.
Improved the account connection and activation prompts, and added a newsroom panel for plugin news.
The report now says why a check failed rather than only that it did. A destination that blocked the check, one that did not respond in time, one that could not be reached at all, one whose address cannot exist, and a page that is there and asks to be signed in to each read differently, instead of all of them showing the same error. The last of those is the one worth calling out: a link wanting a login used to be reported as an error, which sent you looking for a fault in an address that is fine.
No Broken Link Checker JavaScript is loaded on admin screens that do not need it. A small script used to run on every page in the dashboard to style one menu item, which is now done in CSS.
The highlighter now marks broken images, frames and embedded players. They have no text to underline, so they take a dashed outline drawn inside their own box, and a player is outlined when one of the sources behind it is broken.
A link whose address holds a character no browser accepts is now marked by the highlighter in Firefox and Safari as well as Chrome, and is reported rather than quietly dropped from the scan.
The scan no longer waits out its idle timer when links fall due inside it, so a post you save, an import, or a plugin update is picked up straight away instead of up to an hour later.
Fixed
Dismissed links were counted and listed under the Pending filter, so the filter counts did not add up to the total.
A link could be counted and listed under two filter tabs at once, so the tabs added up to more than the total. A link that had ended up with two check records behind it is now repaired, and the scan no longer creates them.
A link edit that changed nothing reported success, closing the panel over content that still carried the old URL.
Searching the report treated an underscore or a percent sign in a URL as a wildcard, so a search could match links that did not contain it.
Relative link URLs are now kept relative when they are sanitised.
On some sites a script error broke the post editor, and the plugin was not the obvious cause because the error named an AIOSEO object. The script no longer depends on data a page may not have printed.
A recheck the service refused – an unverified license, or a month of link checks already used – advised trying again, which could never work. It now says what actually happened.
Two links whose addresses differ only in capitalisation were treated as one. The filter tabs added up to more than the total, and one of the pair was counted but never listed, exported, or fixable from the report.
The email report counted a link that redirected and then broke as both broken and a redirect, where the report on screen counts it as broken only.
Editing a link did nothing for an address the scan had tidied up on the way in – surrounding spaces, a backslash in place of a slash, a default port, a dot segment, a non-English path – which is the shape a broken link is most likely to have been written in.
Editing a link could not rewrite the address on an iframe, video or audio tag, and it dropped the part after the # from a link that had one, so two links pointing at different places on the same page were both sent to the same place.
Editing a link whose anchor text begins inside the surrounding HTML could damage the markup around it.
A post dated in the future – a scheduled post, or content an importer forward-dated – was re-read on every scan and never settled, so the scan never got as far as your menus, custom fields, term descriptions, author profiles, patterns and templates.
The second-opinion recheck kept picking the same few links every run, so the rest of the queue was never reached and a dead host never settled.
A link our service could not fetch was never rechecked from your own site, so it never resolved, was counted against your credits on every scan, and could settle as a working link.
A link that failed every recheck kept the status code the service had last seen, so a row could read “the destination returned a 200 error”.
Searching the report for something that matches nothing listed every link instead of none.
The Activate button was live with the license key field empty, and pressing it answered “an unknown error occurred” rather than asking for a key.
Addresses that 1.3.0 stored in a mangled form – two links glued into one, a host with the path run into it – are re-read when you upgrade instead of staying in the report as broken.
An excluded post recorded by anything other than the settings screen could stop the scan with a fatal error.
Version 1.3.0
New
Video support – Broken Link Checker now auto-detects video links and checks whether the linked video still exists, instead of just making sure that the link works. YouTube, Vimeo and 10+ platforms supported!
Broken links are now scanned a second time client-side to reduce false-negatives due to WAF blocks or timeouts.
Updated
Added support for HTML API for WP 6.6 and above to make link updates/removals more reliable.
Added a license recheck action link to settings to refresh subscription data (useful in case of connection issues/subscription upgrades) + an indicator for the amount of sites that are active under the subscription.
Added a mechanism to prevent duplicate actions from being scheduled.
Link Assistant and Broken Link Checker now clean up database rows for trashed, private, or deleted posts so tables don't accumulate invisible bloat over time.
Hardened options against unintended frontend exposure.
Fixed
Setup Wizard sometimes not triggering due to missing cache table.
Relative URLs are now resolved against the post permalink before storing them to the DB.
Malformed URLs sent to Broken Link Checker server in rare cases.
Scan sometimes getting stuck due to duplicate rows in the DB.
Version 1.2.10
Fixed
PHP error when connecting BLC when AIOSEO is not active.
Version 1.2.9
Updated
Links that have never been checked before are now prioritized better.
Improved scheduled action scheduling to prevent duplicate actions.
Improved request handling with concurrency guards and caching to reduce outbound request volume.
Added transient fallback mechanism for caching in case aioseo_cache table doesn't exist.
Various performance improvements.
Fixed
Subsite database table cache no longer includes tables of all other subsites for multisites.
Rare issue where some links wouldn't be indexed due to special characters like new lines.
Version 1.2.8
Updated
Changed wording to reflect that free subscriptions never expire, but that their quota resets each month.
Version 1.2.7
New
Users using AIOSEO, Broken Link Checker and Link Assistant now see their broken links count in the AIOSEO Details post column.
Updated
Compatibility with WordPress 6.9.
Cache class now uses JSON instead of PHP serialization to prevent cache misses when charsets don't match.
Various database performance improvements.
Hardened database queries against SQL attacks.
Fixed
“Good” filter now no longer shows URLs that still need to be scanned for the first time.
Version 1.2.6
New
Added Link Distribution dashboard widget to the WordPress admin dashboard.
Added reminder emails to inform users when Broken Link Checker is not connected.
Updated
All BLC plans, including free, now support external links.
The free BLC plan now includes 50 more links for free, for a total of 250.
Added warning messages when indexed link count is larger than plan link quota or link quota is (almost) depleted.
Added hook to filter URLs when they are indexed to add compatibility with WP Offload Media.
Hardened REST API routes and added permission checks to improve security.
Fixed
Link scan sometimes getting stuck if AIOSEO is not installed due to missing function.
Version 1.2.4
Updated
Hardening for ORDER BY/LIMIT clauses in database queries.
Version 1.2.3
Updated
Updated: Added support for updating/removing relative URLs.
Version 1.2.2
New
Added support for indexing and checking media URLs.
Updated
Improved link removal process to increase rate of success.
Fixed
Link Status row now closes after performing a table action to ensure no data leaks through to the next row.
Cookie Consent
We use cookies to improve your experience on our site. By using our site, you consent to cookies.
Websites store cookies to enhance functionality and personalise your experience. You can manage your preferences, but blocking some cookies may impact site performance and services.
Essential cookies enable basic functions and are necessary for the proper function of the website.
Name
Description
Duration
Cookie Preferences
This cookie is used to store the user's cookie consent preferences.
30 days
These cookies are needed for adding comments on this website.
Name
Description
Duration
comment_author
Used to track the user across multiple sessions.
Session
comment_author_email
Used to track the user across multiple sessions.
Session
comment_author_url
Used to track the user across multiple sessions.
Session
These cookies are used for managing login functionality on this website.
Name
Description
Duration
wordpress_logged_in
Used to store logged-in users.
Persistent
wordpress_sec
Used to track the user across multiple sessions.
15 days
wordpress_test_cookie
Used to determine if cookies are enabled.
Session
WPForms is a user-friendly WordPress plugin for creating custom forms with drag-and-drop functionality.
Name
Description
Duration
wpfuuid
Used to track user interactions with forms.
11 years
Statistics cookies collect information anonymously. This information helps us understand how visitors use our website.
Google Analytics is a powerful tool that tracks and analyzes website traffic for informed marketing decisions.
Broken Link Checker 1.3.1 expands what it scans beyond posts and pages, catching broken links in corners of your site you’d never think to look. Here’s what’s new:
Navigation menus: every link in your header, footer, and custom menus gets scanned
Custom fields and author bios: 2 places broken links used to hide completely
Page builder support: Elementor, Divi, SiteOrigin, Avada, and WPBakery content is now checked automaticall
Oh, and synced patterns and templates? Those are covered, too.
Broken Link Checker’s new dashboard organizes your broken links by priority, worst domains, and distribution across your site, so you know where to start.
Fix-first priority view: see which broken links to tackle first instead of working through an unsorted list
Worst domains: spot the external sites with the most broken links pointing at your content
Broken link distribution: see how broken links are spread across your site
The new dashboard is available on every BLC plan, including Lite.
Broken Link Checker now emails you within a week if a link on your site breaks, plus sends a full monthly summary of all links analyzed, so you don’t have to log in and check manually.
What’s included:
Weekly alert: hear about a new broken link within about a week of it breaking, no checking required
Monthly summary: a full report of every link checked that month, sent either way, broken or not
Independent from scan frequency: your scan schedule and your email reports run on separate tracks
Multiple recipients: send reports to your own address, teammates, or clients right from settings
AIOSEO 5.0.1 brings TruSEO Analysis to taxonomy term pages, so your categories, tags, and custom taxonomies can get the same SEO score and checklist your posts and pages already get.
What’s included:
Full TruSEO scoring: get a live score and full keyword checklist, including checks unique to terms, right on any term edit screen
On by default for WooCommerce product categories: your highest-value taxonomy pages are covered right away
Turn it on for more taxonomies: enable regular categories, tags, or custom taxonomies under All in One SEO » General Settings » Content Optimization