Browser-only embeds, such as Bilibili, now show a clear placeholder when they cannot load in an inline player. Instead of an empty media frame, you will see an Open in web viewer or Configure action where appropriate.
Fixed the broken-image icon that could appear next to markdown image-style media embeds () in Live Preview on newer Obsidian versions. The fix also applies inside popout windows.
Bilibili videos now enter Bilibili's web fullscreen mode when the player opens, instead of staying confined to the small default frame. The fullscreen attempt is limited to the initial player open so it does not interfere with later playback.
The main daemon setup dialog now clearly identifies Media Extended after plugin updates. When the daemon module needs to be upgraded, the prompt explains that it is updating the existing Media Extended daemon instead of presenting the setup as a fresh install.
Fixed a compatibility issue with plugins that patch openLinkText asynchronously (e.g. Recipe Grabber). When Media Extended's link handler didn't match a media link and fell through to the default handler, it was calling the fallback synchronously — dropping any async work that downstream patches returned as a Promise. The fallback is now properly awaited, so other plugins' async handlers run to completion. (#657)
The Copy timestamp as submenu (introduced in v4.2.0) is now available as standalone command palette entries — one for each format (time, URL, URL (Obsidian), rich text, rich text (Obsidian), markdown, markdown (Obsidian)). Bind a hotkey to the format you use most for one-key timestamped copying.
This update also extends copy timestamp to vault files and local files outside the vault:
Vault files produce obsidian://open?vault=…&file=…&t=N links that work on both desktop and mobile.
Local files (desktop only) produce file:///…#t=N links.
A new library URL variant builds obsidian://mx-open?id=…&t=N links using the media's library ID, so the link works even if you move or rename the source file. Available when the media has a library entry.
Variants that can't apply to the current media are hidden from the command palette and disabled in the menu.
obsidian://open now supports ?t= and ?hash= — external links to media files in your vault can seek to a specific timestamp when opened. Non-media files fall through to Obsidian's default handler, so existing links are unaffected.
obsidian://mx-open gains several new parameters:
?id= — resolve a media library item by its library ID instead of a source URL
?vault= — target a specific vault
?paneType= — open in a new pane (tab, split, window)
?t= and ?hash= — seek to a timestamp, overriding any fragment in the source URL
Together these make it possible to build deep links that open a specific piece of media at a specific time in a specific vault and pane.
Media notes are now named after their media title (from YouTube metadata, ID3 tags, or the filename) instead of random IDs. Falls back to url-{id} when no title is available. On name collision, a unique suffix is appended instead of incrementing numbers.
Two new command pairs let you step through video one frame at a time:
Previous frame / Next frame — single-step commands
Hold: previous frame / Hold: next frame — bind to a hotkey and hold it down to keep stepping
Works on both native video players and daemon-controlled web players (YouTube, Bilibili, Vimeo, Coursera, Baidu, Google Drive). Stepping is approximate — the browser has no exact "next frame" API, so the plugin nudges currentTime and waits for the next frame to render.
The player embed context menu now includes an Open media note item that jumps to the media's note or creates one if it doesn't exist, without leaving the player.
Added an Import cover image toggle under Media library settings. Turn it off to skip saving embedded cover art and remote thumbnails to media notes when adding media to the library. Setting a cover manually from a screenshot still works.
Fixed the clip end-time input in the timestamp link editor showing Infi:NaN:NaN.NaN after switching Play to video end off. It now resets to zeros when the original link had no end time.
Fixed invalid file: URLs in links opening as broken media. They now fall back to Obsidian's default link handling. (#637)
Fixed plain text copy from a transcript inserting a blank line between every cue. Cues within the same paragraph now copy as continuous text, with a single blank line separating distinct paragraphs. This means pasting a transcript excerpt as plain text reads as prose instead of a vertically padded list.
Fixed transcript search not revealing the first match when it was outside the current viewport. The first result now jumps into view as soon as you type, and changing results jumps to the match instantly with no smooth animation.
Improved reliability of the web viewer integration (YouTube, Bilibili, etc.) on devices with slower IPC, where the initial handshake could intermittently close the channel before the response arrived — most noticeable during Bilibili cold-load.
Fixed timestamp and screenshot insertion silently targeting the wrong note or being blocked entirely when the active editor was a media note whose source didn't match the playing media. Non-matching media notes are now skipped, and the correct note is created or opened instead.
Fixed clicking a timestamp link against a paused web viewer (YouTube, Bilibili, etc.) only seeking instead of resuming playback. Web viewers now match the native player's autoplay default on link click; add &no_autoplay to opt out.
Fixed standard markdown links to local media (e.g. [clip](video.mp4#t=01:49)) throwing Invalid URL. Schemeless links now route through the internal link handler instead of being treated as external URLs.
Fixed screenshots and subtitle downloads failing when the Media Folder Path setting was cleared. An empty path now resolves to the vault root instead of erroring.
Fixed ID3 tag extraction (and other media metadata reads) failing on remote sources, including WebDAV, when the browser blocked the request with a CORS error.
Fixed clicking a timestamp link against a paused web viewer (YouTube, Bilibili, etc.) only seeking instead of resuming playback. Web viewers now match the native player's autoplay default on link click; add &no_autoplay to opt out.
Fixed standard markdown links to local media (e.g. [clip](video.mp4#t=01:49)) throwing Invalid URL. Schemeless links now route through the internal link handler instead of being treated as external URLs.
Fixed screenshots and subtitle downloads failing when the Media Folder Path setting was cleared. An empty path now resolves to the vault root instead of erroring.
Fixed ID3 tag extraction (and other media metadata reads) failing on remote sources, including WebDAV, when the browser blocked the request with a CORS error. Closes #621.
Media Library — browse all media notes in a Bases-backed library view with search, filters, and auto-populated metadata from YouTube
Web Viewer — YouTube, Vimeo, Coursera, bilibili, and Baidu Pan now work inside Obsidian with full Media Extended controls (timestamps, screenshots, transcript downloads)
Transcript Paragraph Mode — readable paragraph view with auto-scroll, search, and per-tab toggles
This release includes breaking changes — notably a new Electron version requirement (Obsidian installer 1.11.4+), the main daemon shipping separately, and several renamed commands. See the v4.2 release notes for full details and migration steps.
Press Ctrl/Cmd+F while a transcript tab is focused to search through the transcript. You can also open search from the Find item in the pane menu.
While search is active, playback auto-scroll pauses so the view stays on your search results. Closing search scrolls back to the current playback position.
Taking a timestamp embed or screenshot embed used to fail with no editor error when no note was open. Now the plugin opens (or creates) the linked media note automatically and inserts there.
Plain timestamp and screenshot inserts still require an open editor with a cursor.
Media notes created from YouTube embeds (via "Add to library" or "Open media note") are now populated with the video's title, description, creator, duration, cover image, tags, and view count.
Subtitle tabs now open in Transcript mode by default instead of the previous one-cue-per-line subtitle layout. Transcript mode groups cues into flowing paragraphs, making longer transcripts much easier to read.
You can switch between modes at any time using the toggle button in the tab header or from the pane menu. Each tab remembers its own mode independently.
To restore the old default, go to Settings > Transcript > Default view for subtitle tabs and select Subtitle (one cue per line).
A new way to view subtitles: individual cues are merged into flowing paragraphs, making longer transcripts much easier to read. Each paragraph shows a clickable timestamp for quick seeking, and playback auto-scroll follows paragraphs instead of jumping line by line.
Select any part of the transcript and paste into your note — the timestamped link is included automatically, just like in subtitle mode.
Three per-tab toggles are available in the tab header and pane menu:
Transcript mode — switch between paragraph and subtitle layout
Show timestamps — toggle the timestamp gutter
Highlight current word — highlight the word being spoken during playback
Clicking a timestamp in a transcript tab that isn't synced to any player now opens the linked media file and seeks to that position. This follows the same click/alt-click behavior you've configured for media links elsewhere.
The editor's right-click Media submenu now includes Add media clip embed, giving quick access to the media clip embed action without needing the command palette.
Two new options in Link click behavior and Alt-click behavior settings: New pane on the top and New pane on the left. These complement the existing split-right and split-bottom options.
Opening a media URL via the browser extension now reuses an existing tab showing the same media instead of always opening a new one. The notice also shows a cleaner label (e.g. "YouTube: dQw4w9WgXcQ" instead of a long URL) and displays the timestamp when present.
Fixed web viewer integration failed to attach to webviews on some devices.
Renamed two screenshot template settings — Screenshot embed text and Timestamped screenshot embed text — to use "alias" instead of "text", matching every other related setting. The saved values are unchanged.
Timestamp and screenshot inserts now come in two kinds. Command labels, hotkey behavior, template settings, and insert position all shift because of it.
Timestamped inserts are what the old commands produced: a wrapped, timestamp-annotated block from your template. They always land on the next line, ignore the Insert location setting, and leave your selection alone.
Suppose your cursor sits at the end of I love this part. Running Insert timestamped screenshot to note (formerly Insert screenshot to note) now produces:
I love this part- ![[screenshot.jpg|Never Gonna Give You Up 3:45|50]] [3:45](video.mp4#t=3:45)
Plain inserts are new. Just the link or the embed, nothing around it. They sit inline with your writing, follow the Insert location setting, and keep any selected text intact.
From the same cursor position, running the new Add screenshot to note gives you:
I love this part ![[screenshot.jpg|Never Gonna Give You Up 3:45]]
The Insert location setting description was updated to match. It now only governs Add timestamp link to note and Add screenshot to note.
You have important moment highlighted. Previously, running Take timestamp would replace those two words with the timestamp template. Now:
Insert timestamp snippet to note (the renamed version) leaves your selection alone and drops the timestamp block on the next line.
Add timestamp link to note (the new plain variant) leaves your selection alone and places the bare link adjacent to it, either before or after depending on Insert location.
The note-taking settings were restructured around the plain vs timestamped split. If you customized any of these, look for them under the new names:
Previous setting
New setting
Drives
Screenshot template
Timestamped screenshot template
Insert timestamped screenshot to note
Screenshot linktext template
Timestamped screenshot embed text
Same command (the |width alias)
Timestamp embed template
Media clip snippet
Insert media clip embed starting from current timestamp to note
Timestamp embed linktext template
Media clip embed alias
Same command (the |width alias)
Saved values carry over. Only labels and descriptions changed. One new setting was added: Screenshot embed text, which controls just the display alias of the new plain Add screenshot to note (default {{TITLE}}{{DURATION}}, compared to {{TITLE}}{{DURATION}}|50 for the timestamped version).
Each setting description now names the specific command it drives, so the settings page maps straight back to the command palette.
Right-click in the editor now shows a Media submenu with entries for timestamp links, screenshot embeds, clipped screenshots, and the timestamped variants of each. It's only active when a media view is open, so it follows whichever media you're currently working with.
Two new commands that act like writing text, not pasting a block:
Add timestamp link to note writes just the raw timestamped link, no template wrapper.
Add screenshot to note writes a bare image embed.
Both respect the Insert location setting and keep any selected text intact. Good for turning a word or sentence into a timestamped link without stopping to reformat afterwards.
New Open media note command reveals the linked media note for the active media view, creating it if it doesn't exist yet. Opens in a side split by default, matching Add media note to library and Shift+Enter in the media quick switcher.
A new {{SCREENSHOT_LINK}} placeholder is available in the Timestamped screenshot template. Wrap the embed with it and clicking the image in your note jumps the player to the exact timestamp the screenshot was taken at.
New Clear media history command, with a matching button in settings under a new Media history section. Clears the recently played list the media quick switcher reads from.
Note-taking template settings have clearer, more consistent descriptions. Each one now names the command it drives.
Fixed link click preferences being ignored when opening media from the media library view. Modifier-click and alt-click now follow your link behavior settings. (#608)
Fixed YouTube embed playback occasionally failing with a "Failed waiting for player" error when the page was slow to load.
Fixed media URLs with invalid clip ranges producing links containing Infinity or NaN in the query string.
You can now set a start time on an embed link, not just a clip range. Open the hash editor on any embed and you'll see a timestamp option next to the clip controls. The embed seeks to that position on load.
Two new command palette entries: add the current media to your media library (replacing the old "create media note" command), or remove it from media library.
The Electron 39.0.0 minimum is now checked at startup with a clear notice, instead of failing later with a cryptic error. If you see the notice, download a fresh Obsidian installer — updating from inside the app does not update the Electron runtime.
Fixed the plugin failing to load when Obsidian's display language is not set to English.
Fixed YouTube subtitle downloads failing after switching between videos without reloading the page.
Sites you visit through the in-app web viewer now appear in the media switcher's Recent list, next to vault files and library items. Titles are captured automatically. Vault-file entries update when Obsidian renames the backing file. When you create a media note for a URL, the history entry merges into the library record — one entry per media, not two.
History is also now stored in IndexedDB rather than settings.json, so it can actually grow.
Audio players were collapsing to zero width inside Dataview table cells — they now render correctly. Style Settings also gets two new variables, --mx-min-audio-embed-width and --mx-min-video-embed-width, so audio and video can be sized independently. #597
Modifier+Enter shortcuts (Mod+Enter, Mod+Alt+Enter, Shift+Enter) in the media switcher were silently dropped. They work now.
Downloading subtitles from the web viewer's more-options menu now pre-populates the media note with webpage metadata (title, cover, creator), the same as "Add to media library" already did.
v4.2.0-beta.4 now need additional setup step to install the companion main daemon. it's no longer bundled with plugin, but now downloaded as a separate module to enable support for the new Web Viewer Integration feature.
To finish setup, open the setup wizard using command Open main daemon setup wizard, or using this link: obsidian://mx-main-daemon-setup.
If you want to try the new web viewer integration, open the setup wizard using Open web viewer integration setup wizard, or using this link: obsidian://mx-web-viewer-setup.
Open external media command is renamed to Open media quick switcher to better reflect its purpose. If you have any custom keybindings for this command, it should not be affected.
the Media Quick Switcher (originally opened via Open external media command) can query media tracked in media library. This means you can now type a few characters to open the media recently opened or tracked in media notes, just like built-in quick switcher.
Media Bases View now support full base config:
add, rearrange and resize columns.
checkbox column with toggle action.
specify cover image column and format for item subtitle.
You may find some features that require an account for Media Extended. Those features are implemented but not yet ready for public release.
They will be available for insiders in the future releases first when the service is ready for testing. The details about insider testing will be released later.
Google Drive support
Local audio transcription and transcription API
Screenshot OCR for text extraction
The new version of documentation is also in progress, and will be released later.
To enable it, import youtube.json to your Obsidian web clipper following template import guide. With media extended installed, the media will be directly parsed and imported to media library without creating any clipping note.
To make auto import from Web Clipper work, you need to make sure that the clipping note is named mx-import-youtube and directly under root folder of your vault.
Introducing Media Library, backed by Obsidian notes properties with Bases. Manage your media content in a more organized way.
Media library view supports any bases file with mx-uid property included in query in obsidian v1.10.0 or higher. For more details, see Bases documentation.
Media Library view: manage your media library content in Bases.
Search, filter, and sort your media library by various properties, with cover art support.
Import media by drag and drop, url input or file picker, media file metadata and cover will be populated automatically.
Support local files, remote URLs, and media-hosting services like YouTube.
Edit media metadata for playback settings using an interactive form. See frontmatter props for options available.
An index bases file is included under media library folder that include all media files in your vault by default. You can access it from ribbon button or command palette via command Open media library.
Metadata fetching from media-hosting services like YouTube is not supported yet. It will be included as part of optional online features in future releases.
To import existing media files in your vault to media library, you can run command Import existing media files in vault to library from command palette.
You can now enable lazy loading for embedded media, which could defer loading of media content before playback starts to improve performance for notes with multiple media files. To enable it, you can either set the default loading strategy for embedded media in settings, or configure it for each embed by adding load= hash property to the embed.
Add back support for YouTube video screenshot, see screenshot for more details.
Add support for password protected files, this should allow you to open protected files from Nextcloud, WebDAV, or static file servers, see load media for more details.
Support audio gain to further boost volume of audio files.