A user script that lets you paste, drag, or select images and batch-upload them to Imgur or Tikolu or MJJ.Today or Appinn (selectable provider), optionally converting to WebP, then auto-copy the result in Markdown/HTML/BBCode/plain link. It also integrates configurable site buttons (works with SPA pages) and keeps a local upload history for quick reuse.
- 📥 Paste, drag-and-drop, or file picker to collect images
- 📤 Batch upload to Imgur/Tikolu/MJJ.Today/ImgBB/Appinn/Photo.Lily/111666.best/Skyimg/StarDots with progress display
- 🔄 Support concurrent upload to a secondary backup host (Dual-upload)
- 🖼️ Optional WebP conversion via proxy or supported hosts
- 📋 Auto-copy output in
Markdown/HTML/BBCode/Link - 🕘 Local history to quickly re-copy and reuse uploads
- 🔘 Optional site button injection with SPA observer (per-site settings)
- Requires a user script manager:
- Install from: Greasy Fork · ScriptCat · GitHub
- Open any site, paste or drop images onto the page, or use the panel’s file picker
- Watch the upload queue and progress
- Choose upload provider via the panel’s host selector (Imgur/Tikolu/MJJ.Today/ImgBB/Appinn/Photo.Lily/111666.best/Skyimg/StarDots)
- (Optional) Choose a secondary host for dual-upload and automatic fallback
- Choose proxy via the panel’s proxy selector (default
None) - Toggle WebP option to convert images via proxy
- When finished, the script auto-copies based on your selected format
- Use history to quickly copy past uploads
Markdown:HTML:<img src="url" alt="alt" />BBCode:[img]url[/img]Link:url
- Open the panel and switch to "Settings".
- Enter a CSS selector for the target element (e.g.,
.comment-screenshot-control). - Choose position:
Beforeinserts before,Afterinserts after,Insideappends as the last child. - Set button content: plain text or a single-root HTML snippet. Leaving it empty uses the localized default.
- Click
Save & Insertto persist the rule locally and inject immediately. A DOM observer keeps it inserted on SPA pages. - Use
Remove button (temporary)to clear injected buttons without deleting rules. - Use
Clear settingsto remove all saved rules. - Each rule in the list supports
EditandDelete. - Tips: prefer stable, unique selectors to avoid multiple insertions.
- 🌐 Multi-provider uploads: SM.MS, Cloudflare Images, self-hosted S3/MinIO
- 🛠 Image processing options: quality, resize, compression, format (JPEG/PNG/WebP), EXIF removal
- 📦 Queue controls: concurrency slider, retry/backoff, cancel/pause
- 🧩 Template system: fully customizable output formats and HTML snippets
- 🗂 History enhancements: filters by time/provider/tags, batch copy, faster reuse
- New provider: Added StarDots image hosting support. Requires configuration of API Key, Secret, and Bucket name in the settings panel.
- Fix: Refactored StarDots settings UI to use
cfunction instead ofinnerHTMLfor better compatibility with CSP-restricted sites.
- Fix: Optimized site button detection logic to prevent duplicate insertions when the page DOM changes (e.g., dynamic toolbar updates).
- Multi-host support:
- Added ability to upload to a secondary host concurrently.
- Implemented proxy chain fallback: uses primary host by default, falls back to secondary host if primary fails or via proxy chain.
- Updated proxy chain strategy:
Primary(Proxy) -> Secondary(Proxy) -> Primary(Direct). - UI Improvements: Distinct color themes for primary (blue) and secondary (purple) host controls and tags.
- Enhanced
wsrv.nlproxy: appends&output=webpwhen WebP option is enabled.
- Added new upload providers: ImgBB, Photo.Lily, 111666.best, and Skyimg.
- Updated documentation and host selector to include the new providers.
- Aligned 111666.best proxy behavior with Imgur (supports
wsrv.nl -> DuckDuckGo). - Improved history panel: larger thumbnails, lazy-loaded previews, and a floating enlarged preview when hovering thumbnails.
- Optimized log list style: improved spacing, added background/border for better visibility, and hover highlight effects.
- Added Skyimg (WebP) variant that uploads with
?webp=true. - Enhanced
wsrv.nlproxy: for GIF files (based on original filename) append&n=-1.
- Feature: Comprehensive iframe support.
- The upload panel is displayed only in the top frame.
- Site buttons are injected into all frames (including iframes).
- DOM changes in iframes are monitored for button injection.
- Fix: Cross-frame focus tracking.
- Correctly handles file picker requests and image pasting from iframes.
- "Copy" button correctly targets the last focused element, even inside iframes.
- Optimization: Refactored drag-and-drop logic.
- Unified drag-and-drop initialization for both main frame and iframes, reducing code duplication.
- Drag-and-drop settings changes now sync instantly across frames via
addValueChangeListener.
- Optimization: Unified paste upload behavior across frames.
- Paste events in both the main frame and iframes now use the same
iu:uploadFilespipeline as drag-and-drop, so behavior is consistent regardless of where you paste.
- Paste events in both the main frame and iframes now use the same
- Feature: Mock upload host for testing.
- Optional test host that simulates a 1-second delay and returns a random demo image URL.
- Controlled via an internal flag and disabled by default for normal users.
- Fix: Drag overlay flicker over inputs.
- The drop overlay is now
pointer-events: noneand only toggles visibility on valid drag targets, avoiding oscillation when dragging across input fields.
- The drop overlay is now
- Added new proxy options:
DuckDuckGoandwsrv.nl -> DuckDuckGo. - Enabled proxy selection for Imgur (supports
DuckDuckGoandwsrv.nl -> DuckDuckGo;wsrv.nlautomatically switches towsrv.nl -> DuckDuckGo). - Refactored proxy configuration logic for better extensibility.
- Add simulated
addValueChangeListenersupport for script managers that do not implement it natively, enabling cross-tab data synchronization. - Optimization: Add polling mechanism as a fallback for data synchronization when native listeners are unavailable.
- Refactoring: Migrate all synchronous
GM_storage calls to asynchronous APIs to improve script performance and compatibility with modern environments.
- Fix compatibility issues with utags-shortcuts
- Refactoring: use esbuild to bundle the script
- Per-site enable toggle via command menu; refresh page to apply.
- Per-site paste and drag-and-drop toggles in Settings; preset sites default to enabled.
- Support pasting multiple images at once.
- Paste/drag toggles take effect immediately without page reload.
- Insert upload-status placeholders into the target input and replace on success/failure.
- Add MJJ.Today upload provider.
- Add Appinn upload provider.
- Support custom format templates.
- Switch Imgur upload from
fetchtoGM_xmlhttpRequestto avoid CORS. - Extract shared
gmRequesthelper to unify upload provider requests.
- Settings storage migrated to a unified per-site map, consolidating previously separate keys into a single structure. Example shape:
{ format?, host?, proxy?, btns?: [...] }. - Panel UI is now rendered inside a Shadow DOM for style isolation from host sites. Internal styles use
:host; the drop overlay (#uiu-drop) and site-injected buttons (.uiu-insert-btn) remain in the page DOM. - Added clear “open” visuals and accessibility states (
aria-pressed) for History and Settings toggles. - Shadow-DOM-aware focus tracking: resolves editable targets inside nested open shadow roots and same-origin iframes; excludes the script’s panel from being tracked as a target.
- Trusted Types compliance: avoid
innerHTMLclears (usetextContent = ''), and parse custom button HTML viaRange.createContextualFragmentto prevent TT violations on strict sites. - Backward compatibility: existing settings are migrated automatically; no manual action required.
- Added proxy option:
None/wsrv.nl; Imgur not supported; whenwsrv.nlis selected, outputs and history copy/open usehttps://wsrv.nl/?url=${encodeURIComponent(url)} - Added Tikolu upload provider; choose Imgur/Tikolu via panel host selector
- Added last-focused input tracking: when clicks cause focus loss (e.g., upload), insert into the last visited input and restore focus; improved caret fallback for
contentEditableelements
- Initial MVP: Imgur upload, batch & progress, auto-copy (Markdown/HTML/BBCode/Link), local history, SPA-aware button injection
- Link: Greasy Fork · Greasy Fork · ScriptCat · GitHub
- Features: Add custom tags and notes to user, post, video and other links
- Highlights: Support special tag filtering (like spam, block, clickbait, etc.), data export/import, auto-mark viewed posts
- Supported Sites: V2EX, X(Twitter), Reddit, GitHub, Bilibili, Zhihu, Linux.do, Youtube and 50+ websites
- Description: Super useful tag management tool for adding tags to forum users or posts, making it easy to identify or block low-quality content
- Link: Greasy Fork · ScriptCat · GitHub
- Features: Real-time filtering and hiding of scripts on GreasyFork
- Highlights: Available as both a userscript and a browser extension
- Supported Sites: Greasy Fork
- Description: A tool that supports real-time filtering and hiding on GreasyFork, available in userscript and browser extension versions
- Link: Greasy Fork · ScriptCat · GitHub
- Features: Per-site grouping, icon support, floating or sidebar navigation panel
- Highlights: Floating/Sidebar modes, URL/JS script support, visual editor, keyboard shortcuts
- Supported Sites: All websites
- Description: A powerful userscript that streamlines your browsing workflow with a customizable navigation panel for quick access to favorite links and scripts
- Link: Greasy Fork · ScriptCat · GitHub
- Features: Open third-party website links in new tabs, parse text links into hyperlinks
- Highlights: Support custom rules, parse Markdown and BBCode formats, convert image links to image tags
- Supported Sites: Universal for all websites, including Google, YouTube, GitHub, V2EX, etc.
- Description: Enhance link browsing experience, automatically process various link formats for more convenient web browsing
- Link: Greasy Fork · ScriptCat · GitHub
- Features: Quickly find scripts for the current site across multiple repositories
- Highlights: Settings dialog, real-time sync, smart domain extraction
- Supported Sites: All websites
- Description: A user script to quickly find scripts for the current site across multiple repositories, now with a settings dialog and real-time sync across tabs
MIT License - see the LICENSE file for details.