Releases: xRyul/obsidian-image-converter
Release list
1.4.6
Fixed
- Windows 260. Prevented dropped or pasted images from creating attachments with unsafe Windows paths. Image Converter now validates the final destination after all folder and filename variables are resolved. Paths reaching Windows' 260-character limit are blocked with a clear warning before any folder, file, or embed is created
1.4.5
This release restores reliable image clicking and resizing in Obsidian 1.13, with focused fixes for Live Preview tables, long notes, and popout windows.
Image clicking and resizing
- Obsidian's native image controls stay hidden again. When Disable Obsidian image selection on click is enabled, the native outline, resize corner, and Zoom/Edit toolbar no longer overlap Image Converter's resize handles.
- Clicking an internal image reveals its Markdown link at the configured front or back cursor position.
- Images inside Live Preview tables now work correctly. Single-click Markdown reveal, drag resizing, and wheel resizing all use Obsidian's nested table-cell editor when needed.
- Table syntax is preserved. Escaped pipes, captions containing pipes, width-only dimensions, and both Markdown and wikilink image formats remain intact. Resizing no longer adds a malformed trailing
\|after an image embed. - Table resizing performs fewer editor updates. Drag dimensions are committed once when the interaction ends, while wheel dimensions are saved after scrolling settles. This avoids repeated table reconstruction and stale-document errors.
Performance
- Image-link lookup in long notes is over 1,000× faster. In a real Obsidian benchmark using an 8,000-line note, p95 lookup time dropped from 3.36 seconds to around 3 milliseconds, reducing lookup latency by approximately 99.9%.
- Each lookup now performs 8,000 line reads instead of 32,004,000, a roughly 4,000× reduction, without loading and splitting the entire note on every interaction.
Fixed
- Fixed and improved image alignment in pop-out windows. Alignment classes are now removed from both the main window and popout window documents, preventing stale image alignment styling from lingering after unload/reload. DOM creation/events are now scoped to the UI element's owning document instead of the global document.
- Fixed image alignment leaking across panes. When the same image appears in multiple open notes, applying a saved alignment now only affects panes showing the matching note, including popout windows. This prevents side-by-side notes that share an image from incorrectly inheriting another note's alignment.
- Fixed image context menu stacking: repeatedly right-clicking an image no longer leaves multiple context menus open.
- Fixed image resize handles not working in pop-out windows.
- Fixed leftover resize handles/wrappers after unloading or switching views.
Settings
- Changing Disable Obsidian image selection on click now shows a clear reminder to reload Obsidian so the change takes effect.
Full Changelog: 1.4.4...1.4.5
1.4.4
Bug fixes
- Fixed intermittent image resizing not activating after opening or switching between Markdown notes/tabs.
- The resize listeners now reattach on
file-openandactive-leaf-changeinstead of relying only onlayout-change. - This should remove the need to manually switch notes or toggle Reading/Live Preview mode before drag/scroll resizing works.
- The resize listeners now reattach on
- Improved cleanup for image resize handles and view-scoped DOM listeners when the plugin unloads or the active Markdown view changes.
Reliability
- Added regression coverage for delayed Markdown view attachment and active-leaf changes, so resize listeners stay attached to the current note.
- Verified against
plugin-testing-vaultwith the previously failing tab-switch scenario.
other
- Cleaned up TypeScript initialization diagnostics in
main.ts. - Migrated TypeScript module resolution config away from deprecated
baseUrl/nodesettings for TypeScript 6 compatibility.
Full Changelog: 1.4.3...1.4.4
1.4.3
- Fixed broken macOS info glyphs by replacing text-based help markers with proper info icons.
1.4.2
New: option to restore pre-Obsidian 1.12-style image click behavior in Live Preview
New Drag & scroll resize option: Disable Obsidian image selection on click
From 1.12 default Obsidian behaviour makes you click on image and only then resize it. To show the link you have to click on image and then another on "Edit" button. That's a multi click process.

What new option allows you to do is simply bring back the old behaviour: Click on image to show link. It hides edit-block icon from image. Removes image outline, and corner resizing.

