Tab Reloader an easy-to-use multi-browser tab reloader
Support Development
PayPal ● 
Bitcoin Address: bc1qh7juzrxrawpr65elm4qs285m5rdhnhgsn7h2jf
 ● 
Lightning Address: [email protected]
Your Input Matters
Review
Advertisement
Screenshot
The "Tab Reloader" extension enables you to refresh each tab in your browser at a predetermined interval. It is compatible with Chrome, Edge, Opera, and Firefox. The extension provides multiple reload options, including generating random reloading times and the ability to restore sessions. You can run a custom JavaScript code on reloads. This code can even turn the reloading job off if the criteria are met. The extension offers an option to receive notifications if the page content changes.

Features

FAQs

  1. What is the "Tab Reloader" extension and how can I use it?

    The "Tab Reloader" extension offers complete customization of the reloading process for each tab in your browser. Its purpose is to refresh the content of browser tabs by refreshing them.

  2. What's new in this version?

    Please check the Logs section.

  3. Is it possible to change the toolbar placement of the Tab Reloader extension?

    Yes, if you are using Tab Reloader on Firefox, you can find information on how to adjust its position by reading this guide.

  4. What is the process for setting up a new reload job?

    To set up a new reload job, navigate to the tab you wish to get reloaded periodically. Then, open the toolbar panel or popup. If the toolbar icon is not gray, the tab already has a reload job. In this case, you will need to cancel the current task before setting up a new one. Next, adjust the reload interval in the "Adjust Reloading Time" section and click the "Enable" button. The color of the toolbar button and the counter will change, and you will see a countdown timer in the "Status" section of the toolbar panel or popup.

  5. What does the badge number stand for?

    The badge number displays the number of tabs that have an active reload task. If you close a tab with a job assigned to it, the counter will decrease by one.

  6. Is it necessary to cancel a reloading job before closing a tab?

    No, it is not necessary. If you are done with a tab that has a reloading job, close it by clicking the close button or any other means. The extension monitors browser tabs, and the toolbar counter will automatically adjust itself whenever a new reloading job is added or removed.

  7. Is there a minimum period for tab reloading?

    At the moment, the minimum allowed time interval is 10 seconds. However, this may be altered in the future to ensure that the countdown starts after the tab has fully loaded, avoiding unnecessary reloads. There is a way to bypass this restriction. You can press Shift + Click on the enable button to bypass the minimum requirement.

  8. Do countdowns persist across different browser sessions (like after a browser restart)?

    The extension can store up to 20 URLs to enable cross-session restoration of active jobs. However, note that there are some limitations. The extension uses URL matching to restore tabs, as all tab-related identifications are session-based. So, if you have two identical ones with different countdowns, the most recent countdown will be applied to both tabs after a restart. Additionally, if a tab was active before a restart, it will be activated after restarting the browser, as long as the URL still matches the previous one.

  9. Are there any restrictions for tab reloading after a browser restart?

    Yes, reloading is not supported for system URLs (such as chrome://, resource://, and about:). This means that there won't be any countdown for these types of tabs after the browser has been restarted.

  10. Is there a way to erase the saved URL list for cross-session reloading of tabs?

    The extension remembers a maximum of 20 reloading jobs for restoring them after a restart or crash. If this is not what you prefer, go to the options page and uncheck the option. Additionally, you can press the "Factory Reset" button to clear the currently stored URL list.

  11. Is it possible to reload multiple tabs at once upon start-up?

    Yes, you can. Go to the options page and set up a JSON string for the "Custom Jobs" section. The extension will match all the tabs with the hostnames listed in the JSON key. If a tab matches, a reloading job will be automatically set for the specified hostname. You can add as many hostnames as you need. In version 0.5.3, you can use the "url" keyword instead of "hostname" to have more control over which tabs to reload. The "url" keyword supports three types of matching. Use "pt:" for URLPattern matching, "ht:" for hostname matching, and "re:" for regular expression matching (note that two "" characters are required for escaping). With these options, you can target specific URLs instead of entire hostnames. For instance, you can reload a subdomain or a page with a certain keyword in the URL. By using the "url" key and its options, there is no longer a need to rely on policies to limit reloading jobs based on URL patterns.

    [{
      "hostname": "*.google.com",
      "dd": 0,
      "hh": 0,
      "mm": 1,
      "ss": 0
    }, {
      "dd": 0,
      "hh": 0,
      "mm": 2,
      "ss": 0,
      "url": "re:.*\\.wikipedia\\.org\\/wiki\\/Book"
    }, {
      "dd": 0,
      "hh": 0,
      "mm": 3,
      "ss": 0,
      "url": "pt:*.wikipedia.org/wiki/Cat"
    }]

    In this example, the extension reloads all tabs with the matching hostname of "www.google.com" every 1 minute. The second command uses regular expression matching to limit the reloading job to Wikipedia pages that contain the "Book" keyword. The third command uses URLPattern matching with a wildcard to reload Wikipedia pages that contain the "Cat" keyword.

    URL Pattern Tester

    Pattern Base URL Links

  12. What does the "Use cache when reloading" setting mean?

    If you uncheck the option, the extension forces the browser to refresh the tab, and all resources including images and scripts are fetched from the server, just like Shift + F5. If you check the option, the browser cache is used when reloading resources, like when you press F5.

  13. Can the extension automatically set a reloading job for specific websites when they get opened in a new tab or from the bookmarks?

    You can automatically set a reloading job for specific websites. Go to the options page and create a custom JSON object to match the desired websites. For each website, you will need to create a separate rule. The options page includes a sample button to help guide you in preparing the JSON object. Once the custom JSON object is defined, enable the setting that tells the extension to match all newly opened websites with the JSON object. The rule will be applied to the tab if it matches a rule. Please note that the rule is tab-based, so even if you navigate to a different website within the same tab, the active reloading job will still apply.

  14. What is the purpose of the "Reloading Policy" feature on the options page, and how can I use it?

    The "Reloading Policy" feature, introduced in version 0.2.9, allows you to create rules for each domain. The domain names are the keys of this object, and the rules are the values. Wildcards can be used in the key strings to match all domain names. Each key has a value in the format of {"date": "valid regular expression", "url": "valid regular expression"}. The "date" key matches the local date with the current time, and the "url" key matches the current URL with the provided regular expression. If both keys exist, both regular expressions must match for the reloading job to occur. For example, if the user only wants to reload www.example.com between 2:00 PM to 4:00 PM, the object would be:

    {
      "*.example.com": {
        "date": " [23]:.*PM"
      }
    }

    The local date string in the format of "10/7/2019, 2:47:35 PM" can be matched using the regular expression " [23]:.*PM" to limit the reloading of a tab to the hours between 2:00 PM and 4:00 PM. You can test this regular expression in the browser console using "/ [23]:.*PM/.test('10/7/2019, 2:47:35 PM')" JS code. You can even use more complex regular expressions to match multiple ranges. The extension checks these reloading policies before reloading a tab, allowing the reloading job to be skipped. For matching between 8:00 AM to 5:59 PM, an expression similar to "( [89]:.*AM)|( 1[01]:.*AM)|( 12:.*PM)|( [12345]:.*PM)" can be used. This expression includes four sections, the first matching 8:00 AM to 9:59 AM, the second matching 10:00 AM to 11:59 AM, the third matching 12:00 PM to 12:59 PM, and the last matching 1:00 PM to 5:59 PM. You can find an example in issues/65.

  15. What is the purpose of the newly added code section in the browser popup, and why is it not enabled by default?

    The "Code Injection" feature allows the user-defined JavaScript code to get executed after each refresh. However, it is disabled by default for security reasons. The extension needs permission for the hostname in question to use this feature. The user can grant this permission by clicking the "Permit Code Execution" button on the popup interface. Once enabled, custom code can be inserted and will be run after each page refresh. To debug, the user can use the "Inspect" option from the right-click context menu on the page where the code is being injected.

  16. Is it possible to make the extension play a beep sound after each refresh?

    From version 0.3.2, the extension allows you to run custom JavaScript code after each refresh. To play a sound, you can use the following example JS code:

    (new Audio('https://www.w3schools.com/html/horse.ogg')).play()

  17. Can I ask the extension to stop reloading after single reloading occurs?

    Yes, it is possible to stop reloading after only one instance by using a custom JavaScript code in the custom code section of the extension. The code window.setTimeout(script => script.dispatchEvent(new Event('toggle-requested')), 1000, document.currentScript); can be used to send a signal to toggle reloading just after the first reload. Additionally, you can track the number of reloads by setting a localStorage variable and updating it after each page load. Once the desired is reached, you can send the toggle signal.

  18. Why can't I grant permission to allow code execution in the Firefox browser using the "Permit Code Execution" button?

    It appears that the Firefox browser is currently not able to display the permission dialog box triggered by a browser action popup. You can grant the host permission from the extension's options page as a workaround. This will enable the extension to run custom code requested by the user on any hostname.

  19. Is it possible to be informed when the content of a page is changed?

    Yes, it's possible. We can calculate the hash value of the page's content and use it to determine if there have been any updates. We can save the small hash string in the page's local storage for future reference (or session storage). The code below calculates the SHA256 hash code of the entire page's content and stores it in a persistent variable. This process takes place after each page refresh. If there is a change in the hash value, the user will receive an audio alert. For version 0.5.x, it is possible to monitor changes to the document without writing any custom JavaScript by using the pop-up interface. As of version 0.5.3, if the local storage variable "tab-reloader-element" is set, it will be utilized to locate a specific element. If it is not set, the hash code for the parent element will be calculated. Additionally, the volume level can be adjusted by providing a value between 0 and 1 for the local storage variable "tab-reloader-volume".

    {
      async function sha256(message) {
        const script = document.currentScript;
        const msgBuffer = new TextEncoder('utf-8').encode(message);
        const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);
        const hashArray = Array.from(new Uint8Array(hashBuffer));
        const hashHex = hashArray.map(b => ('00' + b.toString(16)).slice(-2)).join('');
        return hashHex;
      }
      sha256(document.body.innerText).then(hash => {
        const key = 'tab-reloader-hash-' + location.href;
        const oh = localStorage.getItem(key);
        if (oh && oh !== hash) {
          script.dispatchEvent(new CustomEvent('play-sound', {
            detail: 'https://www.w3schools.com/html/horse.ogg'
          }));
        }
        localStorage.setItem(key, hash);
      });
    }

    To use a custom sound, use:

    localStorage.setItem('tab-reloader-sound', 'https://www.w3schools.com/html/horse.ogg')

  20. Can the extension get configured to reload the page only after a specific idle time has passed, and resets the timer if there is an activity on the tab?

    Yes, the extension allows you to run a custom JavaScript code, which could include monitoring user activity, such as clicks and typing. If such an activity is detected, the timer could get reset. You can achieve this by injecting the script into the page after reloads.

    {
      const script = document.currentScript;
    
      const reset = () => {
        console.log('Reset the Timer');
        script.dispatchEvent(new Event('toggle-requested'));
        clearTimeout(reset.id);
        reset.id = setTimeout(() => script.dispatchEvent(new Event('toggle-requested')), 100);
      };
    
      const action = () => {
        clearTimeout(action.id);
        action.id = setTimeout(reset, 500);
      };
    
      document.addEventListener('click', action);
      document.addEventListener('input', action);
    }

  21. Why does the "new Audio()" JavaScript method not play sounds when the tab is inactive?

    Some browsers prevent media files from playing automatically in inactive tabs to prevent advertisements from distracting the user. As of version 0.3.4, an alternative code is available to play media sounds:

    {
      const script = document.currentScript;
      window.setTimeout(() => {
        script.dispatchEvent(new CustomEvent('play-sound', {
          detail: 'https://www.w3schools.com/html/horse.ogg'
        }));
      }, 500);
    }
    In this method, the script asks the background page to play the music.

  22. Is it possible to conditionally focus a tab with the injected script?

    With the 0.3.4 version, you can use the "activate-tab" event in the injected script to bring the sender's tab to the front. The following code requests the background script to give focus to the tab that sent the request.

    {
      const script = document.currentScript;
      window.setTimeout(() => {
        script.dispatchEvent(new Event('activate-tab'));
      }, 500);
    }

  23. Is it possible to postpone the next reloading job with an arbitrary value from the injected script?

    As of version 0.3.6, there is a new custom event called "delay-for" which can be used to delay the next reloading job with an arbitrary positive or negative value. For instance, to postpone the next reloading job an extra 30 seconds use:

    {
      window.setTimeout(script => {
        script.dispatchEvent(new CustomEvent('delay-for', {
          detail: 30000
        }));
      }, 1000, document.currentScript);
    }
    In this example, consider the reloading period is 5 minutes. With this extra delay, the next reloading occurs 5 minutes and 30 seconds from the script execution. This event can be used to schedule the next reloading job. For instance, say you don't need the tab to be reloaded during the daytime. Write a JavaScript code that compares the current time with your preferred schedule, and if the condition matches, delay the next reloading job until the period is over.

  24. Is it possible to eliminate the confirmation messages that appear when reloading a webpage with this extension?

    You can enable the script injection feature and remove the function responsible for these warnings. Note that you are disabling an important warning with this code that may cause the content to get lost, so use it with caution.

    {
      window.onbeforeunload = '';
      document.onbeforeunload = '';
      document.body.onbeforeunload = '';
    }
    Note that you are going to get the warning on the first reload and you should manually accept it since this script is only injected after each reload.

  25. Can the extension prevent the reloading of active tabs across all browser windows?

    It is possible to include active tabs from all browser windows to prevent automatic reloading. To enable this feature, navigate to the options page and select the option labeled "Consider one tab per browser window as an active tab".

  26. Here is the list of all supported actions that injected script can do:

    • toggle-requested: Toggles the enable state of a job. This is useful to stop reloading when a condition met.
    • activate-tab: Brings the tab and the window that dispatches this event. This is useful to bring the user's attention when a condition met.
    • play-sound: Plays a sound that is provided by the "detail" object of the custom event. This function can be used to play a sound even if a tab is not active.
    • delay-for: Delays the next reloading job with an arbitrary positive or negative value.

  27. Here is the list of all supported keywords for code injection:

    • hostname: Exact hostname (e.g.: hostname: 'www.google.com') or wildcard hostname (hostname: '*.google.com')
    • dd: Reload after dd days (a number between 0 to 10) (e.g.: dd: 2)
    • hh: Reload after hh hours (a number between 0 to 23)
    • mm: Reload after mm minutes (a number between 0 to 59)
    • ss: Reload after ss seconds (a number between 0 to 59)
    • variation: Use a random variation (a number between 0 to 99) (e.g.: variation: 10)
    • current: If true, active tab will not be reloaded (e.g.: current: true)
    • cache: If true, soft reloading is used (similar to F5). If false, hard reloading is used (similar to Shift + F5)
    • form: If true, form submission warning is bypassed (e.g.: form: true)
    • code: JavaScript code to be executed after each reload (e.g.: code: "console.log('ok');")

  28. Supported keyboard shortcuts (for version v0.5.0):

    Close Popup Shift + Escape Key Stop Timer Escape Key Enable Timer S Key Select a preset Ctrl + 1/9 Keys

  29. Is it possible to limit the reloading to specific time frames?

    Yes, starting from version 0.5.5 of the extension, you can specify multiple time frames on the pop-up interface. The reloading will only occur if the current time matches one of the defined time frames. To define multiple time frames, separate them with a comma.

    Example:

    00:00:00 - 01:00:00, 12:30:00 - 13:30:00

  30. What does the "Run Policy Code" feature introduced in version 0.5.9 allow you to do?

    This feature gives you control over whether or not the page will be reloaded by the extension. When this option is checked, the extension will execute the JavaScript code provided and check the "continue" dataset in the script. If this data is not set to "true", the reloading process will be skipped. With this feature, you can create a custom policy for reloading the page. For example, you can check the content of the page to see if a specific word is present. If it is, the page will be reloaded, otherwise, reloading will be skipped. Additionally, you can set the feature to reload the page if the title contains a certain word.

    Example one: Reload only if page contains "hello" word

    document.currentScript.dataset.continue = document.body.innerText.includes("hello");

    Example two: Reload the page randomly at 50% rate

    document.currentScript.dataset.continue = Math.random() < 0.5;

  31. Is it possible to reload my page exclusively when the particular tab is in focus using this extension?

    Yes, use the policy reloading feature to omit reloading tasks when specific criteria aren't met. For instance, employ

    document.currentScript.dataset.continue = document.visibilityState === 'visible';
    to bypass reloading when the document isn't visible. Discussion thread can be found here.

