zhuxining3k downloadsUpload attachments to PicSee or uPic, with customization for commands and file type.
This Obsidian plugin helps you upload local attachments to cloud storage. You can customize the upload command and specify which attachment formats to upload.
%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./Applications/uPic.app/Contents/MacOS/uPic -o url -u %sOutput URL:; multiple different results are rejected.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.
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.Migrate vault attachments. Choose Scan vault, review the number of notes and attachments, then choose Start migration; the task can be paused, resumed or cancelledBatch 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.
Requires Obsidian Desktop 1.14.4 or later. Upload commands run as local executables, so mobile devices are not supported.
| 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 |
~/.obsidian-attachment-uploader-recovery/ and the path is shown.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.
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.
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.