← All examples

JavaScript Media substack.com

Substack: force lazy-load all images

Sets loading="lazy" and a lower fetch priority on every image, saving bandwidth in image-heavy posts.

Code to copy

// Force lazy-loading on every image to save bandwidth on image-heavy posts
(function () {
  function patch() {
    document.querySelectorAll('img').forEach(function (img) {
      if (img.dataset.jzLazy) { return; }
      img.dataset.jzLazy = '1';
      try {
        img.loading = 'lazy';
        img.decoding = 'async';
        if (img.fetchPriority && img.fetchPriority !== 'low') { img.fetchPriority = 'low'; }
      } catch (e) {}
    });
  }
  patch();
  var obs = new MutationObserver(function () {
    clearTimeout(window.__jzSubLazy);
    window.__jzSubLazy = setTimeout(patch, 300);
  });
  obs.observe(document.body, { childList: true, subtree: true });
})();

How to use this example

  1. Copy the code with the button above.
  2. Install JustZix (2 minutes) and open the extension on the target page.
  3. Add a new rule matching that page.
  4. Paste the code into the rule's JavaScript panel and save — it runs on every page visit.

Rate this example

No ratings yet — be the first.

Does this example work?

Snippets are useless without somewhere to paste them.

JustZix takes 2 minutes to install and runs your code on every matching page. No account, no payment.

Download free See use cases