The short answer
Check your speed on a phone, not a computer, with Google PageSpeed Insights or a free website check. Most slow lodging websites are slow for the same few reasons. Photos straight off a camera, a hero video, too many widgets or plugins, and a heavy theme. The platform matters less than what's piled on it. A lean WordPress site can beat a bloated custom one. Fix the photos first. It's usually the biggest win for the least work.
Is my website fast?
Probably not as fast as it feels to you. You look at your site on a laptop, on good Wi-Fi, with everything already saved in your browser. Most guests see it for the first time on a phone, on a cell signal, while comparing you with a few other tabs.
The quickest way to check is Google PageSpeed Insights, or the free website check on this site, which uses the same Google test. Look at the mobile score. Google runs it on a simulated phone with a slower connection, which is closer to what guests actually get.
Here's how real the gap can be. Comal Inn's homepage scores 100 on desktop, but on a phone it was scoring 64 to 71, with the main content taking 5.4 to 6.3 seconds to show up. The photos weren't the problem. The page was waiting on three separate CSS files and six font files before it could draw its text. I moved the CSS into the page itself and cut the fonts down to one file each. The next phone test scored 99, with the main content showing in 1.9 seconds.
Then the next two runs scored 71 and 69, with nothing changed in between. PageSpeed loads your page once on a fast connection and then estimates how a slow phone would do, so small timing differences can swing the score a lot. One great run doesn't mean the job is done, and one bad run doesn't mean it's broken. Run it several times and look at the range.
The range told me there was more to fix. The last big difference between Comal Inn and this site was Google Analytics. Comal Inn told phones to download Google's 176 KB analytics script at the very start, alongside the page. This site waits until the page has finished loading. I gave Comal Inn the same setup, and the next three phone tests scored 100, 94 and 87, up from around 70, with the page starting to show in about a second. Analytics still counts nearly every visit and click. It just waits its turn. If your site gets enough visitors, PageSpeed also shows a section from real Chrome users over the last month. That's the data Google actually uses, and it matters more than the lab score.
Comal Inn phone scores, every PageSpeed run
Each dot is one test. Higher is better.
Before
Round one
Round two
Before: 64 and 71. After round one: 99, 71 and 69. After round two: 100, 94 and 87.
- Before. Styles in 3 files, 6 font files, Analytics first.
- Round one. Styles in the page, fonts cut to 1 file each.
- Round two. Google Analytics waits for the page.
The numbers in plain English
PageSpeed reports a handful of measurements. Three of them, LCP, INP and CLS, are what Google calls Core Web Vitals. Google looks at the 75th percentile of real visits, so most of your guests need a good experience, not just the lucky ones on fast Wi-Fi.
- First Contentful Paint (FCP)
- When anything at all shows up on the screen.
- Good: 1.8 seconds or less
- Poor: Over 3.0 seconds
- Largest Contentful Paint (LCP)
- When the biggest thing on the screen shows up, usually your main photo or headline.
- Good: 2.5 seconds or less
- Poor: Over 4.0 seconds
- Interaction to Next Paint (INP)
- How fast the page reacts when someone taps a button or opens a menu.
- Good: 200 milliseconds or less
- Poor: Over 500 milliseconds
- Cumulative Layout Shift (CLS)
- How much the page jumps around while it loads.
- Good: 0.1 or less
- Poor: Over 0.25
Here's what those numbers looked like on Comal Inn's homepage, before and after the last fix:
Two real PageSpeed reports for comalinn.com on a phone
Before the Analytics fix
Performance score
- First Contentful Paint
- 3.1 s (Poor)
- Largest Contentful Paint
- 5.6 s (Poor)
- Total Blocking Time
- 170 ms (Good)
- Cumulative Layout Shift
- 0 (Good)
- Speed Index
- 4.5 s (Needs work)
After the Analytics fix
Performance score
- First Contentful Paint
- 1.1 s (Good)
- Largest Contentful Paint
- 1.4 s (Good)
- Total Blocking Time
- 10 ms (Good)
- Cumulative Layout Shift
- 0.005 (Good)
- Speed Index
- 1.1 s (Good)
GoodNeeds workPoor
For a lodging website, LCP is the one to watch. On almost every property homepage, the largest thing on the screen is the main photo. If that photo is huge, fix it first.
You'll also see Total Blocking Time in the lab test. It's how long the page is frozen while code runs, and it's the best clue to a slow INP. Widgets and plugins are the usual cause. My Comal Inn speed note walks through two real rounds of fixing it.
Why a website loads slow
It's rarely one thing. It's usually a few of these at once:
- Photos straight off a phone or camera. One of the most common problems. One photo can weigh more than the rest of the page combined.
- A hero video. A big video at the top has to load before the page feels ready.
- Widgets and add-ons. Chat boxes, review feeds, Instagram feeds, maps and booking calendars from other companies, each with its own code.
- Tracking scripts loaded too early. Analytics and ad tags that download at the same time as the page, when they could wait until it has loaded.
- A heavy theme or page builder. Code for every feature the theme offers, loaded on every page, used or not.
- Slow or cheap hosting. The server takes a long time to send the first byte, before anything else can start.
- Too many fonts. Every font and weight is another file to download before text looks right.
- Files that block the first paint. Stylesheets and scripts the browser must download before it can draw anything at all.
In my audit of a two-cabin rental, the homepage weighed 6.5 MB and scored 37 on a phone. It had large photos in older formats, a background video in the header, two video players loading before anyone pressed play, and four tracking tools. Nothing was broken. It had just never been trimmed.
Comal Inn's homepage was a different kind of slow. The photos were already small. The problem was everything the phone had to download before it could show any text:
What a phone downloads first on the Comal Inn homepage
Before
At the start, all at once
- The page30 KB
- 3 style files25 KB
- 6 font files
- Google Analytics176 KB
After the page is on screen
- Chat widgetafter a tap or 8 s
After
At the start, all at once
- The page, with its styles inside66 KB
- 1 font file17 KB
After the page is on screen
- Google Analytics176 KB
- Chat widgetafter a tap or 8 s
Photos: the 5 MB problem
A photo from a modern phone or camera is often 3 to 8 MB. That's great for printing and terrible for a website. When it goes on a page as-is, every guest downloads the full file, even though their screen only shows a small version of it.
Here's a real one from Comal Inn:

