String Utilities Tool updated 1 day ago

Markdown Image Extractor

Create an inventory of the images in a Markdown document. Paste your Markdown and press Extract to get every inline image with its URL, alt text and optional title, shown in a table with thumbnails and as JSON. Useful for alt-text audits and media migrations; download as markdown-images.json.

Always Free Easy to use Instant results Private and secure

Use Markdown Image Extractor

Markdown Image Extractor

Extract image URLs, alt text, and optional titles from Markdown content into structured JSON.

Input Markdown

Paste Markdown images here

Extracted Images

Image URL, alt text, and optional title
Preview URL Alt Title
No images extracted yet.
Image tip
Standard Markdown images like ![alt](url) and ![alt](url "title") are supported. Extracted JSON is useful for content audits, media migration, and SEO alt-text checks.

Read Content

Learn how the tool works and when to use it.

An inventory of every image in your Markdown

Images in Markdown are easy to add and easy to lose track of. Over time a documentation site or blog collects screenshots hosted in three different places, diagrams with empty alt text, and links to files that were renamed long ago. The Markdown Image Extractor gives you an inventory. Paste a document, press Extract, and every inline image comes back with its URL, its alt text and its optional title, shown in a table with small thumbnails and available as JSON.

Image syntax it understands

The extractor reads standard inline Markdown images:

  • ![Dashboard overview](https://example.com/img/dashboard.png)
  • ![Logo](/assets/logo.svg "Company logo"), where the text in double quotes is the title

Each image becomes an object with three keys:

{"alt": "Logo", "url": "/assets/logo.svg", "title": "Company logo"}

When there is no title, title is null. An image with empty brackets, ![](photo.jpg), is still extracted, with alt set to an empty string. That makes missing alt text easy to spot. Angle brackets around a URL, as in ![x](<pic.png>), are stripped from the result.

Images inside fenced code blocks are skipped, so Markdown examples in a tutorial do not end up in your inventory.

A sample run

Imagine a release note with three images: a hero screenshot hosted on your CDN with descriptive alt text, a diagram stored next to the file as ./diagram.png with empty brackets, and a chart embedded from a third-party service with a quoted title. The extractor returns three rows in that order. The first shows a thumbnail and its alt text. The second shows an empty Alt cell, which flags it for an accessibility fix, and a blank thumbnail because the relative path cannot be resolved here. The third shows the chart's title in the Title column and its external domain in the URL, a reminder that this image depends on someone else's server. Three rows, three different follow-up actions, all visible in one table.

Reading the results table

The Extracted Images table has four columns:

ColumnWhat it shows
PreviewA small thumbnail for web addresses, data URIs and relative paths
URLThe image address, as a link that opens in a new tab
AltThe alt text between the square brackets
TitleThe optional quoted title, if present

Thumbnails are loaded straight from the image's own host by your browser. A relative path such as ./img/chart.png is resolved against this website rather than your site, so its thumbnail usually stays blank. That is expected and does not mean the path is wrong in your project. For safety, a URL that is not a web address, an image data URI or a relative path gets no thumbnail, and only web addresses and relative paths are opened by the link in the URL column.

How to use the image extractor

  1. Paste your Markdown into Input Markdown, or press Paste in the header.
  2. Glance at the "possible images" count in the footer for a quick estimate.
  3. Press Extract. The button switches to "Working" until the results return.
  4. Scan the table. Rows with an empty Alt column are images that need descriptions.
  5. Use the copy icon to copy the JSON array or the download icon to save markdown-images.json.
  6. Use the trash icon to clear everything and start again.

Where extraction happens

When you press Extract, the Markdown is sent to this site's server, where a pattern match collects the images, and the list is returned to your browser. Each request accepts up to 200,000 characters. The thumbnails are a separate step: your browser requests each image directly from wherever it is hosted.

Practical audits you can run

Alt text check for accessibility

Screen-reader users rely on alt text, and search engines use it to understand images. Download the JSON, filter for empty alt values, and you have a to-do list. While you are at it, look for alt text that just repeats the file name or says "image".

Media migration

Moving a blog to a new host or CDN means moving its images. The URL list tells you exactly which files to copy and which links to rewrite afterwards. Sort it to see how many images live on each domain.

Finding hotlinked images

Images loaded from other people's servers can disappear without notice. Scan the URL column for domains you do not control and download those images to your own storage.

Cleaning up unused assets

Extract images from every page, combine the lists, and compare them with the files in your assets folder. Anything in the folder but not in the list is a candidate for deletion.

Checking a single long article

Before publishing a tutorial with dozens of screenshots, a quick pass with thumbnails confirms every image is the right one and in the right order.

Tips for reliable extraction

  • Avoid spaces in image paths. A URL containing a space, even inside angle brackets, is not matched. Rename the file or encode the space as %20.
  • Write titles in double quotes. Single-quoted or parenthesised titles are not recognised.
  • Keep each image on one line. The pattern does not span line breaks.
  • Remember that the extractor does not check whether an image URL works. A missing thumbnail for an absolute web address is a hint, not proof, so open the link to confirm.

What is not picked up

  • Reference-style images such as ![chart][fig1] with the URL defined elsewhere.
  • HTML images written as <img src="...">.
  • Images inside fenced code blocks, which are skipped on purpose.
  • Background images or images loaded by scripts or shortcodes that a site generator expands later.

Note that inline code is not skipped. If a sentence shows `![x](y.png)` as an example inside single backticks, that example is extracted as an image.

Limitations

  • Inline image syntax only; reference-style and HTML images are ignored.
  • URLs containing spaces are not matched.
  • No broken-image checking, file size or dimension information.
  • Input is limited to 200,000 characters per request and requires a connection to the server.
  • Results are exported as JSON only.

Related tools

To keep only the alt text and drop the image markup from a document, use Markdown Remove Images Keep Alt. To audit regular links in the same file, run the Markdown Link Extractor.

Frequently Asked Questions

FAQ

Short answers for the questions users ask before trusting the result.

The alt text, the URL and the optional title written in double quotes. Images without a title get null for the title.

Relative paths are resolved against this website, not your project, so they usually cannot load. Absolute URLs may also be blank if the image no longer exists or the host blocks embedding.

Yes. Images written with empty brackets are extracted with an empty alt value, so they stand out in the Alt column and are easy to filter in the JSON.

No. Only inline Markdown images in the exclamation mark, brackets and parentheses form are extracted.

Images inside fenced code blocks are skipped. Examples inside single-backtick inline code are not skipped and will be extracted.

Yes. The text is sent to this site's server to collect the images and the results are returned to your browser. Up to 200,000 characters are accepted per request.

URLs containing spaces are not matched. Rename the file or replace the space with %20 and extract again.

Comments (0)

For user discussion, edge cases, and follow-up tips.
Leave a comment
Your comment will appear publicly after submission.
No comments yet. Be the first to comment!
Let Us Know!
Report an issue with this tool

Describe the issue you encountered so we can investigate and improve the tool.

What helps most
Include the input, expected result, actual result, browser/device, and a screenshot when helpful.
The screenshot button captures the page in the browser and attaches the generated image to this form.
Full-page screenshot
Captured in your browser with newisty.
No screenshot captured yet.
Tool Report