Turbo Download Manager (3rd Edition) A pure JS multi-threading download manager for web
Support Development
PayPal ● 
Bitcoin Address: 1sM2BrTH8BRgt3quiASK8TmYSafutNvDo
Dogecoin Address: DFdSGpGMZ2EZVkjyqNrYCEysK92DFPonx4
"Turbo Download Manager (3rd Edition)" is a multi-threading download manager with built-in support for downloading media and image files. The extension is capable of getting remote files in parallel segments to increase the downloading speed. Also, there is an internal interruption control to resume downloads on slow or bad-quality networks. This extension offers a complete download manager user interface and well as download observer and multi-threading supports all in a single package. For the extension to support multi-threading, your browser needs to support FileSystem APIs. If these APIs are not yet supported, the extension redirects your downloading jobs to the internal download manager.


  1. What is the "Turbo Download Manager (3rd edition)" extension?

    This is the third edition of the "Turbo Download Manager (TDM)" extension. It is heavily dependent on new methods that are introduced in ES6 such as the streaming fetch API and async calls. The extension is capable of downloading a single file from multiple threads. The chunked binary data is stored into the temporary internal IndexedDB storage. Theoretically, since each thread act as a separate downloader, the downloading speed increases when the number of threads increases. When the file is fully fetched from the server, the segments are merged and the file is saved in the default download directory of your browser. This extension uses the native API to move the chunked data from the internal storage to the default download directory hence the record of your download will be kept by your browser similar to a normal download that is fetched directly by the default download manager of your browser. At this point, the extension is capable of reading data from a server and writing to the internal storage at up to 80Mbytes/s. If for any reason you have access to a faster network, it is recommended to use the default download manager of your browser. Since the extension stores data in chunks, the memory fingerprint of the extension is always acceptable even if a very large file is being downloaded.

  2. recommended "Gmail™ Notifier (Developer Edition)" extension for Chrome, Firefox, and Edge browsers

    A browser extension to get notified (desktop notification and sound alarm) of unread emails on one or more search queries. This extension supports multiple accounts and does not require credentials to operate. Read more here.

  3. What does happen if in the middle of a downloading job my browser crashes or the server is unreachable?

    This extension stores binary files in chunks, so in case of a crash, the data is still available in the internal IndexedDB storage, and the extension restores the data after a restart. In case of a network issue, the extension tries to connect to the downloading server a few times (which is configurable) and if no data is received from the neither of running threads, the downloading job goes to the interrupted state. No worries though, you can always use the retry button to manually force the extension to retry one more time. As of version 0.5.3 release, the extension does not delete fetched data unless the remove button is pressed by the user. So you can retry as many times as you would like to finish a downloading job even on a very unstable network.

  4. What is the default number of threads that this extension uses, and what is the recommended value?

    This extension by default uses three threads for each downloading job, which is the recommended value and can increase the downloading speed up to three times. There are situations where a server does not support range downloading, and in these cases, it is not possible to download with multiple threads. If such a case occurs, the extension uses the built-in download manager to fetch the requested file. Note that each thread act as a separate job, and hence increasing the number of threads although increases the downloading speed, it increases the disk access too. Also, each thread allocates additional memory, which increases the total memory usage of the extension during the job fetching. On default configuration, this extension uses three threads, and each fetch method downloads up to 100MBytes of data, which means the extension uses about 300MBytes for each active downloading job. If the user requests to download a job with for instance eight threads and the file is big enough, the memory usage could be about 800MBytes. So use higher threads only if the memory allocation is not an issue for you.

  5. When a job is restored, the interface does not show the size of downloaded segments anymore. Why is this happening?

    When your browser restarts, this extension checks the internal storage for uncompleted jobs. If a job is detected, only its metadata is retrieved from the storage and no more (to prevent excessive disk access on startup). This is the reason why the interface cannot calculate and display the downloaded segments at this point. When the job is resumed by the user, the extension scans the internal storage and constructs the segments and the downloader only fetches the remaining segments for you.

  6. What is the meaning of the "store" keyword in the context menu items of this extension and the "add a new job" interface?

    This is a new option that is introduced on v3 edition, which uses the synced storage of your browser to keep the links that you might want to download later. You can simply add as many links as you would like into this list and download them later on any machine that is synced with the current machine. To access all the stored jobs, simply open the extension's popup interface. Note that when a job from this list is sent to the downloader, it is erased from the synced storage.

  7. How can I download media files on the current page?

    In v3 (v0.5.3 or later), when a media file is detected on a page (when a media file is about to play, it propagates an even which triggers this download manager to collect the media link), the browser's toolbar icon becomes colorful. You can see the list of collected media links by using the "Extract Media Links" context menu item on the page context. Alternatively, open the toolbar popup and press the "Add new Job(s)" button, and the extension lists all the downloadable media links on the page.

  8. Can I use This extension to download all segments of an M3U8 stream?

    As of version 0.5.6, the "Add Jobs" view supports the parsing of M3U8 streams. When a new M3U8 link is added, the extension gets its content and parse it. If there are different playlists in the manifest file, the user will be prompt to select a playlist. If file segments are detected in the playlist, the extension displays the total number of segments that will be downloaded and marge together. Note that M3U8 parsing is only available in the "Add Jobs" view. So make sure to add your M3U8 jobs from this view and not directly.

  9. What is the "Merge and Download" button in the "Add Jobs" view?

    This button considers all the links in the "Download List" as different segments of a single file. The extension downloads each link and appends its binary content to the end of the previous link until all links are fully downloaded. This is useful to get chunked data and merge them as a single file. Note that you need to only have the segmented links in the "Download List" section and the links need to be in the correct order. It is recommended to use the M3U8 feature to download a segmented stream instead of this feature.

  10. It seems like v0.5.6 is not as powerful as the previous versions on detecting media streams in webpages. How can I fix this?

    As of version 0.5.6, this extension optionally uses web request API to monitor web activities and offers the user with media links for each page. By default, this feature is not active. You need to go to the options page and grant the extension to use this feature. Even without this permission still, the extension can grab media streams if they get played but with this feature the media detection improves.

  11. I have a local M3U8 file and would like the TDM to download these links as a single binary file, but TDM does not support adding a local file. Is there any way to ask the extension to download this list?

    Open the M3U8 file with a text editor and copy all the links to the clipboard, now open the "Add Jobs" view in a browser tab that does not have detected jobs. The extension extract links from the clipboard and adds them to the "Download List". Manually review the list and remove any entry that is not part of the M3U8 file and then press the "Merge and Download" button. This button considers all the links as chunks of a single binary file.

  12. I am an expert user and would like to alter internal configurations of this extension to optimize it for my usage. What configurations are available?

    It is not recommended to play with the internal preferences. However, it is doable. Here is the list of all configurations that can alter in edition 3 version 0.5.3:

    • absolute-max-segment-size: The maximum range size of each thread. When a range is calculated it is always smaller than this size. The value is in bytes and the default value is 100MBytes.
    • max-number-memory-chunks: When chunked data is received from a server, it is stored in memory until the disk is ready for writing the binary data. If the size of the memory array increases from this value, all the network activities are blocked (to prevent more memory allocations) until the disk writing is finished and the disk state is ready. The default value is 500 which means up to 500 binary objects can be stored in the memory. Note that in case of a crash, this data will be lost.
    • max-number-of-threads: This is the maximum simultaneous number of threads that a downloading job can have. The default value is 3. When a thread is finished the downloader checks this value and decides whether a new thread should be added or not.
    • max-retires: This is the maximum number of sequential errors that can occur without any byte being fetched from the server before the downloading state changes to the "interrupted" state. The default value is 10.
    • max-segment-size: This is the size of each thread (range) by default. The default value is 100MBytes. Note that for a small file, the range size can be smaller. But for a large file, the range size is this value unless it is altered later by "overwrite-segment-size".
    • max-simultaneous-writes: This is the maximum simultaneous IndexedDB write handles that the extension uses for a job. The default value is 3. This means the extension uses up to 3 write handles to write the memory chunks to the IndexedDB database.
    • min-segment-size: This is the minimum size of a range in bytes. The default value is 100KBytes. So if a file is for instance 200KByes and the number of threads is set to 3, because of this value, only 2 threads are created.
    • overwrite-segment-size: if true, the "max-segment-size" configuration is determined by file size divided by "max-number-of-threads" after headers are resolved.
    • speed-over-seconds: Number of seconds to be used to calculate the current downloading speed. The default is 10 seconds.
    • use-native-when-possible: If a downloading server does not support multi-threading, when this option is true, the native download manager handles the job instead.
    • max-file-size: This is the maximum filesize that the extension allows multi-threading. Files larger than this value will be sent to the native download manager.
    To set these configurations, use the following code in the backgorund page of the extension and then restart the extension.
      'internal-get-configs': {
        'absolute-max-segment-size': 100 * 1024 * 1024

  13. I am a developer and I would like to send jobs to this extension. Is it possible?

    As of version 0.5.3, this extension supports receiving jobs from other extensions in the following format:

    chrome.runtime.sendMessage(THS_EXTENSION_ID, {
      method: 'add-jobs',
      jobs: [{
        link: 'http://www.example.com',
        threads: 3
    }, resp => {
      if (!resp) {
        console.log('The TDM is not installed');
    To store links without downloading use:
    chrome.runtime.sendMessage(THS_EXTENSION_ID, {
      method: 'store-links',
      links: ['http://www.example.com']
    }, resp => {
      if (!resp) {
        console.log('The TDM is not installed');

  14. [deprecated] What is the "Turbo Download Manager (v2)" extension?

    This is the WebExtension port of my "Turbo Download Manager" Firefox extension (or Chrome app)

    This extension has four main modules: 1. Download manager popup (to monitor downloading jobs initiated either from this extension or from the built-in download manager). 2. Download dialog window (to add multiple links and to collect images from the opener tab), 3. Multi-threading internal module (downloads.js) to handle multi-threading jobs. 4. Download observer module to monitor video and audio sources that are requested by each page.

    To monitor ongoing downloading jobs from either this extension or the built-in download manager click on the toolbar button to open the popup. From this popup, you can pause and resume all downloads and see the number of segments for multi-threading jobs. Note that this is the only place you can monitor and stop multi-threading jobs. No multi-threading job appears in the default download manager of your browser until it is fully fetched.

    To request new downloading jobs, you need to open the "Download dialog window" which can be accessed either from the "Download manager popup" or from the right-click menu item over the toolbar button. This window can be used to initiate multiple downloads simultaneously with a custom number of threads. Note that if a single thread is selected for a download, this extension redirects the request to the internal download manager (there is no advantage of getting a single-threaded file with the internal "downloads.js" module). So to initiate a file with the built-in download manager simply reduce the number of threads to one. You can define the default thread sizes for the image, audio, and video formats from the options page.

  15. How does the multi-threading work?

    When a new job is requested, the extension inspects the server and ensures the multi-threading is supported by the server. If the multi-threading is not supported, your download will be handled by browser's built-in download manager. Otherwise, the total size of the file is calculated and then the file is split into different segments. Next, the extension asks your browser to allocate the same disk space locally. If this space is available on your system, then all segments are initiated one by one. When all segments are completed successfully the file is moved from the internal storage to the user's defined Downloads directory. This step is handled by your browser built-in download manager (copy the file from internal storage to user's Downloads directory). This helps the browser to track the downloads that are handled by this extension so there is no internal module to handle the user's history! Also, other extensions can access the downloads history like normal downloads. Note that in oppose to the built-in download manager, the temporary file is not being created in the Downloads directory since the extension has no access to this directory. Instead, the internal storage is used.

    Note to the Firefox users: at the time of writing this documentation, Firefox browser still does not support "FileSystem" APIs that are required to handle file creation and segmented writing. This extension has a wrapper module to use "IndexedDB" APIs but this method is not efficient so it is disabled. As soon as the "FileSystem" APIs get supported by Firefox, the extension automatically uses them and multi-threading will work.

  16. What's new in this version?

    Please check the Logs section.

  17. How can I add a new downloading job?

    You can add a new job from either right-click context menu over a link, video, audio or image element or by adding the actual downloadable links to the "Download dialog window" which can be accessed from the right-click context menu over the toolbar button. When a download is added using the "Download dialog window", you can customize the number of threads for each job individually, however, when a download is initiated with the context menu items, the default threading number is used based on the mime type of the link.

  18. [deprecated] How can I download all images on a page?

    First, switch to the tab that you want to grab images from. Now open the "Download dialog window" from the right-click context menu over the toolbar button. There is a button in the UI to search for images loaded in the opener tab. Click and wait until all images are grabbed. You will see the list of all images in the UI. Select those images you want to download and press the "Download" button.

  19. [deprecated] How can I download all media (video and audio) files from a single page?

    This extension has an internal module to track all media sources on a page. You can see the number of detected sources in the badge area of the toolbar button (for the current tab). If the "Download dialog window" is opened from a page with the badge number, all the detected sources will be listed in the window. If a page has multiple sources and you are confused about how to get the last media link, first right-click on the toolbar button and press the "Reset" item. Now start the track that you want to have access to its source. when the toolbar button badge text is updated, open the "Download dialog window".

  20. [deprecated] What is the meaning the toolbar badge text?

    It displays the number of audio and video sources that this page is used (played or cached). You can use the right-click context menu item to reset the number. To see the list, open the "Download dialog window". This window has a copy to clipboard option to copy all the detected links to the clipboard

  21. How can I monitor my downloading jobs?

    You can left-click on the toolbar button to open the "Download manager popup" view. In this view, all the downloaded files or in-progress ones are listed. This is the only place you can monitor multi-threading jobs as well are the built-in ones.

  22. What is the recommended number of threads?

    If the file is not too big, use two threads and if it is big use three threads.

  23. I accidentally added a large list of downloads to the extension by mistake. It is possible to erase all of them at once?

    Yes, Go to the extensions manager window of your browser and restart the TDM extension to stop all the jobs. Now open the popup and press Ctrl + Left-Click on Windows or Command + Left-Click on Mac over the "Failed" button (you can place your mouse over this button to see the instruction). This way all the paused downloads will be erased.

  24. When I download a large file (about 2 GB) it takes about 5 minutes for the extension to get it, and it takes about 20 minutes after that to merge and save the file to the local disk. What is the problem?

    This extension uses an IndexedDB database for saving chunks until the entire file is fetched. Then the extension merges all the segments to construct your binary file. At this point, the file is transferred to the local disk. This method has two advantages over memory-based downloading. First, all the chunks are stored in the local disk, as soon as they are fetched. Second, it is possible to download different segments from different parts of a single file at once. The one drawback of this method is the time that is required for the extension to copy the binary data from the internal IndexedDB to the local disk. It depends on your storage speed and how the browser handles exporting a considerable amount of data from the internal IndexedDB database. For most users, the time for a gigabyte file is less than a minute which is acceptable but if for any reason the merging speed is not acceptable, you can switch to single threading mode.

Matched Content



Please keep reviews clean, avoid the use of improper language and do not post any personal information.
  • <a> Defines an anchor.

    Example: <a href="http://add0n.com">a sample link</a>

  • <pre><code> Syntax Highlighting (Supported languages: Bash, JSON, HTML, JavaScript, and CSS).

    Example: <pre><code class="javascript">var foo = 'bar';</code></pre>

  • <strong> Defines bold text
  • <blockquote> Defines a long quotation
  • <caption> Defines a table caption
  • <cite> Defines a citation
  • <em> Defines italic text
  • <p> Defines a paragraph
  • <span> Defines a section in a document
  • <s> Defines strikethrough text
  • <strike> Defines strikethrough text
  • <u> Defines underlined text
  • <br> Defines a single line break; can be used alone and don't need an ending tag

What's new in this version

Change Logs:
    Last 10 commits on GitHub
    Hover over a node to see more details

    Need help?

    If you have questions about the extension, or ideas on how to improve it, please post them on the  support site. Don't forget to search through the bug reports first as most likely your question/bug report has already been reported or there is a workaround posted for it.

    Open IssuesIssuesForks

    Permissions are explained

    storageto save user preferences
    downloadsto manager user downloads and to redirect failed downloads to the internal download manager
    downloads.opento be able to launch a download when it is completed (only on user action)
    notificationsto notify user about warning and errors
    clipboardReadto read a downloadable URL from clipboard when download dialog is opened
    clipboardWriteto allow copy links to the clipboard
    contextMenusto add context menu items to the link, audio, and video elements
    *://*/*to be able to fetch from all hosts

    Recent Blog Posts on add0n.com