On a phone, those two look the same. One takes a fraction of a second on a cell signal. The other can take several seconds, and that's just one photo. Most property homepages have ten or more.
What good photo handling looks like:
- Resize to the size it shows at. A phone needs a photo around 800 to 1,200 pixels wide, not 4,000. A big desktop screen might need 1,600 to 2,000.
- Use a modern format. WebP and AVIF are much smaller than JPG at the same quality, and every current browser supports them.
- Serve different sizes to different screens. Phones get the small version, desktops get the big one. Next.js does this for you, and so do good WordPress image plugins.
- Lazy-load photos further down the page. They load as a guest scrolls toward them, not all at once.
- Never lazy-load the main photo. It's the one guests are waiting for. It should load first.
- Set a width and height on every photo. The page saves the right amount of space, so text doesn't jump when the photo arrives. That's what keeps CLS low.
Comal Inn's photos are uploaded at full size, and the site turns each one into smaller AVIF or WebP versions for each screen. You keep one great original. Guests get a photo sized for them.
Hero videos, done right
Everyone loves a video at the top of the homepage. The river, the porch swing, the fire pit at night. It can work. It just has to be done carefully, because a video is usually the heaviest thing a site can load.
How to add one without slowing everything down:
- Keep it short and silent. A 10 to 20 second loop with no sound. Remove the audio track completely. Nobody hears it, and it's extra weight.
- Compress it hard. Export it at the size it shows at, as MP4, and make the file as small as it can be while still looking good. For a background loop, a few megabytes is a sensible ceiling.
- Give it a poster image. A still photo that shows instantly while the video loads. Google counts the poster or the first frame, whichever shows first, as your LCP, so a fast poster keeps your score healthy.
- Make it muted and set to play inline. iPhones only autoplay videos that are muted or have no sound, and “plays inline” keeps it from jumping to full screen.
- Think about phones separately. Many sites show just the poster photo on phones, or a smaller version of the video. A phone on a cell signal is where a video hurts most.
- Add a pause button. Moving content that plays for more than a few seconds should have a way to stop it. It's an accessibility rule, and some guests find motion distracting.
And skip the embedded YouTube player at the top of the page. It's heavier than it looks. Google's own example shows the YouTube player at about 540 KB, compared with 3 KB for a lightweight stand-in that loads the real player only when someone presses play. If you want a YouTube video further down the page, that stand-in, called a facade, is the way to do it.
WordPress, Wix, Next.js and the rest
People ask which platform is fastest. The honest answer is that the platform matters less than what's built on it. Here's how the common options compare for a small property.
WordPress
GoodRuns a little more than 4 in 10 websites, according to W3Techs. Easy to edit, thousands of themes and plugins, and lots of people who know it. It’s built on PHP, which builds each page on the server when someone visits, unless a caching plugin saves a ready-made copy.
Watch out forSpeed depends on the theme and plugins you pile on. It needs regular updates to stay secure, and old plugins are a common way sites get slow or hacked.
Wix and Squarespace
GoodHosted for you, easy to edit, no updates to manage. A good choice if you want to change things yourself and never think about servers.
Watch out forLess control over what loads. You can keep them reasonably fast with smaller photos and fewer add-ons, but you can’t fine-tune much under the hood.
Next.js and React
GoodWhat comalinn.com and this site are built with. Pages can be built ahead of time and served instantly, and Next.js resizes photos for each screen on its own.
Watch out forYou need a developer to build it and to change the design. Everyday edits don’t have to wait on one, though. There are free content editors, called CMSs, that let you update rooms, text and photos yourself. Built carelessly, a React site can send a lot of code to the phone and end up slower than a simple WordPress site.
Website builders from booking software
GoodMany booking and property management systems include a website builder, with the booking engine already connected.
Watch out forConvenient, and speed varies a lot from one to the next. Test yours the same way you’d test any other site.
Static site builders
GoodTools like Astro or Eleventy turn your pages into plain files ahead of time. Very fast and very little to break.
Watch out forNeeds a developer to set up. Day-to-day editing can happen in a free content editor, or CMS, instead of a drag-and-drop page builder.
I moved comalinn.com off WordPress, and it was the right call for us. That doesn't make it the right call for everyone. If you edit your own site every week and a WordPress setup you know works for you, a cleanup will often get you most of the speed for a fraction of the cost of a rebuild.
WordPress theme bloat
A lot of popular WordPress themes are built to do everything: sliders, mega menus, animations, shop pages, portfolio grids, a dozen layouts. That's why they sell. The catch is that the code for all of it often loads on every page, whether your site uses it or not.
Page builders, the drag-and-drop tools for laying out pages, add their own layer on top. Then come the plugins, one for a gallery, one for reviews, one for a popup, one for a form, each with its own code. That's theme bloat, and it's the most common reason a WordPress site is slow.
How to avoid it:
- Choose a lightweight theme. Look for one built for speed, with features you turn on as you need them, not everything switched on out of the box.
- Be picky with plugins. If a plugin does one small thing, ask whether you really need it. Delete the ones you've stopped using, don't just deactivate them.
- Use caching. A caching plugin or a host that caches for you saves a ready-made copy of each page, so WordPress doesn't rebuild it on every visit.
- Handle images properly. An image plugin that resizes, converts to WebP and lazy-loads photos below the fold covers most of the photo work.
- Skip the slider. One great photo usually beats a slideshow, and it's far lighter.
- Test after every change. Run PageSpeed before and after adding a plugin. If the score drops, you know exactly why.
- Keep everything updated. Updates fix security holes, and they often fix speed problems too.
What to ask your web person
You don't need to fix any of this yourself. But these questions will tell you a lot about where your site stands:
- What’s my phone score, and what’s my LCP? Ask for the mobile numbers, not desktop. Desktop almost always looks better.
- What is the LCP element on my homepage? Usually the main photo. It should load first, at the right size, and never be lazy-loaded.
- Are photos resized and served as WebP or AVIF? Phones should get phone-sized photos, not the original files.
- What loads before the page is ready? Chat widgets, feeds and maps can usually wait until someone scrolls or taps.
- When does Google Analytics load? It can wait until the page has finished loading. You may miss a few people who leave in the first second, but it won’t slow the page down.
- How many plugins are installed, and which ones do we still use? For WordPress. Every unused plugin is weight and risk.
- Is the site cached and on a CDN? A CDN keeps copies of your site close to your guests, so pages arrive faster.
- Can we retest after every change? Speed slips a little at a time. A quick test after each new feature catches it.
Or start with the free website check. It runs the same Google phone test, shows how heavy your homepage is and checks where your Book buttons go, in about 30 seconds.
Quick answers
How do I know if my website is fast?
Run your homepage through Google PageSpeed Insights or a free website check, and look at the mobile score, not desktop. Then load your site on your own phone with Wi-Fi turned off. If the main photo takes more than a few seconds to show up, guests are waiting too.
Why does my website load slow?
Most of the time it’s oversized photos, a hero video, too many widgets or plugins, or a heavy theme. Slow hosting and too many fonts add to it. Usually it’s a few of these together, not one big problem.
How big should photos on my website be?
Sized for the screen that shows them, not straight off the camera. A full-width photo on a phone rarely needs to be more than a few hundred kilobytes, and a modern format like WebP or AVIF makes it much smaller with no visible difference.
Can I have a video at the top of my homepage?
Yes, if it’s short, silent, compressed and has a poster image that shows right away. Many sites show only the photo on phones. Avoid an embedded YouTube player at the top, which loads a lot of code before anyone presses play.
Is WordPress slow?
Not by itself. A WordPress site with a lightweight theme, a handful of plugins, caching and resized photos can be fast. Most slow WordPress sites are slow because of what’s been added to them.
Want me to look at your site?
Send me your website. I'll tell you what I'd fix first, for free.