Changelog

Stay up to date with the latest changes, improvements, and fixes in Media Extended.

What's New

Copy timestamp from the command palette

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.

URI protocol improvements

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 named after their title

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.

Frame-by-frame video navigation

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.

Open media note from the player

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.

Bug Fixes

  • Fixed Bilibili multi-part videos showing the raw video title instead of the page-specific title for the current part.

What's New

  • 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.

Bug Fixes

  • 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)

What's New

  • Added Chinese (Simplified) localization.

Bug Fixes

  • 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.

Bug Fixes

  • 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.

Bug Fixes

  • 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.

Bug Fixes

  • 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.

Bug Fixes

  • 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.

Highlights

  • 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

Breaking Changes

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.

What's New

Copy timestamp in multiple formats

The player menu's old "Copy URL with timestamp" option is now a Copy timestamp as submenu with seven formats:

  • Time only — just the timestamp text (e.g. 3:45)
  • URL / URL (opens in Obsidian) — a direct link, optionally routed through Obsidian
  • Rich text link / Rich text link (opens in Obsidian) — pastes as a clickable link in apps that support rich text
  • Markdown / Markdown (opens in Obsidian) — a markdown-formatted link

The "(opens in Obsidian)" variants use an obsidian:// URL so the link opens the media inside the plugin when clicked from other apps.

Search inside transcript tabs

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.

Auto-open media note when inserting blocks

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.

YouTube embed metadata in media notes

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.

Bug Fixes

  • Fixed player title and layout showing stale information from the previous media after switching to a different source in the same view.
  • Fixed media library cover images sometimes showing the wrong cover when a media note was moved or renamed.
  • Fixed media note creation hanging for several seconds when metadata fields were left empty.
  • Fixed menu popups appearing misaligned from the button that opened them.

Breaking Changes

Transcript mode is now the default layout for subtitle tabs

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).

What's New

Transcript mode with paragraph layout

Transcript mode for subtitles

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

Click-to-open media from transcript

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.

Media clip embed in editor context menu

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.

Smarter tab reuse when opening media from browser

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.

"Open media note" in media view menu

The Open media note command is now always visible in the media view's pane menu, making it easier to jump to (or create) the linked note.

Bug Fixes

  • Fixed the web viewer login command not appearing until patching completed. It now shows as soon as the web viewer is available.

What's New

  • Added an option in Logging settings to write plugin logs to a file instead of only the console for easier debugging.

Bug Fixes

  • 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.

Breaking Changes

New "plain" vs "timestamped" split for timestamps and screenshots

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.

Example: selection behavior

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.

Command and action-bar renames

Three commands were renamed to mark them as the timestamped variants. Your existing hotkeys still work, but only the labels changed:

Previous labelNew label
Insert screenshot to noteInsert timestamped screenshot to note
Insert clipped screenshot to noteClip and insert timestamped screenshot to note
Take timestampInsert timestamp snippet to note

The new plain-insert commands have no hotkey assigned by default.

A few related labels were also renamed:

Previous labelNew label
Copy clipped screenshotClip and copy screenshot
Save clipped screenshotClip and save screenshot
Set clipped screenshot as media coverClip and set screenshot as media cover
Open related mediaOpen linked media
Add to media libraryAdd media note to library

Template settings reorganized

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 settingNew settingDrives
Screenshot templateTimestamped screenshot templateInsert timestamped screenshot to note
Screenshot linktext templateTimestamped screenshot embed textSame command (the |width alias)
Timestamp embed templateMedia clip snippetInsert media clip embed starting from current timestamp to note
Timestamp embed linktext templateMedia clip embed aliasSame 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.

What's New

Editor "Media" context menu

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.

Plain inline inserts that preserve selections

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.

Open media note command

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.

Clickable screenshots

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.

Other improvements

  • 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.

Bug Fixes

  • 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.

Bug Fixes

  • Fixed screenshots being corrupted when taken from the player. Captures now save and paste correctly.
  • Fixed separator styling in the player controls.

What's New

Timestamp for media embeds

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.

Media library commands

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.

Bug Fixes

  • Fixed the hash editor clearing the link target when saving changes to an embed that had no hash before. The file path or URL now stays intact.
  • Fixed autoPlay defaulting to on in the hash editor for embeds. It now defaults to off.

