Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

Media Importer

Aki HakuneAki Hakune42 downloads

Download remote media referenced in your notes and store it locally or on a remote backend (WebDAV, S3).

Add to Obsidian
  • Overview
  • Scorecard
  • Updates2

An Obsidian plugin that downloads remote media referenced in your notes and stores it locally in your vault — or uploads it to a remote backend (WebDAV or any S3-compatible service).

Features · Commands · Settings · Installation · Development


Features

  • Scans your notes for external media URLs in:
    • Markdown image embeds: ![alt](https://example.com/cat.png)
    • Markdown audio/video embeds: ![](https://example.com/clip.mp4)
    • Wikilink embeds: ![[https://example.com/cat.png]] (opt-in)
    • HTML <img>, <video>, <audio>, <source> tags (opt-in)
  • Downloads each media file and rewrites the note to point at the new location.
  • Three storage backends:
    • Local vault — saves to your configured attachment folder (default).
    • WebDAV — uploads to a WebDAV server, rewrites URL to the public address.
    • S3-compatible — uploads to any S3 endpoint (AWS, MinIO, Backblaze B2, Cloudflare R2, …), rewrites to a templated public URL.
  • Idempotent — re-runs skip URLs the plugin already produced. The note's content is the source of truth; no external cache.
  • Dry-run mode — preview every change before any note is touched or any file is uploaded.
  • Filtering — allowlist + denylist by host, optional size limit (MB).
  • Collision-safe — downloaded files get a -1, -2, … suffix if a file with the same name already exists.

Commands

  • Import remote media — scan, download, rewrite.
  • Import remote media (dry run) — scan and show what would happen; nothing is modified or uploaded.

Settings

Section Option Description
Scanning Scan paths Comma-separated folders. Empty = whole vault.
Detectors per-syntax toggles Each embed syntax can be enabled/disabled individually. Default: Markdown image + audio/video.
Filters Allowlist / Denylist Host patterns. * = all. Supports regex like /^i\.imgur\.com$/.
Filters Size limit (MB) 0 = off. Skips files larger than this (checked via HEAD).
Backend Active backend local, webdav, or s3.
Backend per-backend fields Folder (local), URL/credentials (WebDAV), endpoint/bucket/keys/template (S3).
Advanced Request timeout (seconds) Per-request timeout. Default 30.

Installation

From release

  1. Download main.js and manifest.json from the latest release.
  2. Place them in <vault>/.obsidian/plugins/media-importer/.
  3. Enable the plugin in Obsidian's settings under Community plugins.

From source

git clone https://github.com/git-akihakune/media-importer
cd media-importer
npm install
npm run build

Copy build/main.js, build/manifest.json, and build/styles.css into your vault's .obsidian/plugins/media-importer/ directory and enable the plugin.

Development

npm run dev       # esbuild watch
npm run test      # vitest run
npm run lint      # eslint
npm run typecheck # tsc --noEmit

Releasing

Releases are automated via the Release workflow.

Tag-triggered release (typical)

  1. Bump version in manifest.json to the new version (e.g. 0.2.0).
  2. Commit: git commit -am "chore: bump version to 0.2.0".
  3. Tag and push: git tag 0.2.0 && git push origin 0.2.0.
  4. The workflow builds, lints, tests, updates versions.json, and publishes a GitHub release with main.js, manifest.json, and styles.css attached.

The tag name must match manifest.json's version exactly (no v prefix), or the workflow will fail. Obsidian's submission bot requires bare-version tags.

Manual release (workflow_dispatch)

From the Actions tab → "Release" workflow → "Run workflow", enter the version (e.g. 0.2.0). The workflow will create the tag if it doesn't exist, then build and release.

What the workflow does

  • Runs lint, typecheck, tests, and a production build.
  • Asserts the tag version matches manifest.json.
  • Appends the new version + minAppVersion to versions.json and commits back to the default branch.
  • Creates a GitHub release with auto-generated release notes and the three Obsidian-required artifacts as separate assets (not zipped).
HealthExcellent
ReviewCaution
About
Download remote media referenced in your notes and save it locally in your vault or upload it to a WebDAV or S3-compatible backend. Scan Markdown and optional HTML/wikilink embeds, rewrite notes to point at stored files, preview changes in dry-run mode, apply host filtering, and skip already-imported URLs.
AttachmentsImport
Details
Current version
0.2.0
Last updated
4 weeks ago
Created
4 weeks ago
Updates
2 releases
Downloads
42
Compatible with
Obsidian 1.6.6+
Platforms
Desktop only
License
GPL-3.0
Report bugRequest featureReport plugin
Author
Aki HakuneAki Hakunegit-akihakune
GitHubgit-akihakune
  1. Community
  2. Plugins
  3. Attachments
  4. Media Importer

Related plugins

Local Images Plus

A reincarnation of Local Images to download images in Markdown notes to local storage.

Nexus AI Chat Importer

Import AI chat conversations from ChatGPT, Claude, Mistral Vibe, Perplexity* and Grok* exports into Obsidian as clean, readable Markdown files.

Epub Importer

Import EPUB files as Markdown.

Send Email into Vault

Send an email and its attachments, get a fully formatted Obsidian note in your vault.

Supernote (Unofficial)

Sync and view Supernote notes and Atelier drawings in your vault

Importer

Convert your data to Markdown files you can use in Obsidian. Works with Apple Notes, OneNote, Evernote, Notion, Google Keep, and many other formats.

Share Note

Instantly share/publish a note, with the full theme and content exactly like you see in Obsidian. Data is shared encrypted by default, and only you and the person you send it to have the key.

Consistent Attachments and Links

Move note attachments and update links automatically.

Ink

Handwriting and drawing directly between paragraphs using a digital pen, stylus, or Apple pencil.

YAOS

Simple real-time sync powered by your own Cloudflare Worker.