Developer tool

LinkScan.

Find broken links and the pages that contain them.

A website crawler and link checker with a CLI, a local web UI, and exportable reports. Trace each failed link back to its source pages.

  • Go
  • CLI
  • Local web UI
MIT license

The problem it solves

A failed link is easier to fix when you know where it appears

Links drift as a website grows. Finding a failed URL is only part of the work. You also need to locate the pages that reference it and distinguish missing content from timeouts or blocked requests.

LinkScan crawls from a starting URL, checks discovered links, and records their source pages. Its reports make those relationships available in the terminal, in a local browser interface, or as files.

What it does

  • Controlled crawling

    Set crawl depth, worker counts, request timeouts, and a per-host rate limit. Restrict checks to internal links when needed.

  • Useful failure categories

    Separate client errors, server errors, timeouts, and invalid URLs instead of treating every unsuccessful check as the same problem.

  • Source-page tracking

    Keep the pages that reference each checked link so a report points to the places that need attention.

  • CLI, browser, and file reports

    Scan from the terminal or a local web UI. Export HTML, CSV, JSON, and reports grouped by source page.

Try it locally

Get started

Download and extract the archive for your operating system and processor from GitHub Releases. Run the following commands from the directory containing the extracted binary.

Download a release
  1. Scan a site

    Replace https://example.com with the website you want to check. This example limits requests and saves a JSON result.

    bash
    ./linkscan scan https://example.com --rate-limit 2 --out result.json
  2. Generate reports

    Create the default HTML, CSV, and JSON reports from the saved result.

    bash
    ./linkscan report --input result.json --out ./reports
  3. Use the local web UI

    Alternatively, start the browser interface and open http://localhost:8080.

    bash
    ./linkscan ui --port 8080

On Windows, use .\linkscan.exe in PowerShell in place of ./linkscan. Prebuilt binaries do not need Go. Building from source requires the Go version declared in the repository.

Before you use it

  • A failed request does not always mean a page is missing. Bot protection and rate limits can return errors for a working destination.
  • The scan covers pages discovered within the configured crawl depth and domain boundaries. It is not a guarantee that every page on a website was checked.
  • Review ignored status codes and external-link settings before interpreting a report.

Source and documentation

License: MIT. See the repository for current releases and requirements.

Engineering deep dives on Scala, Java, Rust, and AI Systems. Written by a senior engineer who builds real fintech systems.

© 2026 prabhat.dev