Attachment Uploader

by zhuxining
5
4
3
2
1
Score: 52/100

Description

The attachment uploader plugin uploads local attachments to cloud storage by running a user defined shell command and replacing the local file with the returned network URL. It can be configured to handle only selected attachment formats, delete the original local file after a successful upload and trigger automatically when content is pasted or dragged in from outside the app. The plugin includes ready made command patterns for tools like uPic and Picsee, but it also works with a custom script as long as the command prints the uploaded file URL in its output. That keeps the workflow flexible while leaving storage choice and upload logic under your control instead of locking it to one service.

Reviews

No reviews yet.

Stats

10
stars
3,543
downloads
7
forks
103
days
15
days
22
days
12
total PRs
0
open PRs
1
closed PRs
11
merged PRs
7
total issues
0
open issues
7
closed issues
48
commits

RequirementsExperimental

  • An external image hosting or cloud upload tool with a shell command that returns the uploaded file URL

Latest Version

22 days ago

Changelog

README file from

Github

obsidian-attachment-uploader

This Obsidian plugin helps you upload local attachments to cloud storage. You can customize the upload command and specify which attachment formats to upload.

中文文档

Features

  • Custom upload commands
    • Built-in uPic upload command: /Applications/uPic.app/Contents/MacOS/uPic -o url -u %s
    • Built-in Picsee upload command: "/Applications/Picsee.app/Contents/MacOS/Picsee -u %s"
  • Customizable attachment formats to upload
  • Supports standard Markdown images and Wiki embeds, excluding code, comments and raw HTML
  • Optional source deletion after upload, disabled by default; respects Obsidian's trash preference and retains files when references remain or checks are uncertain
  • Automatic uploads are on by default for pasted screenshots and pasted/dropped files; failures fall back to local attachments
  • If local fallback also fails or a cloud upload succeeds but its link cannot be inserted, a notice shows the recovery location or URL
  • Optional inclusion of remote HTTP(S) images in pasted Markdown, disabled by default
  • Manually transfers remote HTTP(S) images in the current note
  • Batch migration: scan Markdown notes, review the scope, then upload referenced local attachments and remote images; open notes are skipped and local source files are kept
  • Skips uploaded results remembered during this session and optional configured URL prefixes

Installation

  1. In Obsidian, open the plugin manager
  2. Search for "obsidian-attachment-uploader"
  3. Click "Install", then enable and configure after installation

Configuration

  1. Install an image hosting tool with a command-line interface, or prepare a custom upload executable
  2. Configure the Obsidian attachment uploader plugin
  • Upload Command: Include exactly one standalone %s argument for the local attachment path. Direct shell pipelines and variable expansion are unsupported; use a trusted executable wrapper if needed. Built-in uPic and Picsee commands need no script.
  • Attachment Formats to Upload: Configure which attachment formats to upload, separated by commas or line breaks. Manual uploads, paste/drop, remote image transfers and batch migration all use this filter; the test upload in settings ignores it
  • Delete Original After Upload: Enable optional source deletion after the attachment link is successfully replaced
  • Auto upload: on by default for pasted screenshots and pasted/dropped files. When off, Obsidian inserts them normally
  • Include remote images: off by default. When automatic uploading is enabled, also transfer HTTP(S) images in pasted Markdown. Disabling the main switch disables this option while retaining its value
  • Remote image URL prefixes to skip: optional, one HTTP(S) prefix per line. Matching requires the same protocol, exact host, port and path directory
  1. Custom command examples
  • uPic command: /Applications/uPic.app/Contents/MacOS/uPic -o url -u %s
  • stdout must provide a single distinct HTTP(S) destination URL, optionally labelled Output URL:; multiple different results are rejected.
  • Example output:
    Uploading ...
    Uploading 1/1
    Output URL:
    https://example.com/image.png
    

Settings are grouped into Upload tool, Upload options and Remote images. The command editor appears only for custom tools. Enter a local file path under Test upload to run a real upload and check the result; the test path is not saved.

Editing existing vault attachments does not trigger uploads. Use the manual command to upload modified attachments. Allowed formats may include PDF, audio and other extensions; remote transfer handles images only.

Usage

  1. Open a note containing attachments in Obsidian
  2. Run Upload attachments in current note from the command palette, or click the upload Ribbon button This command uploads local attachments and transfers remote HTTP(S) images in the current note. Remote images are processed first so newly uploaded local attachments are not transferred again.
  3. Enable both Auto upload and Include remote images to transfer pasted Markdown images automatically. Rich clipboard content keeps Obsidian’s original paste behaviour
  4. To migrate the whole vault, run Migrate vault attachments. Choose Scan vault, review the number of notes and attachments, then choose Start migration; the task can be paused, resumed or cancelled

