🔍 AreYouOk
A fast, standalone Rust tool to scan files for broken or dead links. Works with Markdown, HTML, and any text files.
Features
✅ Multi-format support - Scan Markdown, HTML, or any text files
✅ Flexible filtering - Ignore specific directories and files
✅ Multiple report formats - JSON, HTML, TXT, and GitHub-flavored Markdown
✅ Fast link validation - Async HTTP checking with timeout protection
✅ Cross-platform - Works on Linux, macOS, and Windows
✅ Standalone binary - No dependencies required, just download and run
Installation
Download Pre-built Binary
Visit Releases and download the binary for your platform:
- Linux (amd64):
areyouok-linux-amd64 - macOS (amd64):
areyouok-macos-amd64 - Windows (amd64):
areyouok-windows-amd64.exe
After downloading, make the binary executable (on Linux/macOS):
Build from Source
Requires Rust 1.70+
The binary will be at target/release/areyouok (or areyouok.exe on Windows).
Usage
Basic Usage
Scans all Markdown files in ./docs and subdirectories for broken links.
Command-line Options
USAGE:
areyouok [OPTIONS] <PATH>
OPTIONS:
-t, --type <TYPE>
Type of files to scan [default: markdown]
Options: markdown, html, text, or specific extensions (e.g., "md,txt")
-i, --ignore <PATTERNS>
Files or directories to ignore (comma-separated)
Example: "node_modules,.git,_site"
-r, --report <FORMAT>
Report format to generate [default: txt]
Options: json, html, txt, github
-h, --help
Print help information
ARGS:
<PATH>
Directory path to scan
Examples
Scan with file type filter
Scan with ignore patterns
Generate HTML report
Multiple file types
Complete example (Jekyll blog)
This generates an interactive HTML report at areyouok_report_YYYY-MM-DD_HH-MM-SS.html
Report Formats
TXT (Default)
Human-readable text format with summary and broken links listing.
JSON
Structured JSON output containing all link validation results. Useful for CI/CD pipelines and automation.
HTML
Visual, interactive report with statistics and color-coded results. Perfect for web viewing.
GitHub
GitHub-flavored Markdown format compatible with GitHub Issues and Pull Requests.
CI/CD Integration
GitHub Actions
Create .github/workflows/link-check.yml:
name: Check Links
on:
schedule:
- cron: '0 0 * * 0' # Weekly on Sunday
workflow_dispatch:
jobs:
check-links:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Download AreYouOk
run: |
curl -L https://github.com/yourusername/areyouok/releases/download/v0.1.0/areyouok-linux-amd64 -o areyouok
chmod +x areyouok
- name: Check links
run: ./areyouok -r github .
continue-on-error: true
- name: Upload report
uses: actions/upload-artifact@v4
with:
name: link-report
path: areyouok_report_*.html
Generic CI/CD (Every 30 days)
#!/bin/bash
# Download fresh copy
# Run scan
||
# Upload/notify on broken links
if ; then
# Send notification, create issue, etc.
fi
How It Works
- Scan - Recursively walks through directories, identifying files matching your criteria
- Extract - Uses regex patterns to find URLs in Markdown, HTML, and text files
- Validate - Makes HEAD requests to check if URLs are accessible
- Report - Generates a report in your chosen format with results and locations
Supported Link Formats
- Markdown links:
[text](https://example.com) - HTML attributes:
href="https://example.com" - Plain URLs:
https://example.com
Performance
- Fast scanning - Walks directories efficiently, skips ignored paths
- Async validation - Checks multiple links in parallel
- Deduplication - Avoids re-checking duplicate URLs
- Configurable timeouts - 10-second timeout per link (default)
Troubleshooting
SSL/Certificate errors
Some websites have SSL issues. The tool will report these as broken links.
Timeout errors
If a site responds slowly, it may timeout. Adjust the request timeout in the code if needed.
Rate limiting
Some servers rate-limit requests. Space out link checks by running the tool at different times.
License
See LICENSE file for details.
Contributing
Contributions welcome! Please submit issues and pull requests.
AreYouOk v0.1.0 - Made with 🦀 Rust