Matched Content

Preview

Reviews

Please keep reviews clean, avoid improper language, and do not post any personal information. Also, please consider sharing your valuable input on the official store.

What's new in this version

Version--
Published--/--/--
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

    Editorial Review

    Tab Reloader is a great add on that lets you reload every browser tab with a custom time frame. While it is supported on multiple browsers, it works best on Firefox.

    One of the best things about Tab Reloader is that it has a clear interface and it is highly adjustable. The tab has a wide reloading range that goes from 10 seconds to 10 days. The add-on has been designed to provide complete customization on how every browser tab gets loaded and reloaded. The extension can be used to update tabs which will then freshen the content. The add-on is very simple to use and extremely convenient if you are working on several browsers at the same time. Moreover, the add-on lets you launch several tabs in a custom time frame which means that it makes working very easy and simple for you. The add-on is a must have for people who mostly work on computers and have several pages to work on side by side. It is easy to use and does not have glitches like other add-ons do. The simplicity of the add on does not only apply to its ease of use but also its easy and basic installation. All you have to do is install it and the rest will follow itself. Another positive thing about the add on is that the configuration is done via the context menu and therefore no extra action is needed to use the add-on.

    Overall, Tab Reloader is a great plugin for all those who want to add convenience and ease in their life. It is easy to use, easy to install and facilitates a lot of ease in your day to day life. It is available on the web and can be installed for free.

    Recent Blog Posts