PHPackages                             moinul/laravel-broken-link-scanner - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. moinul/laravel-broken-link-scanner

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

moinul/laravel-broken-link-scanner
==================================

Scan and report dead or broken links in your Laravel app

1.2.0.0(1y ago)112MITPHPPHP ^8.0|^8.1|^8.2|^8.3|^8.4

Since Apr 19Pushed 9mo ago1 watchersCompare

[ Source](https://github.com/moinulict/laravel-broken-link-scanner)[ Packagist](https://packagist.org/packages/moinul/laravel-broken-link-scanner)[ RSS](/packages/moinul-laravel-broken-link-scanner/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (7)Versions (6)Used By (0)

Laravel Broken Link Scanner
===========================

[](#laravel-broken-link-scanner)

A Laravel package to scan and report dead or broken links in your Laravel application. It crawls your website and identifies any broken links (4xx/5xx status codes).

Features
--------

[](#features)

- Asynchronous crawling with configurable concurrency
- Configurable crawl depth
- Export results to Excel
- Web interface to view and manage broken links
- Detailed progress reporting
- Database storage of broken links
- Support for Laravel 8.x, 9.x, 10.x, and 11.x

Installation
------------

[](#installation)

You can install the package via composer:

```
composer require moinul/laravel-broken-link-scanner
```

Configuration
-------------

[](#configuration)

1. Publish the config file:

```
php artisan vendor:publish --provider="Moinul\LinkScanner\LinkScannerServiceProvider" --tag="config"
```

2. Publish and run the migrations:

```
php artisan vendor:publish --provider="Moinul\LinkScanner\LinkScannerServiceProvider" --tag="migrations"
php artisan migrate
```

3. (Optional) Publish the views if you want to customize them:

```
php artisan vendor:publish --provider="Moinul\LinkScanner\LinkScannerServiceProvider" --tag="views"
```

Usage
-----

[](#usage)

### Command Line

[](#command-line)

Scan your site for broken links:

```
# Scan using config start_url
php artisan broken-links:scan

# Scan specific URL
php artisan broken-links:scan https://example.com

# Scan with custom depth
php artisan broken-links:scan --depth=3

# Clear old results before scanning
php artisan broken-links:scan --clear-old

# Show detailed progress
php artisan broken-links:scan -v

# Show very detailed progress
php artisan broken-links:scan -vv

# Show debug level information
php artisan broken-links:scan -vvv
```

### Web Interface

[](#web-interface)

The package provides a web interface at `/broken-links` to:

- View all broken links
- See status codes and reasons
- Export results to Excel
- Track when links were last checked

### Configuration

[](#configuration-1)

You can configure the package by editing the `config/broken-links.php` file:

```
return [
    // The URL to start scanning from
    'start_url' => env('APP_URL', 'http://localhost'),

    // How many links deep should the crawler go? Set to -1 for unlimited
    'max_depth' => env('BROKEN_LINKS_MAX_DEPTH', 5),

    // How many URLs to check simultaneously
    'concurrency' => env('BROKEN_LINKS_CONCURRENCY', 10),

    // How long to wait for each request (in seconds)
    'timeout' => env('BROKEN_LINKS_TIMEOUT', 10),

    // The user agent string to use when making requests
    'user_agent' => env('BROKEN_LINKS_USER_AGENT', 'Laravel Broken Link Scanner'),

    // The database table to store broken links in
    'storage_table' => 'broken_links',
];
```

### Programmatic Usage

[](#programmatic-usage)

You can also use the facade to scan programmatically:

```
use Moinul\LinkScanner\Facades\LinkScanner;

// Scan using config start_url
LinkScanner::scan();

// Scan specific URL
LinkScanner::scan('https://example.com');
```

### Events

[](#events)

The package dispatches the following events:

- `BrokenLinkFound`: When a broken link is discovered
- `ScanCompleted`: When the scan is complete

Testing
-------

[](#testing)

```
composer test
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG.md](CHANGELOG.md) for more information on what has changed recently.

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING.md](CONTRIBUTING.md) for details.

Security
--------

[](#security)

If you discover any security related issues, please email  instead of using the issue tracker.

Credits
-------

[](#credits)

- [Moinul Islam](https://github.com/moinulict)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

34

—

LowBetter than 77% of packages

Maintenance53

Moderate activity, may be stable

Popularity7

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

4

Last Release

386d ago

PHP version history (2 changes)1.1.0.0PHP ^8.0

1.1.1.0PHP ^8.0|^8.1|^8.2|^8.3|^8.4

### Community

Maintainers

![](https://www.gravatar.com/avatar/74c776203fd25206d8b5239619b2df9f49042aafeba8e205698369455120de8e?d=identicon)[moinulict](/maintainers/moinulict)

---

Top Contributors

[![moinulict](https://avatars.githubusercontent.com/u/20926562?v=4)](https://github.com/moinulict "moinulict (10 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/moinul-laravel-broken-link-scanner/health.svg)

```
[![Health](https://phpackages.com/badges/moinul-laravel-broken-link-scanner/health.svg)](https://phpackages.com/packages/moinul-laravel-broken-link-scanner)
```

###  Alternatives

[spatie/laravel-pjax

A pjax middleware for Laravel 5

513371.8k11](/packages/spatie-laravel-pjax)[nativephp/mobile

NativePHP for Mobile

82724.0k43](/packages/nativephp-mobile)[ashallendesign/favicon-fetcher

A Laravel package for fetching website's favicons.

190272.4k3](/packages/ashallendesign-favicon-fetcher)[bensampo/laravel-embed

Painless responsive embeds for videos, slideshows and more.

142146.8k](/packages/bensampo-laravel-embed)[glhd/conveyor-belt

14797.0k](/packages/glhd-conveyor-belt)[pulkitjalan/ip-geolocation

IP Geolocation Wrapper with Laravel Support

89164.9k1](/packages/pulkitjalan-ip-geolocation)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
