Why images don’t show in a Markdown preview
Short answer: it is usually one of three things. The path is wrong for where the .md file sits. The preview refuses to load images from that place for security reasons. Or the viewer blocks images on purpose, for privacy.
Updated 15 October 2026. Tool behaviour follows each tool’s documentation; Quire behaviour comes from its source code.
Work through the usual causes
- Check the path
A relative path such as
img/chart.pngis relative to the folder of the .md file, not to wherever you opened it from. Check the spelling and the capitals. - Check for spaces
A path with spaces breaks the link. Write
with angle brackets, or replace each space with%20. - Check where the image lives
Some previews only load images from certain places. Move the image inside the project folder, or use an
https://address. - Check the viewer
If the preview shows a label such as “Image not loaded” instead of a broken-image icon, the viewer blocked it on purpose.
Security rules in common previews
- VS Code. The preview loads files only from inside the open workspace. A maintainer described this as by design, so
../../photos/x.pngoutside the folder won’t show. Its default security level also blocks images over plainhttp;httpsworks (VS Code docs). - PowerToys on Windows. The File Explorer Markdown preview shows no local images until you turn on Show local images, and then only from the file’s own folder tree. Online images stay blocked.
- GitHub. Use relative paths for images in the repository; GitHub rewrites them for the branch you’re viewing. An absolute link to your own machine, such as
C:\Users\…or/Users/…, can never work there.
Why some viewers block images on purpose
An image in Markdown can point anywhere on the internet. Loading it sends a request to that server, which learns your IP address and the time you opened the document. That is how tracking pixels in email work, and a Markdown file from someone else can do the same.
Quire Markdown is our extension, free on the Chrome Web Store. It never loads images in a document. Each one appears as a label such as “[Image not loaded: Sales chart]”, using the image’s alt text, so you can see what was there without any request being made. The same applies to the HTML copy it downloads. This is a deliberate choice, not a bug, and there is no setting to change it.

If you need to see the pictures, open the file somewhere that shows images: GitHub for a repository, VS Code with the project folder open, or an editor such as Typora or Obsidian. Quire is for reading the text: README files, notes and agent plans, with an outline, find and highlighted code. It is a viewer for UTF-8 files up to 2 MB, and diagrams and math aren’t drawn.
Questions
Why does my image show on GitHub but not locally?
Usually the path starts with /. On GitHub that means the repository root; on your computer it means the root of the disk. Use a path relative to the .md file instead.
Does alt text matter if the image loads?
Yes. Screen readers read it, it appears when an image can’t load, and viewers like Quire use it as the label for a blocked image.