[vlc-devel] Feature Request: Official Firefox Extension for Opening Direct Media Links in VLC
Landon
z at mynetblog.com
Sat Jul 18 10:47:49 UTC 2026
Feature Request: Official Firefox Extension for Opening Direct Media Links
in VLCSummary
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
Code and instructions:
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"
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
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"
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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20260718/f02f842a/attachment.htm>
More information about the vlc-devel
mailing list