PHPackages                             moinframe/kirby-linkcheck - 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. moinframe/kirby-linkcheck

ActiveKirby-plugin[Utility &amp; Helpers](/categories/utility)

moinframe/kirby-linkcheck
=========================

Kirby CMS plugin to crawl a website and check for broken links. From the Kirby Panel or via the CLI.

1.0.0-beta.3(2mo ago)128↓16.7%MITPHPPHP ^8.3

Since Feb 17Pushed 2mo agoCompare

[ Source](https://github.com/moinframe/kirby-linkcheck)[ Packagist](https://packagist.org/packages/moinframe/kirby-linkcheck)[ Docs](https://github.com/moinframe/kirby-linkcheck)[ RSS](/packages/moinframe-kirby-linkcheck/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (4)Dependencies (6)Versions (5)Used By (0)

Kirby Linkcheck
===============

[](#kirby-linkcheck)

A Kirby CMS plugin that crawls a website, discovers all links, and checks them for broken HTTP responses. Results are displayed in a Panel section or via the CLI.

The crawler follows all same-domain links to discover pages, then verifies every link it finds: both internal and external. It supports seeding from `sitemap.xml` files.

Requirements
------------

[](#requirements)

- PHP 8.3+
- Kirby CMS 5.3+
- [Kirby CLI](https://github.com/getkirby/cli) (optional, for the `kirby linkcheck` command)

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

[](#installation)

```
composer require moinframe/kirby-linkcheck
```

Usage
-----

[](#usage)

There are two ways to use this plugin:

1. **Panel section**: add a section to any blueprint and check links directly from the Kirby Panel
2. **CLI command**: run `kirby linkcheck` from the terminal

Panel Section
-------------

[](#panel-section)

Add the section to any blueprint:

```
sections:
  links:
    label: Check for broken links
    type: linkcheck
    defaultUrl: https://example.com # optional, defaults to site URL
    defaultSitemap: https://example.com/sitemap.xml # optional
    editable: false # optional, disables URL fields (default: true)
```

### How It Works

[](#how-it-works)

1. Enter a URL and click **Check Links**
2. The crawler runs and returns results directly
3. A results table shows all non-200 links with status, source page, and linked URL

CLI Command
-----------

[](#cli-command)

Check your site for broken links from the terminal:

```
# Check a URL
kirby linkcheck https://example.com

# Check a URL with a sitemap
kirby linkcheck https://example.com https://example.com/sitemap.xml

# Provide only a sitemap (base URL is derived from the sitemap host)
kirby linkcheck https://example.com/sitemap.xml
```

The command crawls the site, then prints a summary and lists all broken links:

```
Checking links on: https://example.com

  [404] https://example.com/about → https://example.com/missing-page
  [0] https://example.com/contact → https://dead-link.example.com

Done. 42 links checked, 2 broken.

```

Status code `0` means the connection failed entirely (DNS error, timeout, etc.).

### URL Handling

[](#url-handling)

- Relative URLs are resolved against the page they were found on
- Fragment identifiers (`#section`) are stripped
- `mailto:`, `javascript:`, `tel:`, and `data:` schemes are skipped
- `.` and `..` path segments are resolved
- Protocol-relative URLs (`//cdn.example.com`) inherit the base scheme
- Duplicate URLs are deduplicated per page

### Same-Domain Detection

[](#same-domain-detection)

A link is considered same-domain if its host matches the start URL's host exactly. Subdomains are treated as external (e.g., if the start URL is `example.com`, links to `www.example.com` are external).

PHP Configuration for Large Sites
---------------------------------

[](#php-configuration-for-large-sites)

For sites with many pages you may need to adjust your PHP configuration:

```
; php.ini or pool-specific config
max_execution_time = 300   ; Allow up to 5 minutes
memory_limit = 512M        ; Increase if errors occur
```

The CLI command is not affected by `max_execution_time` (PHP CLI has no time limit by default).

License
-------

[](#license)

MIT

###  Health Score

36

—

LowBetter than 82% of packages

Maintenance83

Actively maintained with recent releases

Popularity11

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity38

Early-stage or recently created project

 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 ~0 days

Total

4

Last Release

89d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/bf9d09693dffe919aa833f7808c30813768f221bde1d76fe55b2adbf9130bfdc?d=identicon)[moinframe](/maintainers/moinframe)

---

Top Contributors

[![JuKra00](https://avatars.githubusercontent.com/u/2682834?v=4)](https://github.com/JuKra00 "JuKra00 (9 commits)")

---

Tags

plugincmslink-checkerkirby

###  Code Quality

TestsPest

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/moinframe-kirby-linkcheck/health.svg)

```
[![Health](https://phpackages.com/badges/moinframe-kirby-linkcheck/health.svg)](https://phpackages.com/packages/moinframe-kirby-linkcheck)
```

###  Alternatives

[getkirby/geo

Kirby Geo

223.5k](/packages/getkirby-geo)[oblik/kirby-link-field

Kirby 4 field for all types of links.

7650.6k2](/packages/oblik-kirby-link-field)[genxbe/kirby-ray

Helper tool that enables ray on all the extendable methods.

232.2k](/packages/genxbe-kirby-ray)[moritzebeling/kirby-favicon

Kirby plugin to meet all favicon needs

144.8k](/packages/moritzebeling-kirby-favicon)[winter/wn-sitemap-plugin

Sitemap plugin for Winter CMS

1042.6k1](/packages/winter-wn-sitemap-plugin)[johannschopplich/kirby-seo-audit

SEO analysis powered by Yoast for Kirby CMS

102.3k](/packages/johannschopplich-kirby-seo-audit)

PHPackages © 2026

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