Batch migration only processes attachments referenced by Markdown notes and never uploads unreferenced vault files. You can exclude folders. Open notes are skipped; close them and scan again. Items are processed in order with a 200 ms interval. The task pauses after three consecutive failures or when an image server returns a rate-limit response. Before writing, the note content and local attachment state are checked again; anything that cannot be confirmed keeps its original link. Successful uploads that cannot be applied receive recovery records, and local source files are always kept. Closing the migration panel leaves the task running; quitting Obsidian stops it without saving progress.

Remote image transfers use fixed limits: 100 unique URLs per operation, 3 concurrent downloads, 20 MiB per image, 200 MiB per batch, 30 seconds per download and 3 redirects.

Limits and defaults

Compatibility

Requires Obsidian Desktop 1.14.4 or later. Upload commands run as local executables, so mobile devices are not supported.

Defaults

Item Default
Upload tool uPic
Allowed file types Image formats (png, jpg, jpeg, gif, webp, svg, avif, bmp)
Auto upload On
Include remote images Off
Delete local attachments after upload Off
Skip URL prefixes Empty

Upload conditions

  • Only allowed file types that resolve to a vault file are uploaded; an unresolved or ambiguous reference keeps its original link.
  • “Allowed file types” applies to manual uploads, paste/drop, remote image transfers and batch migration. Remote images are judged by their downloaded content, and excluded types keep their original links during batch migration. The test upload in settings ignores this setting.
  • The manual command ignores the auto-upload switch; auto upload only handles pasted screenshots and pasted or dropped files.
  • Rich clipboard content and batches containing a disallowed file type are left to Obsidian.
  • If an upload fails, a pasted or dropped file is saved to the vault; if that also fails, a copy is saved under ~/.obsidian-attachment-uploader-recovery/ and the path is shown.
  • Upload commands run one at a time and each times out after 20 minutes; the command must return one destination URL.

Remote images

Each operation allows up to 100 unique URLs, 20 MiB per image, 200 MiB in total, 30 seconds per image and 3 redirects. Manual upload downloads 3 at a time; batch migration uses 1. Above 100 unique URLs the whole remote phase is skipped and the original links stay. URLs uploaded in this session and configured prefixes are skipped.

Deleting local attachments

Delete only after links are replaced and no other reference is found, following Obsidian's trash preference. Keep the file when checks time out or cannot be confirmed.

Batch migration

  • Scans all Markdown notes, minus excluded folders, and only processes referenced attachments; unreferenced files are never uploaded.
  • Open notes are skipped; local source files are always kept.
  • Each item waits 200 ms; the task pauses after 3 consecutive failures or when an image server rate-limits.
  • Remote limits apply per note; a note above 100 unique URLs skips its remote phase while local attachments still migrate.
  • Before writing, note content and local attachments are checked again; anything uncertain keeps its original link.
  • Closing the panel leaves the task running; quitting Obsidian stops it without saving progress.

Credits

  • Inspired by typora image upload functionality

Manual uploading processes only the current document and works regardless of automatic-upload settings. Local attachments and remote images share one progress notice, cancel button and final summary. Cancellation stops subsequent work; running upload commands may finish, and successful unapplied URLs receive recovery receipts. Repeated clicks reuse the active task for that note.

Changing the plugin’s upload service or command resets session upload records and retains manual prefixes. Configure URL prefixes to skip existing hosted images after restarting; otherwise, manually transferring a note may upload those images again. Cancelling a queued upload prevents its command from starting; an already-running upload may finish.

Similar Plugins