Bug Fixes

  • Fixed internal media embeds not rendering when loaded by third-party plugins like Dataview.
  • Fixed main daemon failing to install in previous beta.

Bug Fixes

  • 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.

What's New

Webview browsing in media history

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.

Manual install fallback for main daemon

When automatic module download fails, you can grab the .asar from the GitHub release page and install it with a file picker instead of being stuck.

Bug Fixes

  • 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.

Breaking Changes

Main Daemon Setup

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.

If you have trouble finishing setup, please join our new community Discord server or GitHub Discussions and ask for help.

Renamed Commands

  • 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.

What's New

Web Viewer Integration

You can now use the Obsidian web viewer plugin to view media hosting websites with playback controls, timestamps support, screenshot, and more.

Web Viewer Integration

Currently supported websites: YouTube, Vimeo, Coursera, bilibili, Baidu Pan (百度网盘)

  • YouTube:
    • transcript download from more options menu
    • playback quality locking in Media Extended settings.
  • Coursera:
    • transcript download from more options menu and auto-import subtitle to vault when download manually.
  • bilibili:
    • transcript download when logged in from more options menu
    • always disable danmaku in Media Extended settings

Media Library

  • 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.
    • bases view native searching

Transcript View

Transcript can now work with subtitle disabled in video player.

YouTube embed player

YouTube embed player is updated to support:

  • loading and downloading transcript from YouTube
  • playback quality selection #565
  • audio track selection, including auto-dubbing tracks #509

Bug Fixes

  • YouTube embeds no longer default to English audio track.

Comming Next

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.

Bug Fixes

  • Fixed double YouTube player when embedding YouTube videos in note live preview editor in v1.10.6 or later.

What's New

  • Add "Insert media clip embed starting from current timestamp" command. closes #556

Bug Fixes

  • Fixed double YouTube player when embedding YouTube videos in note live preview editor. closes #562
  • Prevent triggering hash suggestions when links are closed by parentheses or brackets. closes #554

What's New

YouTube Web Clipper support

You can now import YouTube videos using Obsidian web clipper.

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.

closes #536

Auto import media files in vault to media library

media files can now be automatically imported to the library when they are added to the vault.

The feature is disabled by default and can be enabled via settings.

Other Improvements

  • You can now mod-click on media library button to open it in a new split pane. closes #537
  • Media library view now supports mod-click on media file / media note open button to open it in a new split pane.

What's New

Introducing Media Library, backed by Obsidian notes properties with Bases. Manage your media content in a more organized way.

Media Library view

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.

Bug Fixes

  • Fixed screenshot saving folder creation handling (#524)

What's New

Media Metadata from Files

Media Extended can now load metadata directly from local and remote media files:

  • Music player displays title and cover art from embedded file metadata
  • Auto-import metadata when adding media to your library, including:
    • Basic: title, duration, aspect_ratio, description, date
    • Music: creator, album, album_artist, track_number, tracks_total, disc_number, discs_total, genre, comment

metadata from file loaded in player and imported to vault

Hash Property Editor

Edit hash properties and media metadata through an interactive form, accessible via:

  • Link context menu
  • Command palette

hash property editor

Smart autocomplete now available when editing hash properties for both markdown links and wikilinks to media files.

hash property suggestion

Lazy Loading for Embedded Media

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.

Bug Fixes

  • Added setting to disable iframe/video embed handling (#525)
  • Fixed YouTube timestamp URLs inserted to notes missing native query parameters (#530)
  • Fix file uri embed incorrectly render "Please use internal embed instead of file url embed" notice.

Features

  • 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.
  • Improved hash props and embed support, see hash props and media embed size support for more details.
  • Media Library: support assigning media default properties per media, see frontmatter props for all available properties.
  • Active transcript cue is now stablely located near the top of the pane.
  • Support dark theme and obsidian custom theme color.
  • YouTube native timestamp / time range support
  • Improved commands and menu organization, see commands for more details.

Bug fixes

  • Media and subtitle files outside vault are now fully supported.
  • Fixed player current time / total time display sometimes not updating.
  • Improved plugin style and UX.
  • Fixed user interface quirks.
  • And many more...