#md #links #markdown #command-line #command-line-tool #single-file #detect #check #broken #broken-link

bin+lib broken-md-links

A command-line tool and library to detect broken links in Markdown files

7 releases (stable)

1.2.1 Jun 17, 2022
1.2.0 Mar 17, 2021
1.0.0 Oct 25, 2020
0.1.1 Oct 25, 2020
0.1.0 Jul 30, 2020

#1748 in Command line utilities

37 downloads per month


429 lines

Broken Markdown Links

This repository is an utility written in Rust that ensures all links in a Markdown file are valid, by ensuring the target files exist. It also ensures that for links pointing to a specific header (like [link name](file.md#some-header)) the said header exists in the target file.

Command-line usage

Check a single file:

broken-md-links input.md

Check a whole directory:

broken-md-links dir/ -r


There are several levels of verbosity:

  • -v silent: display nothing (exit code will be 0 if there was no broken link)
  • -v errors: display errors only
  • -v warn: display errors and warnings (the default)
  • -v info: display the list of analyzed files as well
  • -v verbose: display detailed informations
  • -v trace: display debug informations

Library usage

use broken_md_links::check_broken_links;

fn main() {
  match check_broken_links(Path::new("file.md"), false, false, false, &mut HashMap::new()) {
    Ok(0)          => println!("No broken link :D"),
    Ok(errors @ _) => println!("There are {} broken links :(", errors),
    Err(err)       => println!("Something went wrong :( : {}", err)


This project is released under the Apache-2.0 license terms.


~114K SLoC