- Step back in the tab's history.
- Step forward in the tab's history.
- Reloads the current tab.
- Opens a new tab.
- URL opener form.
- List of the tabs closed in the current session.
- Close all currently open tabs.
- Global playlist.
- Download window.
- Open the manual in the default browser.
And next to the menu, the currently set player
is displayed. Right to it is the way the program passes the video URLs to the player. Clicking on these will cycle the corresponding options, just like their hotkeys
Prefs are separated to three distinct groups: Formats, Tools and Other.
is the program which can provide the list of the available formats at a video. It supports three template:
which is the placeholder for the YouTube link,
for the "command" (see right below) and
which is the placeholder for the filename where the file will be downloaded.
Format list dl. for formats dl.
is one of the "commands" for the Formats downloader
template. Up to v1.11.1 there was only this command for the downloader to download the format list, but since v1.12.0 the program supports subtitles too which can be downloaded either internally or with the downloader. For example, for
Subtitle dl. flag for formats dl.
is the other "commands", which is responsible for telling the downloader to download the subtitles. For example, for
will decide how the available formats' will be acquired. (Note: since v1.12.0 this also affects the downloading of the subtitles too.) It can be done:
If video page load, select format
- Internally: As in: the program will do itself.
- With formats downloader: For example with
yt-dlp, see above.
- From the params list: See later at Edit params.
means, that when a video page is opened, then the specified format should be selected in the format selector on the video page. The specified format can be:
Ignore formats with these codecs:
- None or last selected on cached page: If page is loaded for the first time or it is forced to reload, nothing will be selected and the last manually selected will be selected again if
- Force last selected even on reload: Always selects the last manually selected, even on reloading a page, assuming if there was a manual selection, otherwise it selects nothing.
- By this string: Iterates through the formats and if the string what was specified next to this combobox is found in a format, then it selects that format.
- Best for this throttled bandwidth (kB/s): Iterates through the formats, adds their audio and video bitrate together and selects the highest one out of those which are under the specified value next to this combobox. With this option, the user can avoid throttling, by setting the bitrate to the current throttled downloading speed. (Note: 0 means infinite.) Since v1.10.0, the
n signature is deciphered by the program, so throttling should not happen, but if it does, with this option, it can be workarounded until a fix is arriven.
If the format is selected by either a string or bandwidth, then the selector will ignore any formats which codecs' name contains these strings, separated by a comma character. (Ignored if the formats are obtained from the params list.)
Ignore formats above dimensions of:
The program can filter out formats during selection by resolution too. It handles width and height independently, so it can be limited by just one or both. (Also ignored if the formats are obtained from the params list.) The following options are available for both:
Filter ignored formats from list:
- Unlimited means no filtering by this dimension.
- Screen will take the corresponding dimension of the screen for the limit.
- Custom will set the limit by the textbox next to the combo box.
If checked, the dropdown list on the main panel will not list the formats which are ignored during selection.
is the selected player from the playerlist which can be edited in Edit players
Video URLs passed to player:
Whenever a video playback is starting, it is done by passing the video's URL to it, however, since v1.5.0, it can be set, which one:
Video URLs passed to downloader:
- Original YouTube link: The normal URL of the page (for example: https://youtube.com/watch?v=hcdrFuM-wH0). If the player can handle YT URL-s (for example: with
yt-dlp or by itself), then this one can be used. (Until v1.5.0, it was the wired-in approach.)
- Direct stream link, extracted from the page: Since v1.5.0, YTFE can extract the direct stream link from the page, (the same can be achieved with
yt-dlp with the
'--get-url' parameter) and thus, needs no external tools to supply the stream to the player anymore.
Similarly as the other passing option, this is responsible for which URL is passed for downloading, but the options are a bit different:
- Original YouTube link, passed to A/V downloader: Works as the same as it does with the player, but passes the link to the tool which is specified at A/V downloader. (Until v1.5.0, it was the wired-in approach.)
- Direct stream link, internal download or copy with ext. dl.: Works almost as the same as it does with the player, but if the Copy download command is used, it is passed to the External HTML/IMG downloader, and unlike at the player, if download is initiated, it will be done internally. (Warning: This latter function does not work under OpenBSD at all.)
is the program which can download clips from a YouTube URL. The downloader command line acknowledges three templates:
with identical functions as before and - optionally -
which is the placeholder for the video's format part of the command, with the first part being the format flag
(see directly below) and the second part being selected in the format dropdown at the main panel (the video will be downloaded in that format).
Format flag for A/V downloader
is the format flag for the set A/V downloader tool. (For example:
. (Note the trailing space!)) Important:
the separator char (what separates the flag from the actual header string) must be included! (As shown in the example, this is space for
Do not ask for TARGET by dialog:
When copying the download command
in the tab menu
, normally a file dialog will pop up making it able to choose the download location for the assembled download command. With this option, the dialog can be skipped and the filename which will replace the
template will be
is the HTTP POST-capable tool which can be used for paging videos and search results. (Not channels!) It supports three templates:
with identical functions as before and
which is the placeholder for the HTTP POST query's body. Warning:
will be replaced with a stream which contains quotes (
), so it should be encapsulated by apostrophes (
Use external pager
will force YTFE to use the external pager for paging videos and search results and the external HTML/IMG downloader
(with the headers, see directly below) for paging channels. This is sometimes required, when the internal downloader cannot function properly because of SSL problems or FreePascal's HTTP client crashes under OpenBSD. If every page fails to load, enable this. (But make sure the path is set correctly.)
External HTML/IMG downloader
is the program what is capable of downloading content from URL-s. The placeholders and their functions are the same as they are at the A/V downloader, except there is no
here. If not set, by default YTFE will search for
. In this order.
Header flag for ext. downloader
will specify the flag which can be used to specify additional HTTP headers. (For example:
(Note the trailing space!) or
.) This is needed for external paging at channels. (Only channels!) Unlike the paging at videos and search results which are paged with HTTP POST queries, the channels are paged via HTTP GET queries, with additional headers, so the program can simply use the external downloader, but needs to be able to specify those headers. Important:
the separator char (what separates the flag from the actual header string) must be included! (As shown in the example, this is space for
and the equal sign for
Use external HTML/IMG downloader
will force YTFE to use the external HTML/IMG downloader, instead of the internal one. This option exists for the very same reasons as the one before: if the internal HTTP client fails, external tools can be used.
Since v1.12.0 the program is also able to merge the videos which are stored on YouTube as separate video and audio streams, via the program set by this option. (For example:
.) It supports the following templates:
; these will be replaced at merging with the audio, video and output files' name. (DOH!)
On 2022.08.11. Evil Corp
has introduced a new version of their "yuck-cipher"
, GNOME JS
- for running the cipher and decipher the n
binaries in the same directories as the other external tools, plus in
Reformat cipher dates to standard:
As explained above, QuickJS is currently unable to deal with non-standard-formatted dates, such as
"Wednesday December 31 1969 16:01:18 PST"
. With this option these dates will be parsed and reformatted to be standard-compliant, such as
is the directory where the temporal files will be stored. It needs to be readable and writable.
sets the lifetime of cached pages in seconds. Any cached page older than this time will no longer be considered valid and it's re-download will be forced.
empties the cache. The cache size is displayed beside the button.
is the location of the log file. (DOH II!)
enables or disables logging into the file specified in log file
. (DOH III!)
redirects the player's output from the main program's output to a logging window. See hotkeys for opening the logging window.
Action on close
is the operation the frontend will perform when it's main window is closed. It can be the following:
Hide when minimized
- Minimize will just minimize the window, exactly as if the minimize button was clicked.
- Close without question will close the window along with the program.
- Ask if minimize or close will ask if it should minimize or close, but also can cancel the closing.
- Confirm close is the same as the other, but this asks if should close the window and terminate the program.
hides the taskbar entry when the program window is minimized,
so it will only shown among the system tray icons. Otherwise,
the taskbar entry will be visible.
Quit hotkey/Tray quit quits without confirm
determines if the quit hotkey (Ctrl + Q) and the tray menu's quit option will ask if the program should quit or not. (DOH IV!)
Scroll tab bar to new tab
decides if the tab bar should scroll to the newly opened tabs or not.
Prepend user to bookmark titles
will put the uploading user's name before the title, when adding a video to the bookmarks. Note: This will not affect bookmarks already in the bookmark list.
is the amount of time in milliseconds what the program will wait at HTTP queries before stopping the query. Zero means disabled timeout.
will be the selected ordering of the searches by default. The search lists can be ordered by relevance
, upload date
, view count
will preserve and reuse the opened connections to YouTube, even after all the currently needed files (HTML, JSON, XML, images, etc.) for the current video/search page/channel has been downloaded. Theoretically, this should sped up new page loads on VERY
old/slow machines (for instance when playing a playlist and switching to a new video), by sparing the time what rebuilding the connection would need.
Show page type on tab
will show the same prefixes on the tabs just as it is visible in the different lists; see them at Playlist
Max. chars on tab
will specify how much characters will be displayed on the tab, before it will be truncated. By default, it is 24, the minimum is 16, the maximum is 256.
Check for update at startup
will - nomen est omen - make the program check at startup if an updated version is available and throw an information dialog if it is. (Warning: Do not use this under OpenBSD.
will - also nomen est omen - check instantly if an updated version is available and throw a dialog with the result. (Warning: Do not use this under OpenBSD.
Saving and resetting
saves the current preferences. If everything is OK, then the label beside the buttons will display All OK.
The following errors can happen:
- Cache read/write fail, if it does not exist, or it is protected.
- Player path error, if it does not exist.
- Merger path error, if it does not exist.
- A/V downloader path error, if it is enabled, but does not exist.
- External HTML/IMG download path error, if it is enabled, but does not exist.
- External format downloader path error, if it is enabled, but does not exist.
- External pager path error, if it is enabled, but does not exist.
will load the default configuration and re-detects the external tools. Note: to keep the restored configuration, the user must click Save
manually. (This is a security measure which prevents users accidentally resetting their configurations for good
is the label what will be displayed in the playerlist in Prefs
is the command line which will be executed when the play command is given. It knows the
works as the same before, except it can accept a direct stream link too, not just a YouTube link.
is the placeholder of the external audio stream: whenever the player's URL passing is set to direct stream link and a quality is set which is not a single stream, but a separate video and audio stream, this template will be replaced with the External Audio Stream Flag
(see directly below) and the direct stream link.
works as it does at the other parts; it's flag is specified at the Format flag
(see directly below).
will be replaced with the Subtitle
flag, plus the external file (see directly below).
will be replaced with the Title
flag, plus the video's title (see directly below).
(as in: External Audio Stream Flag
) is the flag which will be passed to the player in the
(as in: Format flag) is the flag which will be passed to the player in the
specifies the flag for loading EDL
URLs. This is needed, because EDL URLs are much bigger than the few kB-s (
) what a command line can handle. For MPV this flag is
. However, up to (and including) MPV 0.33.1, MPV cannot load EDL URLs bigger than 512 kB due to an undersized line buffer (see this git commit
and this issue
) and later versions too, are only able to load EDL files sized up to 2 MB (unless they fixed that since). The workaround is to use this script
by copying it into
and then specify
in this field. (Specifying
too is important as it will force the program to run despite no input files specified.)
(as in: Subtitle
) specifies the flag for adding an external subtitle for the video. Subtitles are downloaded automatically and passed to the player via this flag. This will be passed to the player in the
specifies the flag for setting the player's window's caption. Used to set the caption to the video's title. Subtitles are downloaded automatically and passed to the player via this flag. This will be passed to the player in the
will add the set parametrs to the list under Name
will overwrite the selected entry with them and Delete
will remove the selected entry.
will move the selected entry one place up or down in the list.
This editor is responsible for the additional optional format parameters which can be passed to the player when playing a video. It can be used to select the format of the video to be played.
The editing works exactly the same way as in the players' editor
, but Param
do not use any templates, it is simply the numeric code of a format. Also,
is a fixed entry, it cannot be edited or removed.
Several URLs can be opened at once, by adding them in this list and clicking Open
The program accepts several types of YouTube URLs, as shown in the image.
Search in lists
In the Global playlist
, the Bookmarks
, the Closed tabs
, the History
and the local playlists
, the lists can be searched.
The dropdown offers the macthing method, the textfield contains the searched string; the program can search in the lists for any entry which begins
with the searched string.
The two arrow will hunt for the previous or the next match.
Tabs can be moved by drag and drop and closed by the button on their left side.
By clicking on a tab with right button, a menu will pop up with the following choices:
- Copy URL will copy the current tab's full URL to the clipboard.
- Duplicate tab will open a new tab with the same URL as the current.
- Bookmark will add the current search, channel or video to the Bookmarks.
- Add to playlist will add it to the Global playlist. Note: Not works for search and channel tabs.
- Copy download command will copy the assembled download command to the clipboard. (As in: the A/V downloader command with filled templates, specified in Prefs or (since v1.5.0) the external downloader command, if the URL passing for downloads is set do direct stream.) Note: Not works for search and channel tabs.
- Copy play command will do the same, but with the selected player (specified in Edit players) Note: Not works for search and channel tabs.
- Block user will add the opened video's, playlist's or channel's user to the Blacklist and will filter out the user's videos from all tabs. Note: Not works for search tabs.
- Copy user's channel's URL will copy the URL of the user's channel to the clipboard. (DOH V!) Note: Not works for search tabs.
- Open user's channel will open the user's channel on a new tab. (DOH VI!) Note: Not works for search tabs.
Unlinke browsers, YTFE does not shrinks the tabs until they are completely unreadable and indistinguishable from each other, but shows a window sized portion of them which can be scrolled by the scrollbar under them.
The leftmost textfield directly under the tabs' scrollbar is the search bar. By typing something into it and hitting Return, the program will send the search query to YouTube and display the results.
Next to it, is the current ordering of the results. By default they will be ordered as told in the Prefs
. It will reload the page when changed.
are the buttons for the previous and next page. Unlike the "old" HTML YouTube, the "new" JS/JSON one only supports
Load more content
, which means in practice that there is no free paging, it can be paged forward only and only one page at once. But the program caches all fetched pages, so it makes possible to page backward and to select any already fetched
page with the textbox between the two buttons. (Hit enter inside, to go to the selected page.)
By clicking on an image with right button, a menu will pop up with the following choices:
- Open will jump to that video. (Equivalent to a click with the left button.)
- Open in new tab will open a new tab with that video. (Equivalent to a click with the middle button.)
- Copy URL will copy the video's URL to the clipboard.
- Block user will add the video's user to the Blacklist.
- Copy user's channel's URL will work as it does in the tab menu, except that it is operating with the video entry, not the tab and therefore it does work with searches.
- Open user's channel will work as it does in the tab menu, with the same exception as the copy option.
The images behave the same way as in search. (Left click open, middle click opens in new tab, right click pops up menu.)
The buttons beside the textfield were changed, now they are two groups of them.
The first group belongs to the video, they are always there.
- Plays with the player selected in the Prefs.
- Stops the current player. Normally it does not needed, as the program detects if the player exited. But if the player freezes or something else abnormal happens, this button will forcefully stop the player.
- Downloads the current video. A save dialog will pop up and then the set downloader program will download the video to the path, given in the save dialog. The progress can be viewed in the Download window. Note: this will automatically put the selected subtitle beside the video, see below for further options.
- Opens the description window, with the details of the video.
Right clicking on the download button will pop up a menu with the following entries:
- Download subtitle will only copy the selected subtitle from the cache to the selected target.
- Download video will download the current video.
- Download both will do both. It is equivalent to left clicking this button, but the option is listed, to prevent confusion.
The second group belongs to the playlist, if the video is part of a playlist. They only appears then.
- Opens the local Playlist window.
- Steps one video back in the playlist.
- Steps one video forth in the playlist.
- Plays the list from the current video.
- Loop Will loop the playlist: it will restart from the first video, when the last one is done.
The upper drop down box at the right edge contains the additional format parameters set in the Param editor
. Here it can be selected, which one will be passed to the player or downloader by substitutioning it into the
placeholder. Alternately, if Internally
or With formats downloader
is selected in Obtain formats
in the Prefs
, then it will contain the available formats for the current video (but for the latter one, an external tool will be needed to download the formats, like
). Note: If no format selected, at play, the program will automatically play the best available.
The lower drop down box at the right edge contains the subtitles for the video. The program automatically downloads them and if selected, the selected file will be passed to the player via the subtitle flag, set in the Player editor
Here any of the elements can be opened by a double click.
will save the playlist into a file, for import purposes in the Global playlist
will save only the URLs from the list.
The prefixes are the same in all lists and can be the following:
- S Search
- P Playlist
- V Video
- H Hybrid (as in: both a playlist and a video entry)
- C Channel
By right clicking on the list, a menu will pop up with the following entries:
- Open will open that video on the actual tab. (Equivalent to the double click on the entry.)
- Open in new tab will open a new tab with that video.
- Copy URL will copy the video's URL to the clipboard.
- Copy title will copy the video's title to the clipboard.
Note: This menu is available in the Global playlist
, the Bookmarks
, the Closed tabs
and the History
The following hotkeys can be used:
|Opens the manual.
|Ctrl + B
|Adds the current tab to the Bookmarks.
|Ctrl + D
|Duplicate tab. Opens the current search or video again on a new tab.
|Ctrl + E
|Switches between the blacklist being enabled or not.
|Ctrl + F8
|Empties the cache.
|Ctrl + I
|Changes the way the program passes the video URLs to the player.
|Ctrl + L
|Opens the player's log window.
|Ctrl + P
|Switch to next player.
|Ctrl + PgDn
|Select next tab.
|Ctrl + PgUp
|Select previous tab.
|Ctrl + Q
|Quit from the program.
|Ctrl + R
|Reloads the current tab.
|Ctrl + S
|Shows the Summary window.
|Ctrl + Space
|Plays the currently opened video.
|Ctrl + T
|Opens a new tab.
|Ctrl + U
|Gets URLs from the clipboard and opens them as if they were pasted into the URL opener.
|Ctrl + W
|Closes the current tab.
|Ctrl + Z
|Opens the last closed tab again.
|Ctrl + Plus
|Magnify the surface by +10%.
|Ctrl + Minus
|Magnify the surface by -10%.
History and Closed tabs
and Closed tabs
are simple lists with visited entries, whiches can be double clicked for opening again. Both orders the entries from the last to the first. The last closed tab can be reopened by Ctrl + Z
as described in the Hotkeys
The only two difference between them (aside the triviality that History
contains the opened URLs and Closed tabs
contains the closed tabs), that History
preserves it's content, while Closed tabs
does not; it'll be always cleared at exiting. History
can be cleared manually with the Clear
The other difference is the Save URLs
button, which will save the URLs from History
into a file.
Bookmarks as a list behaves, exactly like Closed tabs
, the entries can be opened in a new tab by double clicking. Adding entries to it can be done by Ctrl + B
or from the tab menu.
, the Bookmarks
are preserved too, but unlike History
, it cannot be cleared. Entries can be removed by the Delete
button. (Multiple selection is available.)
saves the current list to a location specified by the save dialog, Import
can add an external list to the blacklist, or overwrite it with it. Save URLs
will save only the URLs from the list.
Checkboxes can be used to select what type of entries will be shown.
Blacklist hunts for strings in the video's User
the very same ways as the list search
works. If the hunted string can be found in the way Relation
specified in any of the checked fields, then video will not be displayed in the videolist.
adds the set data to the list, Store
overwrites the selected entry with it and Delete
works the very same way as at the bookmarks.
works exactly the same as the local playlists
, exactly this can be edited or loaded.
The editing works as the same way as in the Blacklist
, except, here the entries can be moved up and down with the Up
buttons. (Multiple selection is available here.) Also while appending and overwriting was both done with Import
, here it is done with Append
clears and shuffles the playlist. (DOH VII!)
- as always - will save only the URLs from the list.
The download window always contains the actual tab's downloading progress. If an external program used, the
of it will be displayed.
When the program runs for the first time, it will automatically show this. Elseway, it can be shown by Ctrl + S
. It contains some collected information about the settings' validity and some suggestion if problems occurred.
Command line URL passing
The program accepts URL-s passed from command line, even if it is already running: the new instance passes the URL-s to the running one and then exits. There is no any particular template for it, nor any special argument, the URL-s simply can be passed to the binary, separated by space.
If one of the parameters is
, then either if it is the first instance or a new one, the main window of the program will be shown. If no arguments were given to the second instance, then it will send the
parameter to the first.
Alternatively, the main window can be made visible, if the process receives a
(Linux: 10, FreeBSD/OpenBSD: 30, Solaris: 16) signal.
Q: I started the program, but no window came up.
A: If a tray is present, then check for the program's icon there and click on it. If there is no tray, then check the tasklist if the program is running. If yes, then it's minimized to the tray (which is not present). Start it again and the new instance will bring up the main window of the first. If the program is not running, then start it from terminal and check the error messages.
Q: A video page came up empty, with only
No related videos found. shown and all of the video's properties are blank.
A: YouTube tends to vary it's interface all the time and sometimes the user can run into a server with new data structures which is not yet handled in YTFE. These occurs "randomly", so they are hard to catch. Hit Reload
and it will probably be right next time. Or
, maybe your blacklist simply hid the videos; check the Description
panel and see how much was blacklisted. (Note: The video still can be played when these happens.)
Q: I always get an SSL error when try to search or open a YT link.
A: Use an external downloader and pager, as it explained in the prefs
chapter. And please report this, because this should be fixed since FreePascal 3.2.0...
Q: I use OpenBSD and i get a socket error when i try to search, open a YT link or view the next page or download a video by using direct URL passing.
A: The workaround is the same as in the previous answer, but unlike that, this is a known bug not yet fixed in FreePascal, so no need to report it. Just to clarify: no internal HTTP functions are working under OpenBSD: https://forum.lazarus.freepascal.org/index.php/topic,52092.0.html
Q: I use OpenBSD and at exit i get a division by zero error.
A: The program does not divide anything at exiting at all, this is a bug in the FreePascal/Lazarus ecosystem.
Q: I opened a video's page, with URL passing set to direct in the prefs, and after a few hours, if i try to play or download the video from the still opened tab, then it does not work.
A: All direct YT URL-s have an expiration. Reload the page.
Q: Playing or downloading a video is horrendously lagging/slow.
A: YouTube tries to protect it's direct media links with a very disgustingly ciphered
YTFE v1.20.4 is written by TCH in 2017-2024.
Changelog is available here.
Report bugs, make requests, curse the programmer by mail at firstname.lastname@example.org
or on our guestbooks at http://oscomp.hu