A broken link checker that crawls websites, documentation, and local files via a CLI, Node.js API, and CI integrations.
lycheeverse/lychee
A fast, async link checker written in Rust that finds broken URLs and mail addresses in Markdown, HTML, and websites.
- Stars
- 4,103
- Forks
- 245
- Open issues
- 75
- Last commit
- 5 days ago
What is it?
lychee is a command-line link checker that scans local files and websites for broken hyperlinks and, optionally, email addresses. It supports Markdown, HTML, CSS, XML and plain text, and it falls back to best-effort URL extraction for other formats. Pre-processing commands can convert formats such as PDF or DOCX before checking.
Checks run asynchronously and as a stream, with configurable concurrency, per-host throttling, retries with backoff, and request caching on disk. Users can exclude links by regex or a .lycheeignore file, filter status codes, pass custom headers or a GitHub token, and choose output formats including JSON, JUnit and Markdown.
Besides the CLI, lychee is available as a Rust library (lychee-lib) and as a GitHub Action, and it is packaged for many operating systems and distributed as a Docker image.
Key features
- 01Checks links in Markdown, HTML, CSS, XML and plain text files, plus local files and websites.
- 02Optionally checks email addresses and URL anchor or text fragments.
- 03Runs asynchronously with configurable concurrency, per-host throttling and retries.
- 04Caches results on disk to speed up repeated runs.
- 05Excludes links with regex patterns or a .lycheeignore file.
- 06Outputs reports as compact, detailed, JSON, JUnit or Markdown.
Use cases
- Catching broken links in documentation repositories before merging changes.
- Running link checks in CI pipelines using the GitHub Action or Docker image.
- Auditing an existing website for dead external links.
- Embedding link checking in a Rust application via the lychee-lib crate.
Quick start
- 1
Install lychee with Homebrew (macOS)
brew install lychee - 2
Install lychee with Cargo (any platform with Rust)
cargo install lychee - 3
Pull the official Docker image
docker pull lycheeverse/lychee
In collections
Topics
FAQ
- What is lychee?
- A fast, async link checker written in Rust that finds broken URLs and mail addresses in Markdown, HTML, and websites. lychee is a command-line link checker that scans local files and websites for broken hyperlinks and, optionally, email addresses. It supports Markdown, HTML, CSS, XML and plain text, and it falls back to best-effort URL extraction for other formats. Pre-processing commands can convert formats such as PDF or DOCX before checking.
- Is lychee free to use? What license does it have?
- lychee is open source under the Apache-2.0 license. Check the license terms before using it in commercial products.
- Is lychee still maintained?
- Actively maintained. The last commit to lychee was on Nov 2, 2026.
- What can I use lychee for?
- Catching broken links in documentation repositories before merging changes. Running link checks in CI pipelines using the GitHub Action or Docker image. Auditing an existing website for dead external links. Embedding link checking in a Rust application via the lychee-lib crate.
- How do I install lychee?
- Install lychee with Homebrew (macOS): brew install lychee Install lychee with Cargo (any platform with Rust): cargo install lychee Pull the official Docker image: docker pull lycheeverse/lychee
- Where can I get lychee?
- The source code and installation instructions are on GitHub: https://github.com/lycheeverse/lychee
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A Go CLI for formatting markdown in GFM style, auto-generating code snippets from commands, checking links, and building static doc websites from markdown.
A fast website link checker written in Go that recursively scrapes a site and reports broken links.
A command-line prose linter that enforces your team's writing style rules in editors, CI, and code, running offline.
A background code checker for Rust that runs cargo check, clippy, and tests on save and shows warnings and errors in a terminal UI.
A Python tool, written in Rust, that visualizes and enforces module dependencies and public interfaces in a codebase.