Site Speed
Why Your Photography Site Loads Slowly (and What You Can Actually Fix)
Every speed tool, including the one built into this app, reports the same handful of problems in the same developer vocabulary: render-blocking resources, dependency chains, unused JavaScript. The advice attached to them — “defer non-critical scripts” — assumes you have a code editor open. If you built your site on Squarespace, Showit, Pixieset, or WordPress with a theme, you don't, and you shouldn't need one.
So here is the translation. Each section covers what the warning actually means, whether it's yours to fix or your platform's, and what to do about it in your normal site editor.
First, the thing that matters most
On a photography site, speed problems are usually one problem wearing several hats: the photos are too big. Before working through anything below, read Sizing and Compressing Photos for the Web and fix your image exports. It is common for that alone to move a score from the 40s to the 80s, and several of the warnings below will stop appearing on their own once it's done.
Everything else here is worth doing after that, not instead of it.
“Render-blocking resources”
What it means: before your browser is allowed to draw anything at all, it has to finish downloading a specific set of files — stylesheets and scripts that sit in the page's header. Until every one of them arrives, the visitor is looking at a blank white screen. Not a partly-loaded page: nothing.
Why photography sites get hit by this: the blocking files are rarely yours. They belong to the plugins, apps, and integrations that accumulate on a site over several years — a booking calendar you trialled, a review widget, an Instagram feed, two analytics pixels, a chat bubble, a pop-up tool. Each one adds a file, each file blocks, and none of them announce themselves.
What to do:
- Read the file names your speed report lists. They're usually self-identifying — a path containing
hotjar,tidio,mailchimpor a plugin's name tells you exactly which tool is responsible. - Open your platform's app, plugin, or integration list. Deactivate everything you are not actively using this month. This is the single highest-value action here, and it requires no code.
- Count your fonts. Every font family, and every weight within a family, is a separate blocking download. Two families and three weights total is plenty for a photography site; sites regularly load six or more without anyone intending it.
- If the remaining files are your theme's own — names like
style.css, or the name of your template — that part is your platform's to fix, not yours. Send their support team the list and ask whether the theme supports deferring non-critical CSS. Some do; on some it's simply a limit of the platform, and it's better to know that than to keep chasing it.
“Unused JavaScript”
What it means: code is downloading on this page that this page never actually runs. A visitor pays the download cost for nothing.
What to do: the same audit as above, for the same reason. The classic case is a booking widget installed site-wide so it can appear on the Contact page — every other page on the site loads it too and never uses it. Where your platform offers per-page control over which integrations load, use it. Where it doesn't, deactivating what you don't use is the whole of the fix.
Some of this will always remain. Your platform ships a certain amount of its own framework code and you can't remove it. Aim to clear what you added, not to reach zero.
“A long dependency chain”
What it means: some files can't start downloading until an earlier file has finished, because that earlier file is what tells the browser they exist. Instead of downloading things side by side, the browser ends up in a queue: fetch A, read A, learn about B, fetch B, read B, learn about C. Ten fast files in a chain can be slower than three big ones in parallel.
Why it happens: almost always third-party embeds. Each one is code from another company's server, and that code frequently loads more code from a third server. An Instagram feed widget, a review carousel, a font service, and a booking tool make four separate companies' servers that all have to be found, connected to, and waited on before your page settles.
What to do:
- Count the third-party embeds on your slowest page. Each one is a real cost; keep the ones that earn it.
- An Instagram feed is usually the first to go. It is heavy, it loads from several servers, and a static grid of four images linking to your profile does the same job for visitors at a fraction of the cost.
- If your platform lets you host fonts on your own domain instead of loading them from Google Fonts or Adobe, do it — that removes an entire external connection from the chain.
- If you have platform support available, the specific thing to ask for is preconnect hints for third-party origins. That phrase will mean something to them, and it's a change on their side rather than yours.
“Your server is slow to respond”
What it means: before any of the above even begins, your host has to answer the request. This measures only that first answer — nothing about your photos or your page design affects it.
What to do: this one is genuinely not yours. It's your hosting. On a hosted builder (Squarespace, Showit, Pixieset) you have no control over it at all, and a poor number here is worth a support ticket quoting the figure. On self-hosted WordPress it usually means either cheap shared hosting or no caching — a caching plugin is the first thing to try, and moving to a host built for WordPress is the second.
“Elements move around while the page is loading”
What it means: content jumps as the page loads. A visitor goes to tap “Contact”, an image above it finishes loading and pushes everything down, and they tap something else. Google measures this because it's a genuinely bad experience, and it's one of the few speed metrics visitors consciously notice.
What to do: load your own site on your phone, on mobile data rather than wifi, and watch the top of the page as it loads. Whatever jumps is the culprit. The three usual causes: images without a reserved size (a theme problem — report it), a cookie banner or announcement bar that appears a beat late (set it to appear immediately, or reserve its space), and a custom font swapping in and re-flowing the text around it.
“A large number of page elements”
What it means: the page has an unusually large number of separate pieces for the browser to lay out and keep track of.
Why photography sites get hit by this: galleries. A single portfolio page with 200 images on it is 200 elements minimum, usually several times that once the layout wrappers around each one are counted. Page builders like Elementor and Divi add nested layers of their own on top.
What to do: split very long galleries across several pages, or use a gallery block with paging rather than one continuous scroll. This has an SEO benefit beyond speed — several focused gallery pages, each nameable for a specialty and a location, outrank one enormous undifferentiated one.
“Custom fonts can briefly hide text”
What it means: while your font downloads, some browsers show nothing at all where the text should be, rather than showing it in a standard font and swapping. On a slow connection that can be a second or more of invisible text.
What to do: if your platform has a font-loading or performance setting, the option you want is called swap. If it doesn't expose one, this is a support question — ask them to set font-display: swap on the theme's fonts. Reducing how many custom fonts you load shortens the window regardless.
How to know whether any of it worked
Re-run the audit. Speed numbers move around by a few points between runs even with no changes — test conditions vary — so judge by the warnings that disappear and by movements of ten points or more, not by two-point wobbles.
And keep the target in proportion. A photography site is image-heavy by its nature and is never going to score like a text blog. Getting mobile performance out of the red and into the 70s is a realistic goal, and past that your time is better spent on the things that actually win rankings. Speed is a tiebreaker, not the game.
See where your own site stands.
Studio Visibility runs a free Visibility Snapshot — a full site crawl, your Site Health score, and a plain-English list of what to fix. No credit card.
Get My Free Visibility Snapshot