Welcome to lychee!
lychee is a fast, async, stream-based link checker written in Rust. 🦀✨ It finds broken URLs and mail addresses inside Markdown, HTML, reStructuredText, websites, and more!
Let’s take a look at some usage examples.
Check All Links In Current Directory
Section titled “Check All Links In Current Directory”The following command recursively checks all links in all supported files inside the current directory.
lychee .
This traverses all subdirectories and checks the links in all files which lychee
supports, such as .md
, .html
, and more.
Check All Links On A Website
Section titled “Check All Links On A Website”lychee https://example.com
This command checks all links on the website https://example.com
.
It is not recursive and only checks the links on the given page.
Recursion is currently not supported. You can however download the
sitemap of a website and use that as input.
Check Only Specific Files
Section titled “Check Only Specific Files”lychee README.mdlychee test.html info.txtlychee test.html info.txt https://example.com
This command checks only the links in the given files. It also demonstrates how to check multiple inputs, such as files and URLs in a single command.
Check Links In Directories, But Block All Network Requests
Section titled “Check Links In Directories, But Block All Network Requests”lychee --offline path/to/directory
This will only check the links in the files in the given directory and not make any network requests. It is helpful for a quick local “linting” of files.
Check Links In A Remote File
Section titled “Check Links In A Remote File”lychee https://raw.githubusercontent.com/lycheeverse/lychee/master/README.md
If a URL is given as input and it ends with a file extension other than .html
,
lychee respects the file extension and interprets the file accordingly.
Here, we interpret the file as Markdown.
Check links from stdin
Section titled “Check links from stdin”cat test.md | lychee -echo 'https://example.com' | lychee -
You don’t need to put links into a file first. You can also pipe them into lychee directly.
Check Links In Local Files Via Shell Glob
Section titled “Check Links In Local Files Via Shell Glob”lychee 'public/**/*.html'
Have many files in the same directory structure you want to check? You don’t need to list them all. Just use a shell glob!
The above command checks all .html
files in the public
directory and its
subdirectories.
Advanced Globbing And ~
Expansion
Section titled “Advanced Globbing And ~ Expansion”lychee '~/projects/big_project/\*_/README._'
This command checks all README
files inside the big_project
directory with
files ending in any file extension.
The ~
gets expanded to your home directory.
Ignore Case When Globbing And Check Result For Each Link
Section titled “Ignore Case When Globbing And Check Result For Each Link”lychee --glob-ignore-case --verbose '~/projects/\*_/[r]eadme._'
In this command, we ignore the case when globbing, so it matches
~/projects/my_project_/readme.md
~/projects/cool_app_/README.txt
~/projects/website_/readme.rst
~/projects/rust_game_/README
~/projects/python_script_/Readme.markdown
Check Links From Epub File
Section titled “Check Links From Epub File”If you have atool installed, you can check links inside .epub
files as well!
acat -F zip {file.epub} "_.xhtml" "_.html" | lychee -