- Cursor placement. After clicking on image, it is possible to set where cursor is placed: at the front of the link or at the back. For that currently it reuses existing
Cursor position after drop/pastesetting.
New: Skip folders in Process current note
Added a new Skip folders option to Process current note, so you can exclude images in selected folders from conversion, compression, and resizing.
Examples:
images,/images, or/images/→ skips that folder and everything inside itimages/*→ skips only files directly inside that folderimages/**→ skips that folder and all nested subfolders
The new option supports plain folder paths, glob patterns, and regex matching. It also includes folder suggestions/autocomplete based on existing vault folders, it should make it easier to select valid paths and avoid typos.
Other
- Improved image annotation undo behaviour so arrow drawing creates a single undo step instead of multiple - #168
- Some new
defaultswhen installing plugin from fresh:- Global preset
Webp 75will be the new default: this simply makes any new drop/pasted image to be converted intoWebpformat, and file naming will be set to{notename}-{timestamp}. The location where images are saved is not affected, your Obsidian defaults are still followed. It only affects fresh installs. - Captions are now disabled by default. Captions input field is no longer showing up inside Context menu when Caption is disabled.
- "Lock the aspect ratio when dragging" is now ON by default.
- Global preset
Full Changelog: 1.4.1...1.4.2
1.4.1
NEW
- Added UI field for “Minimum compression savings (KB)” under settings. New option to avoid “compressing” when the size reduction is trivial and might degrade quality disproportionately. E.g.: sometimes file size might reduce only by 3kb, but visual degradation is significant - in such cases it might be better to simply keep original uncompressed file - #119 - Thanks @Moyf for PR #385
Improve
- Drag and scroll-wheel resizing: added guards to an edge case where image resize operations could write
|0x0dimensions during transient re-rendering e.g.: when reflow or retendering is triggered by other plugins #361
Full Changelog: 1.4.0...1.4.1
1.4.0
Features
-
AVIF “Auto-detect FFmpeg” button in settings. Press the button to let plugin automatically find
ffmpegexecutable on your system. -
AVIF hardware acceleration with auto encoder detection and software fallback. *
-
AVIF "Detect encoder" button in settings. After providing path to
ffmpeg. Press the button to auto-detect the best encoder for your system. If anything fails, it automatically detects hardware encoder failures and falls back to software encoders. For example: : For each encoder found, it runs a quick test encode e.g.::ffmpeg -f lavfi -i color=c=black:s=64x64 -frames:v 1 -c:v av1_nvenc -f null -. Ifav1_nvencfails (Cannot load nvcuda.dll) → Try next encoder. Findlibaom-av1→ Test it → Success! ✅ → Report: "✓ Working encoder: libaom-av1 (software)"

- Windows: Priority is as follows:
av1_nvenc(NVIDIA) >av1_qsv(Intel) >av1_amf(AMD) >av1_mf(MediaFoundation) - Linux gets VAAPI support.
- Software fallback uses
libsvtav1(faster) >libaom-av1(reference)
- Windows: Priority is as follows:
-
Each encoder has different CRF ranges. If supported encoder is identified on your system, the input field for CRF values will change accordingly:
libaom-av1,libsvtav1: 0-63av1_nvenc,av1_qsv: 0-51av1_amf,av1_vaapi: 0-255av1_mf: 0-100
-
Encoder-Specific preset names - the dropdown now dynamically changes based on the detected encoder too. Presets are applied only for encoders that support it. Hardware encoders (QSV, AMF, VideoToolbox, VAAPI) don't use presets. Automatically selects the middle preset for each encoder (balanced speed/quality).
| Encoder | Preset Options | Default | Notes |
|---|---|---|---|
| libaom-av1 | 0, 1, 2, 3, 4, 5, 6, 7, 8 | 4 | Uses -cpu-used (0=slowest/best, 8=fastest) |
| libsvtav1 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 | 6 | Uses -preset (0=slowest/best, 13=fastest/lowest) |
| av1_nvenc | p1, p2, p3, p4, p5, p6, p7 | p4 | p1=fastest, p7=slowest/best quality |
| av1_qsv | (hidden) | - | Hardware encoder, no preset support |
| av1_amf | (hidden) | - | Hardware encoder, no preset support |
| av1_vaapi | (hidden) | - | Hardware encoder, no preset support |
Fixes
- Frontmatter
mime/typevalues are now validated against supported MIME types. Invalid values are ignored. {vaultpath}now correctly returns the filesystem path on desktop.{MD5:fullpath}and{sha256:fullpath}now hash the full image path (not just the filename).- Settings preview now works even in empty vaults (uses sample data as fallback). In the past it would throw an error: "Failed to generate preview."
- Rare edge case that could cause image processing to hang.
- AVIF/FFmpeg path handling normalized across platforms (quotes, env/tilde expansion, OS path normalization).
- AVIF conversion stability improvements when using FFmpeg - Closes #363, #349, #382
- Image Alignment cache migration now moves from
.obsidianto the vault config folder. - Image Annotation modal resize handle no longer shows a double icon.
- Removed Quality parameter from AVIF presets.
Improvements
- Better compatibility with Obsidian 1.11 - closes #376
- Image Converter settings now reserve scrollbar space to prevent layout jumping.
- Preset and modal FFmpeg paths now stay in sync.
- Alignment with
obsidianmd/eslint-plugin- https://github.com/obsidianmd/eslint-plugin
* I have limited access to hardware, if you encounter any issues, or it throws error please open up a new issue, and I will be happy to work with you to get it resolved 💖
Full Changelog: 1.3.21...1.4.0
1.3.21
Improvements
- Use
FileManager.trashFileinstead of direct deletion so that Obsidian's file deletion settings are honored (e.g., "Move to system trash" vs "Permanently delete"). This ensures the plugin behaves consistently with the user's configured deletion preferences for files in the vault.
Bug Fixes
- Image Alignment: Fix image alignment checkmark persisisting in context menu after toggle-off.
- Image Alignment: Fixed alignment changes not rendering after switching view modes (Live Preview ↔ Reading), quick alignment changes fail until view mode switches again.
- Context Menu: Fix width dimension appearing under captions input field.
- Resize Presets: Fixed "Fit Editor" preset showing
undefinedfor max width value. Default is now 100%. - Fix #274 - Backslash added to image label when inserted into a table.
Full Changelog: 1.3.20...1.3.21
1.3.20
✨ New Feature: Default Alignment for Images
You can now set a default alignment (None / Left / Center / Right) for newly inserted images.
Settings → Image alignment → Default alignment for new images
When set, images will automatically receive the chosen alignment when you drop or paste them into a note. Set to "None" to disable (default behavior).
Thanks @SiriYep for the PR #379 (closes #127)
🖼️ Improved: Crop Modal Panning
Added middle mouse button (MMB) panning during crop process.
- MMB (middle mouse button): Pan/move the image
- LMB (left mouse button): Draw selection area
- Pan resets on ESC/Reset
🔧 Fixes
- Fixed typo in regex pattern description for image processing settings (Thanks @cksapp - PR #341, #340)
Full Changelog: 1.3.19...1.3.20
1.3.19
Batch Image Processing
- Fixed #280, #212: More reliable link updates after processing. The fix ensures link updates use the correct original path, avoiding broken links when rename operations occur during batch processing.
- Improved: Batch processing now gracefully handles errors - failed images are rolled back and no longer break the entire batch
| Scenario | Before | After |
|---|---|---|
| Processing fails mid-way | File left renamed but with wrong/corrupt content, broken links | File reverted to original name, other images continue |
| One image fails in batch | Could crash or silently fail entire batch | Only that image fails, user sees specific error notice |
| Link update fails | Potential crash, batch stops | Caught gracefully, user notified, batch continues |
- Canvas support for folder-level batch processing: When processing images linked in notes within a folder, image references in .canvas files are now properly updated (previously only .md files were updated). Note: Canvas link updates for "Process All Vault" and "Process Current Note" have been available since 1.3.0
- Performance: Batch operations now check upfront whether processing is actually needed. If all your images are already in the target format (or in skip list) with no resize/compression configured, you'll get an instant notification instead of waiting for a no-op loop.
- Performance: De-duplicate files by path, so the same image referenced multiple times is processed once. This doesn’t reduce the number of link replacements in the note; it just prevents redundant processing.
- fix: Previously, when batch processing images with "Keep original format" selected alongside compression or resizing, files would be incorrectly renamed to a .original extension (e.g., photo.png → photo.original), breaking links and file recognition. Files now retain their original extension while still being compressed/resized.
Image Resizing
- Fixed duplicate event listeners accumulating when switching between markdown views, potentially affecting performance
- Improved: Scroll-wheel resize modifier (Shift/Ctrl/Alt) now applies immediately when changed in settings
- Fixed: Resize handles sometimes stopped responding after switching notes
- Fixed: Visual glitches when quickly hovering over images
- Improved: More consistent cursor feedback during resize
Context Menu
- Fixed memory leak where event listeners accumulated each time the image context menu was opened
Image Cropping
- Improved responsiveness: crop selection and keyboard shortcuts now work immediately without waiting for image load
Image Annotation
- Fixed export failing in certain environments by adding toDataURL() fallback when toBlob() is unavailable
- Fixed export failing with invalid dimensions by implementing canvas size fallback. Edge cases where "Save" did nothing or threw an error are now handled gracefully. Most users wouldn't have hit this, but those who did would have lost their annotation work.
Image Alignment
- Ensure more consistent cleanup of classes
This release includes significantly expanded automated test coverage to prevent regressions.
Full Changelog: 1.3.18...1.3.19


