# Link Checker

> Crawl web pages and detect broken links, redirects, and HTTP errors. Use when auditing site links, finding 404 errors, validating URLs before launch.

- Skill: `lord1egypt/link-checker` (Agent Skill)
- Install (CLI): `npx skillmds@latest add lord1egypt/link-checker`
- Raw SKILL.md: https://api.skillmd.com/api/skills/lord1egypt/link-checker/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: Lord1Egypt (https://skillmd.com/u/lord1egypt)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/lord1egypt/link-checker

---


# Link Checker

Check URLs for HTTP status codes, find broken links in documents, and track link health over time. Feed it a single URL, a file full of links, or a batch of addresses — it hits each one with `curl`, records the status code, and tells you what's alive and what's dead. Results are stored in `~/.link-checker/` so you can review history, pull stats, and export reports.

## Commands

### `check`

Check a single URL. Sends an HTTP HEAD request and returns the status code.

```
link-checker check <url>
```

Output includes status code, a human-readable label (OK, REDIRECT, CLIENT_ERROR, etc.), and an icon.

### `scan`

Extract all URLs from a file (markdown, HTML, plain text — anything with `http://` or `https://` links) and check each one.

```
link-checker scan <file>
```

Uses `grep` to pull URLs, deduplicates them, then checks each. Prints a summary at the end with pass/fail counts.

### `batch`

Check multiple URLs in one go. Pass them as arguments.

```
link-checker batch <url1> <url2> <url3> ...
```

### `report`

Generate a report from the current session's results. Supports three formats.

```
link-checker report [txt|csv|json]
```

Default format is `txt`. Reports are saved to `~/.link-checker/report.<format>`.

### `history`

Display the last 50 check results from the history log.

```
link-checker history
```

Shows timestamp, status code, status label, and URL for each entry.

### `broken`

Filter results to show only failed links — status codes 4xx, 5xx, timeouts, and connection errors.

```
link-checker broken
```

### `stats`

Show statistics across all checks: total count, breakdown by status category (2xx, 3xx, 4xx, 5xx, timeout, error), success rate percentage, and the most common status codes.

```
link-checker stats
```

### `export`

Export the full history log to a file. Supports `csv`, `json`, and `txt`.

```
link-checker export <format>
```

Exported files are timestamped and saved to `~/.link-checker/`.

### `config`

View current configuration or change settings.

```
link-checker config
link-checker config set <key> <value>
```

Available keys: `timeout` (seconds per request), `retries` (retry count on failure), `user_agent`.

### `help`

Show usage information and available commands.

```
link-checker help
```

### `version`

Print the current version.

```
link-checker version
```

## Examples

```bash
# Check if a URL is reachable
link-checker check https://example.com

# Scan a markdown file for broken links
link-checker scan ./README.md

# Batch check several URLs
link-checker batch https://example.com https://httpstat.us/404 https://httpstat.us/500

# See only the broken ones
link-checker broken

# Get a stats overview
link-checker stats

# Generate a JSON report
link-checker report json

# Export full history as CSV
link-checker export csv

# Set request timeout to 15 seconds
link-checker config set timeout 15

# Set retry count to 3
link-checker config set retries 3
```

## Configuration

Settings are stored in `~/.link-checker/config` as key-value pairs.

| Key | Default | Description |
|-----|---------|-------------|
| `timeout` | `10` | Connection timeout in seconds per request |
| `retries` | `2` | Number of retry attempts on timeout/error |
| `user_agent` | `LinkChecker/1.0.0` | User-Agent header sent with requests |

Change any setting with `link-checker config set <key> <value>`.

## Data Storage

All data lives in `~/.link-checker/`:

| File | Purpose |
|------|---------|
| `results.log` | Current session results (pipe-delimited) |
| `history.log` | Cumulative log of all checks ever run |
| `config` | Configuration key-value file |
| `report.*` | Generated reports (txt/csv/json) |
| `export_*.*` | Timestamped exports |

Log format: `timestamp|url|status_code|status_label`

## Status Categories

| Icon | Category | Codes |
|------|----------|-------|
| ✅ | OK | 2xx |
| 🔄 | Redirect | 3xx |
| ❌ | Client Error | 4xx |
| ⚠️ | Server Error | 5xx |
| ⏱️ | Timeout | Connection timed out |
| 🚫 | Error | DNS failure, connection refused |

## Requirements

- `bash` (4.0+)
- `curl`
- `grep`, `sort`, `awk` (standard Unix tools)

*Powered by BytesAgain | bytesagain.com | hello@bytesagain.com*

