All tools

Markdown Internal Link Checker

Code

Check a Markdown document's #anchor links against its own heading slugs and flag broken ones

Paste a Markdown document and it computes the GitHub-style anchor slug for every ATX heading, the same algorithm the Table of Contents Generator uses, then checks every inline `[text](#slug)` link in the document against them. A link pointing at a slug with no matching heading is flagged as broken, which catches the common docs-authoring mistake of a heading getting renamed or removed after links to it were already written. It only checks inline anchor links, not reference-style links or links into other files, and headings or links inside fenced code blocks are ignored so a hash in a code sample is never mistaken for either.

markdownlinksvalidatordocumentation

How to use Markdown Internal Link Checker

  • 1.Paste a Markdown document, or try one of the sample snippets to see the output shape.
  • 2.Review each internal link's valid/broken status alongside the line it was found on.
  • 3.Expand the heading list to see the exact slug GitHub would generate for each heading, including the -1/-2 suffixes duplicate headings get.

Frequently asked questions

Does this check reference-style links like [text][ref]?
No, only inline anchor links written as [text](#slug) are checked. Reference-style link/definition pairs are a different, not-yet-covered case.
How are duplicate heading slugs handled?
The same way GitHub's own renderer disambiguates them: the second heading with the same text gets a -1 suffix, the third gets -2, and so on, matching the sibling Table of Contents Generator.
Does it check links to other files, like [text](./other.md#section)?
No, only links starting with a bare # are checked against this document's own headings. A link with a file path before the # is not evaluated.
Is my document sent anywhere?
No, scanning runs entirely in your browser (or in your own process via the SDK/API), with nothing uploaded.

Use via API, SDK, or MCP

cURL# Free: 1,000 req/day · Pro: 10,000 req/day
curl -X POST https://api.utilix.tech/v1/tools/markdown-internal-link-checker \
  -H "Authorization: Bearer utx_live_..." \
  -H "Content-Type: application/json" \
  -d '{"markdown":"# Title\n\nSee [Setup](#setup) below.\n\n## Install\n"}'

Get an API key from your dashboard · Full API docs →