What Squarespace does automatically
On Squarespace 7.1, images uploaded through the Image Block are served with browser-native lazy-loading enabled by default. The rendered HTML includes loading='lazy' on the img tag, which tells the browser to defer loading the image until it approaches the viewport. The behaviour is browser-native — meaning no JavaScript, no extra script tag, no plugin. Every modern browser supports it as of 2020, and Squarespace ships it on every new template. The exception is the above-the-fold LCP candidate, which is eager-loaded to protect the LCP score.
The LCP exception — don't lazy-load the hero
The hero image — the one Squarespace identifies as the LCP candidate above the fold — should not be lazy-loaded. Lazy-loading defers the fetch, which directly hurts LCP because the browser waits to start downloading the largest visible element. Squarespace handles this automatically by serving the hero with eager loading (or no loading attribute at all, which defaults to eager). If you have applied custom code that forces lazy-loading on everything, the hero is the one image you should explicitly opt out.
Iframes and embeds — the gap to patch
Squarespace's auto-lazy-load applies to Image Block images, not to iframes (YouTube, Vimeo, social embeds), Code Block HTML, or CSS background images. PageSpeed Insights' 'Defer offscreen images' audit flags any of these that are below the fold but still eager-loading. The fix for iframes is the loading='lazy' attribute, which is browser-native for iframes as well. For Code Block embeds, add the attribute to the iframe in the HTML directly. For CSS backgrounds, there is no native lazy-load equivalent — the workaround is to move the image into an Image Block.
Verify lazy-loading is actually working
Three verification methods. (1) Inspect the rendered HTML — right-click an image below the fold, Inspect, look for loading='lazy' on the img tag. (2) Run PageSpeed Insights and check the 'Defer offscreen images' Lighthouse audit. Pass means the lazy-load is doing its job; fail means an image is missing the attribute. (3) Open Chrome DevTools, Network tab, throttle to Slow 3G, scroll the page and watch which images load only as they enter the viewport. The third method is the most visual confirmation.