info
• Similar plugins are suggested based on the common tags between the plugins.
Google Drive Sync
2 years ago by Richard Xiong
A plugin to make Obsidian work in Google Drive to enable access to iOS.
Paste image rename
5 years ago by Reorx
Renames pasted images and all the other attachments added to the vault
Fast Note Sync
4 months ago by HaierKeys
Can be privately deployed, focusing on providing Obsidian users with a seamless, distraction-free note synchronization plugin with real-time sync across multiple platforms, supporting Mac, Windows, Android, iOS, and offering multilingual support.可私有化部署,专注为 Obsidian 用户提供无打扰、丝般顺滑、多端实时同步的多平台笔记同步插件。
Consistent attachments and links
6 years ago by Dmitry Savosh
Obsidian plugin. Move note with attachments.
Custom Attachment Location
5 years ago by RainCat1998
Customize attachment location with variables($filename, $data, etc) like typora.
File Cleaner Redux
3 years ago by husjon
A plugin for Obsidian to help clean up files in your vault
Attachment Management
3 years ago by trganda
Attachment Management of Obsidian
Janitor
4 years ago by Gabriele Cannata
Performs various maintenance tasks on the Obsidian vault
Imgur
6 years ago by Kirill Gavrilov
Pastes images right to imgur.com
Obsidian markdown export
4 years ago by bingryan
This plugin allows to export directory/single markdown to a folder. support output format(html/markdown/text)
Find Orphaned Images
4 months ago by josmarcristello
Find Orphaned Images is an Obsidian plugin designed to help you keep your vault clean and organized by identifying and managing images that are not linked anywhere in your notes.
Advanced Rename and Delete Handler
3 months ago by Michael Naumov
Handles renames and deletes for the whole vault in one place: updates links, moves attachment files and folders, and cleans up what a deletion leaves behind.
YAOS
6 months ago by kavinsood
A zero-terminal, real-time sync engine powered by your own Cloudflare Worker.
File Cleaner
5 years ago by Johnson0907
A file cleaner plugin for Obsidian.
Advanced Note Mover
4 months ago by Lars Bücker
Quickly and easily move notes to predefined folders. Perfect for organizing your notes.
Unique attachments
6 years ago by Dmitry Savosh
Obsidian plugin. Renames attachments, making their names unique.
Nuke Orphans
4 years ago by Sandorex
Obsidian notes plugin that trashes orphaned files and attachments
Attachment Manager
3 years ago by chenfeicqq
Attachment folder name binding note name, automatically rename, automatically delete, show/hide.
Google Keep Import
4 years ago by Dale de Silva
Imports Google Keep backup files
Image Manager
3 months ago by David V. Kimball
Insert, rename, and sort external images by transforming them into local files within your notes.
Linked Note Exporter
a year ago by the-c0d3r
Obsidian plugin to export a note along with all its attachments and linked notes—cleanly, conveniently, and ready to share.
S3 Image Uploader
4 years ago by jvsteiner
This project implements an image uploader, similar to others offered by the community, with one important difference: you can provide your own s3 based storage, instead of relying on a third party service, such as imgur.
Cloudinary Uploader
5 years ago by Jordan Handy
An uploader for Obsidian to Cloudinary
Insert Multiple Attachments
2 years ago by mnaoumov
Obsidian Plugin that allows to insert multiple attachments at a time
Bi Ji Tong Bu
3 months ago by 笔记同步助手
Bi Ji Tong Bu (笔记同步助手) for Obsidian — marketplace edition (no self-update; full disclosures)
O2
4 years ago by haril song
Converts obsidian markdown syntax to other platforms.
Webdav File Explorer
3 years ago by red0orange
Image Size
2 years ago by Jie Zhang
Set the default size for pasted images.
Minio Uploader
3 years ago by Seebin
Upload images, videos, audio, pdf, and other files to Minio OSS.
Attachments Cache
2 years ago by luisbs
Obsidian plugin to cache attachments locally
Cloud Storage
2 years ago by Jiajun Ma
Obsidian Cloud Storage is a powerful and user-friendly plugin designed to seamlessly integrate cloud storage capabilities into your Obsidian workflow. This plugin allows you to effortlessly upload your attachments to the cloud, freeing up local storage space and enabling easy sharing and access across all your devices.
S3 attachments storage
4 years ago by TechTheAwesome
An Obsidian plugin for storage and retrieval of media attachments on S3 compatible services.
Oriko
2 months ago by trevware
A pannable, zoomable wall of your web clippings. Sort them into grids, filter by any property, and clip from your phone. Media is downloaded into your vault, so clippings keep their images and videos even if the source page is deleted.
Attachment Organizer
4 months ago by kiteruunner
Automatically organize attachments into zone-based folders with conflict detection and batch operations
Local Any Files
2 years ago by ShermanTsang
A obsidian plugin used to extract and download files in your obsidian note.
Note Companion Folder
3 years ago by Chris Verbree
A Obsidian Plugin providing a way to associate a folder to a note
Paste Image Into Property
2 years ago by Nito
WebDAV Image Uploader
a year ago by ste
Uploads, downloads and deletes images on WebDAV server within Obsidian notes.
Tencent COS for Imgur
2 years ago by bobostudio
🔥 Obsidian 腾讯云 COS 图床插件
Add Attachment
2 months ago by olegg90
Obsidian plugin for adding multi attachments
Auto Folder Note Paste
2 years ago by d7sd6u
Convert your note into folder note upon pasting or drag'n'dropping an attachment
VaultSync
2 years ago by Justin Bird
Obsidian plugin to link your vault to a cloud storage provider.
ImgBB Uploader
2 years ago by Jordan Handy
An image uploader to imgBB for Obsidian
Infostacker Note Publish
2 years ago by Taskscape LTD, Patryk Nowak, Kacper Pabianiak
Infostacker plugin for Obisidian
F2 Quick Rename
a month ago by 熊猫别熬夜
F2 to quick rename the current note, or an embedded note/image under the cursor (including wiki aliases and markdown image alt text).
PixNote
3 months ago by Sofia Milton
inBox Sync
3 months ago by maoruibin
inBox 笔记的 Obsidian 插件
Content-Addressed Attachments
8 months ago by NateScarlet
Stores obsidian attachments using content-based addressing (similar to IPFS)
Feishu Importer
2 months ago by leon
feishu document importer for Obsidian
Pantalytics
a month ago by pantalytics
EUpload
2 years ago by Appleex
Obsidian 插件,专用于上传文件到存储仓库。目前支持 Lskypro(兰空图床),后续有需求会引入其它存储方式,如:Github/Gitee等等。