Markdown Link Extractor
Text
Parses common Markdown link forms — `[text](url 'title')`, ``, reference-style `[text][id]` with `[id]: url 'title'`, and autolinks `<https://…>` — and returns each as a row of `{type, text, url, title}`. Useful for inventorying outbound links for SEO audits, building a sitemap from blog posts, checking for dead URLs across a docs folder, or extracting all images from a README before migrating to a new CDN.
| Type | Text | URL | Title |
|---|---|---|---|
| image | alt text | https://example.com/cat.png | Cute cat |
| link | a regular link | https://example.com | Example homepage |
| link | docs | https://docs.example.com | |
| link | help | https://help.example.com | Help center |
| link | https://example.org | https://example.org |
Output (5 items)
type,text,url,title image,alt text,https://example.com/cat.png,Cute cat link,a regular link,https://example.com,Example homepage link,docs,https://docs.example.com, link,help,https://help.example.com,Help center link,https://example.org,https://example.org,
Reference links resolve against `[id]: url` definitions in the same document. Bare URLs not wrapped in `<>` are skipped.
How to use
- Paste a Markdown document or section.
- Toggle whether images (``) are included.
- Pick CSV, JSON, or Markdown list output; copy and feed into your downstream tool.
Frequently asked questions
- Which link syntaxes are recognized?
- Inline `[text](url)` with optional `"title"` or `'title'`; reference `[text][id]` resolved via `[id]: url "title"` definitions; shortcut `[text][]`; image equivalents with `!` prefix; and HTML-style autolinks `<https://…>`. Bare URLs not wrapped in `<>` are intentionally skipped because they're ambiguous in CommonMark.
- Why is a link missing from the output?
- Most common reasons: the URL spans multiple lines (Markdown disallows that), there's a stray space between `]` and `(`, or it's a reference link whose definition uses a different ID than the reference. The recognized set follows CommonMark's relaxed rules but isn't a full parser.
- Does this fetch the URLs?
- No — it only extracts what's in the text. To verify links are alive, pipe the output into a link-checker (`lychee`, `markdown-link-check`, your favorite Node tool).
- What about Markdown inside code blocks?
- The parser doesn't skip fenced code blocks, so `[example](https://x)` inside ``` ``` ``` will still be picked up. If that's a problem for your input, strip code blocks first with `sed` or a Markdown AST tool.
Related tools
URL Slug Generator
Turn any text into a clean URL slug — strip accents, choose a separator, set a max length.
Markdown Table Generator
Paste CSV, TSV, or pipe-delimited data and get a properly aligned GitHub-flavored Markdown table.
Text Diff Viewer
Compare two pieces of text and see line-by-line or word-by-word additions and removals.
Lorem Ipsum Generator
Generate placeholder text by paragraphs, sentences, or words.
Case Converter
Convert text between UPPER, lower, Title, camelCase, snake_case and more.
Character & Word Counter
Count characters, words, sentences, lines, and bytes in real time.