[vlc-devel] Feature Request: Official Firefox Extension for Opening Direct Media Links in VLC

Steve Lhomme robux4 at ycbcr.xyz
Mon Jul 20 06:20:25 UTC 2026


Hi,

This seems interresting, however we don't use this mailing list anymore.
Can you open a feature request on 
https://code.videolan.org/videolan/vlc/-/work_items ?

Thanks

On 18/07/2026 12:47, Landon via vlc-devel wrote:
> 
>   Feature Request: Official Firefox Extension for Opening Direct Media
>   Links in VLC
> 
> 
>     Summary
> 
> I would like to request an official VLC extension for Firefox that adds 
> a clearly labeled *VLC* link next to direct media links on web pages.
> 
> The purpose is to let users stream a media URL directly in VLC without 
> changing the website’s original link behavior.
> 
> I already did this on my Debian Linux desktop by using the 
> instructions and code in this file <https://www.cdn.ay1.net/pub/auto- 
> open-media-links-in-vlc-debian-ubuntu-linux.zip>. Here is a video 
> <https://www.cdn.ay1.net/pub/auto-open-media-links-in-vlc.mkv>VLC 
> <vlc://open?url=https%3A%2F%2Fwww.cdn.ay1.net%2Fpub%2Fauto-open-media- 
> links-in-vlc.mkv> showing how it works.
> 
> One glaring example of why this is needed is that I don't know of any 
> browsers that can stream .mkv files!
> 
> Video example:
> 
> https://www.cdn.ay1.net/pub/auto-open-media-links-in-vlc.mkv <https:// 
> www.cdn.ay1.net/pub/auto-open-media-links-in-vlc.mkv>
> 
> Code and instructions:
> 
> https://www.cdn.ay1.net/pub/auto-open-media-links-in-vlc-debian-ubuntu- 
> linux.zip <https://www.cdn.ay1.net/pub/auto-open-media-links-in-vlc- 
> debian-ubuntu-linux.zip>
> 
> 
> For example, when a page contains a direct link to:
> 
>   *
> 
>     MP4
> 
>   *
> 
>     MKV
> 
>   *
> 
>     WebM
> 
>   *
> 
>     AVI
> 
>   *
> 
>     MOV
> 
>   *
> 
>     MPEG
> 
>   *
> 
>     TS or M2TS
> 
>   *
> 
>     MP3
> 
>   *
> 
>     FLAC
> 
>   *
> 
>     OGG
> 
>   *
> 
>     M3U or M3U8
> 
>   *
> 
>     DASH/MPD
> 
>   *
> 
>     RTSP, RTMP, MMS, RTP, or another VLC-supported network stream
> 
> the Firefox extension would add a bold *VLC* link immediately beside the 
> original media link.
> 
> The user would then have two separate choices:
> 
>   *
> 
>     Click the website’s original link to retain the website’s normal
>     behavior.
> 
>   *
> 
>     Click the added *VLC* link to open and stream the media URL in VLC.
> 
> Right-clicking the original link would continue to provide Firefox’s 
> normal *Save Link As…* option.
> 
> 
>     Why this feature is useful
> 
> Firefox can associate media file types with VLC, but that is not the 
> same as passing the original network URL directly to VLC.
> 
> When Firefox opens a downloaded file with an external application, it 
> may first save the file locally or treat it as a download. That is 
> undesirable when the user simply wants VLC to stream the original URL.
> 
> An official VLC browser extension could pass the actual URL directly to 
> VLC, allowing VLC to:
> 
>   *
> 
>     Begin playback while the media is still downloading.
> 
>   *
> 
>     Use its own buffering and seeking behavior.
> 
>   *
> 
>     Handle formats Firefox cannot play internally.
> 
>   *
> 
>     Play videos in a separate VLC window.
> 
>   *
> 
>     Avoid saving unnecessary temporary copies.
> 
>   *
> 
>     Support playlists and streaming manifests.
> 
>   *
> 
>     Preserve the website’s original download behavior.
> 
> This is especially useful for large video files, uncommon media formats, 
> direct file indexes, self-hosted media servers, archive sites, and pages 
> containing downloadable media links.
> 
> 
>     Requested behavior
> 
> The extension should scan web pages for links that VLC can reasonably 
> attempt to open.
> 
> When a supported link is detected, it should add a small but clearly 
> visible link beside it, such as:
> 
> *VLC*
> 
> The VLC link should preferably be bold so that it is easy to identify.
> 
> Example:
> 
> |example-video.mkv VLC |
> 
> The original link must not be modified or replaced.
> 
> 
>       Clicking the original link
> 
> The website should behave exactly as it normally would.
> 
> This preserves:
> 
>   *
> 
>     Browser playback.
> 
>   *
> 
>     Website-specific video players.
> 
>   *
> 
>     Normal navigation.
> 
>   *
> 
>     Explicit download behavior.
> 
>   *
> 
>     Authentication flows.
> 
>   *
> 
>     Right-click saving.
> 
> 
>       Clicking the VLC link
> 
> The extension should send the absolute media URL to VLC.
> 
> VLC should then open the network location directly rather than receiving 
> a temporary file downloaded by Firefox.
> 
> Conceptually, VLC would be launched with:
> 
> |vlc "https://example.com/path/video.mkv <https://example.com/path/ 
> video.mkv>" |
> 
> 
>     Media detection
> 
> The extension could identify media links using several methods.
> 
> 
>       File extensions
> 
> It could recognize common media filename extensions, including but not 
> limited to:
> 
> 
>         Video
> 
> |.3gp .avi .divx .dv .flv .m1v .m2t .m2ts .m2v .m4v .mkv .mov .mp4 .mpeg .mpg .mts .mxf .ogm .ogv .rm .rmvb .ts .vob .webm .wmv |
> 
> 
>         Audio
> 
> |.aac .ac3 .aiff .alac .amr .ape .au .dts .flac .m4a .m4b .mka .mp2 .mp3 .oga .ogg .opus .ra .wav .wma .wv |
> 
> 
>         Playlists and streaming manifests
> 
> |.asx .cue .m3u .m3u8 .mpd .pls .ram .sdp .smil .xspf |
> 
> The final list could be generated from the media and network formats 
> supported by VLC rather than being permanently hard-coded in the extension.
> 
> 
>       MIME types
> 
> The extension could also inspect the HTML |type| attribute when present.
> 
> Examples include:
> 
> |video/* audio/* application/dash+xml application/ogg application/ 
> vnd.apple.mpegurl application/x-mpegurl application/xspf+xml |
> 
> 
>       Streaming protocols
> 
> Links using VLC-supported protocols could also receive a VLC link.
> 
> Examples:
> 
> |rtsp:// rtsps:// rtmp:// rtmps:// mms:// mmsh:// mmst:// rtp:// udp:// |
> 
> 
>       URLs containing filenames in query parameters
> 
> Some websites do not end the visible URL path with a media extension.
> 
> For example:
> 
> |https://example.com/download?id=123&filename=video.mkv <https:// 
> example.com/download?id=123&filename=video.mkv> |
> 
> The extension could examine query parameter values and the visible link 
> text for recognizable media filenames.
> 
> 
>     Dynamically loaded pages
> 
> Many modern websites load or replace content after the initial page load.
> 
> The extension should monitor the document for newly added links and add 
> VLC links when new media items appear.
> 
> This could be implemented with a |MutationObserver|.
> 
> The extension should avoid adding duplicate VLC links when the page is 
> modified repeatedly.
> 
> 
>     Proposed |vlc://| protocol
> 
> The Firefox extension needs a secure and dependable way to pass the 
> media URL to the installed VLC application.
> 
> I suggest that official VLC packages register a custom protocol when VLC 
> is installed:
> 
> |vlc:// |
> 
> A VLC link could contain the encoded original URL in a form such as:
> 
> |vlc://open?url=https%3A%2F%2Fexample.com%2Fvideo.mkv |
> 
> The URL must be encoded so that characters such as these are preserved 
> correctly:
> 
> |& ? # % spaces Unicode characters signed URL parameters temporary 
> access tokens |
> 
> VLC’s protocol handler would decode the |url| parameter, validate it, 
> and open the resulting network location in VLC.
> 
> 
>     VLC installer integration
> 
> The official VLC installer or package should register the |vlc://| 
> protocol handler.
> 
> 
>       Windows
> 
> The VLC installer could create the appropriate registry entries so that 
> |vlc://| URLs launch VLC.
> 
> 
>       Linux
> 
> VLC could install a desktop entry declaring:
> 
> |MimeType=x-scheme-handler/vlc; |
> 
> The system could associate that handler with VLC using the standard 
> freedesktop desktop and MIME mechanisms.
> 
> 
>       macOS
> 
> The VLC application bundle could declare support for the |vlc| URL scheme.
> 
> This would provide consistent behavior across Windows, Linux, and macOS.
> 
> 
>     Security considerations
> 
> The VLC protocol handler should not execute arbitrary commands.
> 
> It should accept only a URL value and pass it to VLC as a media location.
> 
> The handler should:
> 
>   *
> 
>     Parse the |vlc://| URL safely.
> 
>   *
> 
>     Require an explicitly named URL parameter.
> 
>   *
> 
>     Decode the URL once using a standard URL decoder.
> 
>   *
> 
>     Reject unsupported or dangerous target schemes.
> 
>   *
> 
>     Pass the target URL as a single argument.
> 
>   *
> 
>     Avoid invoking a shell.
> 
>   *
> 
>     Avoid interpreting command-line switches embedded in the URL.
> 
>   *
> 
>     Use an argument separator such as |--| before the media URL where
>     applicable.
> 
> For example:
> 
> |vlc -- "https://example.com/video.mp4 <https://example.com/video.mp4>" |
> 
> The handler could allow known media schemes such as:
> 
> |http https ftp ftps sftp smb rtsp rtsps rtmp rtmps mms mmsh mmst rtp udp |
> 
> Local file URLs could be disabled by default or handled under a stricter 
> policy.
> 
> 
>     Privacy considerations
> 
> The extension should perform all media-link detection locally in Firefox.
> 
> It should not:
> 
>   *
> 
>     Send browsing history to VLC servers.
> 
>   *
> 
>     Upload URLs to a third party.
> 
>   *
> 
>     Collect analytics by default.
> 
>   *
> 
>     Inspect page content beyond what is necessary to identify links.
> 
>   *
> 
>     log signed URLs or authentication tokens.
> 
> If diagnostic logging is provided, query strings and fragments should be 
> omitted or redacted because they may contain temporary access credentials.
> 
> 
>     Authentication and cookies
> 
> Some media URLs require browser cookies, authorization headers, referrer 
> headers, or expiring tokens.
> 
> The basic implementation should pass the original URL as-is.
> 
> For sites where the URL alone is insufficient, a future advanced mode 
> might optionally provide:
> 
>   *
> 
>     The page referrer.
> 
>   *
> 
>     Selected request headers.
> 
>   *
> 
>     Cookies, only with explicit user permission.
> 
>   *
> 
>     A generated temporary playlist file containing VLC options.
> 
> However, this should not be necessary for the initial version.
> 
> The first official version could focus on ordinary direct media links 
> and public or tokenized stream URLs.
> 
> 
>     User settings
> 
> Useful extension settings could include:
> 
>   *
> 
>     Enable or disable the extension globally.
> 
>   *
> 
>     Enable or disable it on selected websites.
> 
>   *
> 
>     Choose whether the VLC link is bold.
> 
>   *
> 
>     Customize the label, such as |VLC|, |Play in VLC|, or a VLC icon.
> 
>   *
> 
>     Place the VLC link before or after the original link.
> 
>   *
> 
>     Select which media types are detected.
> 
>   *
> 
>     Enable or disable audio links.
> 
>   *
> 
>     Enable or disable playlist links.
> 
>   *
> 
>     Enable or disable direct streaming protocols.
> 
>   *
> 
>     Show the full target URL in a tooltip.
> 
>   *
> 
>     Open VLC immediately or show a confirmation prompt.
> 
>   *
> 
>     Add a context-menu option named *Open link in VLC*.
> 
>   *
> 
>     Add a toolbar action for scanning or opening the current page’s media.
> 
> 
>     Context-menu support
> 
> In addition to adding visible VLC links, the extension could provide:
> 
> |Open link in VLC |
> 
> in Firefox’s right-click context menu.
> 
> This would be useful when:
> 
>   *
> 
>     A site’s design makes it difficult to insert a visible VLC link.
> 
>   *
> 
>     The URL has no recognizable filename extension.
> 
>   *
> 
>     The user knows that an unusual link is a playable media source.
> 
>   *
> 
>     The extension fails to identify a link automatically.
> 
> The visible bold VLC link should remain the main feature because it is 
> faster and easier for pages containing many media files.
> 
> 
>     Expected workflow
> 
>  1.
> 
>     The user installs VLC.
> 
>  2.
> 
>     VLC registers the |vlc://| protocol handler.
> 
>  3.
> 
>     The user installs the official VLC extension from Mozilla Add-ons.
> 
>  4.
> 
>     A web page contains a link to a media file.
> 
>  5.
> 
>     The extension adds a bold *VLC* link beside it.
> 
>  6.
> 
>     The user clicks *VLC*.
> 
>  7.
> 
>     Firefox asks for permission the first time it opens the external VLC
>     handler.
> 
>  8.
> 
>     VLC receives and decodes the original URL.
> 
>  9.
> 
>     VLC begins streaming the media.
> 
> The original web link remains completely unchanged.
> 
> 
>     Existing proof of concept
> 
> I currently use a working proof of concept built from:
> 
>   *
> 
>     A Tampermonkey userscript.
> 
>   *
> 
>     A locally registered |vlc://| protocol handler.
> 
>   *
> 
>     A small URL-decoding launcher.
> 
> The userscript:
> 
>   *
> 
>     Detects common video, audio, playlist, and manifest formats.
> 
>   *
> 
>     Adds a bold *VLC* link beside the original link.
> 
>   *
> 
>     Converts relative links into absolute URLs.
> 
>   *
> 
>     URL-encodes the target before placing it in the |vlc://| link.
> 
>   *
> 
>     Detects links loaded dynamically after the initial page load.
> 
>   *
> 
>     Does not modify the website’s original link.
> 
>   *
> 
>     Preserves normal Firefox downloading and right-click behavior.
> 
> The local handler:
> 
>   *
> 
>     Receives the |vlc://| URL.
> 
>   *
> 
>     Extracts and decodes the original media URL.
> 
>   *
> 
>     Verifies that the destination uses an allowed protocol.
> 
>   *
> 
>     Launches VLC with the original URL as a single argument.
> 
>   *
> 
>     Does not use a command shell.
> 
>   *
> 
>     Avoids recording sensitive query parameters in its diagnostic log.
> 
> The proof of concept works very well on Debian and should use the same 
> general approach on Ubuntu and other Linux desktop distributions.
> 
> A previous version also worked on Windows using a Windows custom- 
> protocol registration and launcher.
> 
> 
>     Requested implementation
> 
> Please consider creating an *official VLC extension for Firefox* that 
> provides this functionality.
> 
> Ideally, the official VLC project would provide both parts:
> 
>  1.
> 
>     An official Firefox extension published under the VideoLAN or VLC
>     developer account.
> 
>  2.
> 
>     Native |vlc://| protocol handling included with VLC installation
>     packages for Windows, Linux, and macOS.
> 
> This would make the feature easy to install, safer, more trustworthy, 
> and more reliable than requiring users to install third-party browser 
> scripts and manually create operating-system protocol handlers.
> 
> The extension should add a bold *VLC* link beside every media link that 
> VLC can reasonably stream, while leaving the website’s original links 
> and download behavior untouched.
> 
> I believe this would be a very useful feature for users who prefer VLC’s 
> playback, codec support, buffering, audio controls, subtitles, hardware 
> acceleration, and network-streaming capabilities over browser playback.
> 
> 
> 
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel



More information about the vlc-devel mailing list