[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