Virtual-threaded, lightweight link checking for websites and HTML content.
Built on Java 21 virtual threads for lightweight, high-throughput concurrent link checking without callback complexity.
Extracts links from HTML using JSoup: anchors, images, scripts, srcsets, and more. Perfect for documentation and static sites.
Drop it into any JVM project as a Maven dependency. No external binaries, no native installs required.
Fine-grained filtering, rate limiting, custom headers, and quirks handling to adapt to any site's behavior.
Raclette is heavily inspired by lychee, the excellent async link checker written in Rust. We follow lychee's design philosophy (filtering, quirks system, and overall architecture) and bring it to the JVM.
Built for Roq, works with any static site generator. Point it at a served app or a generated directory and let Raclette crawl every link.
Raclette is a fast, lightweight link checker for the JVM, the Java equivalent of lychee. It finds broken hyperlinks and mail addresses in your HTML files and websites.
Built with Java 21 virtual threads and java.net.http.HttpClient, Raclette handles thousands of concurrent requests efficiently. JSoup powers the HTML parsing, delivering reliable link extraction from any document structure.
<dependency>
<groupId>io.mvnpm</groupId>
<artifactId>raclette</artifactId>
<version>0.1.0.CR2</version>
</dependency>
try (Raclette raclette = Raclette.builder().build()) {
Status status = raclette.check("https://example.com");
if (status.isSuccess()) {
System.out.println("Link is valid!");
} else {
System.out.println("Broken: " + status);
}
}
This site is checked by Raclette itself. The link below is deliberately broken, and our dogfood test verifies that Raclette catches it.
Raclette is named after the 450-year-old cheese dish, claimed by both Switzerland and France, a nod to the original lychee link checker. Where lychee is a fruit, raclette is melted cheese: warm, comforting, and makes everything better. Also, it grates through your links.