SmartMarkdown

Markdown Link Checker

Scan a Markdown document for broken, empty, and malformed links. Heading anchors, reference definitions, mailto and relative paths are checked structurally, and external URLs can be live-checked — each link reported with a clear status and reason.

Markdown to Scan

Link Report (8)

2 broken2 warnings2 external
  • getting started guideokanchor

    #getting-started

    Line 3 · Resolves to a heading in this document.

  • API referencewarninginternal

    ./api/reference.md

    Line 4 · Relative/internal path — verify it exists in your project.

  • websitependingexternal

    https://smartmarkdown.com

    Line 5 · External — verify with live check.

  • supportokmailto

    mailto:support@example.com

    Line 6 · Valid email syntax.

  • link is brokenerrorinternal

    Line 8 · Empty URL.

  • points nowhereerroranchor

    #nonexistent-anchor

    Line 8 · No matching heading anchor found.

  • http linkpendingexternal

    http://example.com

    Line 10 · Insecure http:// link.

  • logowarningimage

    https://smartmarkdown.com/logo.svg

    Line 11 · Relative/internal path — verify it exists in your project.

Anchors, mailto, and relative paths are checked structurally. External links can be live-checked, but cross-origin servers often block automated requests (CORS), so an inconclusive result is reported as “unknown” rather than broken.

Reviewers

Sarah Chen, SEO Content Strategist

Based on 5 sources
158 people find this tool helpful

What This Tool Does

Broken links are the most common defect in documentation, and the hardest to spot by eye. This checker extracts every link and image from your Markdown, classifies it, and validates it — surfacing empty URLs, dead in-page anchors, undefined references, and insecure links in a single report.

Link Types & Checks

  • Anchors (#section) — verified against the document's actual headings.
  • References ([text][ref]) — matched to their definitions; undefined refs are errors.
  • Mailto — validated for correct email syntax.
  • External (https://…) — syntax checked, http flagged, optionally live-checked.
  • Relative/internal — surfaced so you can confirm the path exists in your project.
  • Empty links and empty link text — reported as errors and warnings.

Anchor Validation

In-page links are validated against the slugs generated from your headings using GitHub's rules, including duplicate-heading suffixes. This reliably catches the classic broken table-of-contents link where a heading was renamed but the anchor wasn't updated.

External Live Checking

Click "Live-check external" to attempt a reachability test on the external URLs. Because browsers enforce cross-origin restrictions, a blocked request is reported as unknown rather than broken — the tool never gives you a false "broken" result. Structural checks remain fully reliable regardless.

Common Use Cases

  • Pre-publish QA: catch dead anchors and empty links before shipping docs.
  • README maintenance: verify a table of contents still resolves.
  • Migrations: find relative paths that need updating after a move.
  • Security hygiene: flag insecure http links for upgrade.

Tips

  • Fix anchor and reference errors first — those are definitive and in your control.
  • Treat external "unknown" results as "check manually," not "broken."
  • Pair with the TOC Generator to rebuild a contents section with valid anchors.

FAQ

Frequently Asked Questions