Skip to content

Assets and links

Portable relative links and images in Markdown

Keep paths, alternative text, assets, fragments, and privacy boundaries intact across repositories, bundles, merges, and publishing.

MDLoom documentation8 min read

Resolve relative paths from the source file

A relative destination is interpreted from the Markdown file's directory. Moving a chapter without its companion assets changes that meaning, so portable workflows preserve paths or rewrite them only through an explicit composition report.

guide/intro.md
assets/diagram.png

<!-- From guide/intro.md -->
![Release flow](../assets/diagram.png)

Bundle every dependency and verify every reference

The merger accepts folders and validated ZIP archives, captures referenced local assets, namespaces paths, and records missing dependencies. The single-source web ZIP does not invent missing companion files: it creates an empty assets directory and reports unresolved references.

  • Avoid absolute disk paths, temporary signed URLs, and case-only filename differences.
  • Keep query strings and fragments only when the destination supports them.
  • Use a stable filename policy before several authors add assets.
  • Reopen the exported ZIP and test the document from its extracted directory.

Remote images are a viewer privacy decision

Opening a remote image can reveal viewer network metadata and trigger access to internal-looking addresses. MDLoom blocks remote images in untrusted preview and publication rendering; managed publication assets must be scanned and promoted by content hash before public use.

Write useful alternative text and retest heading fragments

Alternative text explains an image's function rather than repeating its filename. Heading fragments need separate testing because slug rules differ between renderers and duplicate headings acquire suffixes.

Put it into practice

Open a clean workspace for your next document.

Start anonymously, choose an explicit Markdown profile, and keep source, preview, and diagnostics together.

Open the editor  →