Universal Broken Link Batch Checker
Free to download on every platform. Comes pre-installed on BotFone, BotPad and BotFlip — with extra free apps included.
About this app
WHAT IT DOES
This script scans the current page for every link—anchor tags (a[href]) and link elements (link[href])—then checks each URL for validity using HEAD requests to detect broken links (404, 500, timeout, etc.). It displays a floating panel showing a summary of link statuses: working (green), broken (red), redirecting (yellow), and unknown (gray). Each link is listed with its text, URL, status code, and color-coded status badge. Broken links are highlighted directly on the page with a red outline and a tooltip showing the URL and status code. Users can filter by status, copy the list of broken links, and export all results as CSV. Link check snapshots are stored per domain locally, enabling historical tracking of link health over time.
WHERE IT RUNS
Works on any webpage—personal sites, blogs, documentation, e-commerce, or complex web applications. The script scans all links using DOM traversal and checks them with HEAD requests, making it compatible with any site regardless of framework.
HOW TO USE
The panel appears automatically when you visit a page and begins checking links. A progress bar shows the check status as links are validated. The summary shows total, working, broken, redirect, and unknown counts. Click "Check Links" to manually rescan or recheck links after dynamic content loads. Use the filter dropdown to show only Working, Broken, Redirect, or Unknown links. Click "Copy Broken Links" to copy all broken URLS with status codes to your clipboard. Export the full results as CSV with URL, status, status code, and link text. The "Clear History" button removes stored snapshots for the current domain. Broken links are highlighted on the page with a red outline and hover tooltip showing the URL and status code. The panel automatically saves a snapshot each time you check links, building a history of link health.
TECHNICAL MECHANISM: DOM LINK EXTRACTION WITH HEAD REQUEST VALIDATION AND CACHING
The script uses DOM traversal to find all a[href] and link[href] elements, excluding mailto:, tel:, javascript:, and anchor-only (#) links. Relative URLs are resolved to absolute URLs using the URL constructor with the current page as the base. Each link's text content, title, or aria-label is captured for display. For validation, the script uses GM_xmlhttpRequest with method HEAD and followRedirect: false, allowing it to capture the status code of the final destination without loading full page content. HEAD requests are used because they are lightweight and return status codes without downloading response bodies. Status codes are classified: 200-299 as working, 300-399 as redirect, 400-599 as broken, and any other response or timeout as unknown. Results are cached using the URL as the key, with the cache limited to 500 entries to prevent storage bloat. The cache persists across page loads via GM_setValue, avoiding repeated checks for the same URLs on subsequent visits. Link checks run with concurrency of 6 requests at a time to balance speed and server load. Broken links are highlighted by adding a red outline (outline: 2px solid #ef4444) to the element and a tooltip with the URL and status code. Each snapshot stores the full result set with timestamps, capped at 30 entries per domain.
THE PANEL
The broken link checker appears in a draggable, resizable panel that remembers its position per site. The panel shows a summary grid with status counts, a progress bar during checks, and a detailed link list with color-coded status badges. Drag by the header to reposition, collapse to a compact icon with a click, and resize using the bottom-right corner. The panel snaps to screen edges for tidy placement and closes with the Escape key. All settings—filter preference and panel position—persist per website using GM_setValue, so your view returns exactly as you left it.
PLEASE NOTE
This script requires the free BotGentz extension to run. The script sends HEAD requests to every link on the page, which may be rate-limited by some servers—use responsibly on large pages. The cache stores link statuses locally; clearing the cache forces fresh checks. The highlight feature adds a red outline to broken link elements; this may interfere with the page's existing styles but helps you visually locate broken links. The script does not follow redirects fully (followRedirect: false) so it reports the status code of the first response; this helps detect redirect chains but may report a 302 as a redirect rather than the final destination. All data is stored locally in your browser via GM_setValue and never transmitted.