A slow website is one of the most damaging things for user retention - 53% of mobile users abandon a page that takes more than 3 seconds to load. There are a few distinct causes, and identifying which one you have determines the fix.
Why this happens
high
Server cold start - your app is sleeping between visitors
Free and hobby tiers of Railway, Render, and Fly.io spin your server down after 15-30 minutes of inactivity. The first visitor after idle has to wait 10-30 seconds for the server to wake up. Subsequent requests are fast. This is the most common cause for indie and side projects.
Response compression not enabled - pages are 3-5× bigger than needed
Your server sends HTML, CSS, and JavaScript without compressing it first. Enabling gzip or Brotli typically reduces page size by 60-80% - a 200KB page becomes 40KB. This is a free performance improvement that affects every page load for every user.
Slow server response time - something heavy is on the request path
Your server consistently takes more than 3 seconds to respond, even when warm. Usually caused by slow database queries (missing indexes), heavy computation on the main request thread, or a server deployed in a region far from your users.
Not sure which of these apply to your domain?
Run a free scan - 26 checks in under 10 seconds.
No signup. No install. Just enter your domain.
Frequently asked questions
Why is my site fast for me but slow for my users?
Several reasons: you're physically close to your server (fewer network hops), your browser caches assets after the first visit so repeat visits are faster, and you test after the server is already warm. Use GTmetrix or WebPageTest to measure from specific regions. The first-visit cold start is invisible to you but hits every new visitor.
What's a good page load time?
Under 1 second for Time to First Byte (server response) is ideal. Under 3 seconds for full page load. Google's Core Web Vitals consider Largest Contentful Paint over 2.5 seconds 'needs improvement' and over 4 seconds 'poor'. Check your real-world scores in Google Search Console → Core Web Vitals.
Why is the first visit always slow but every visit after is fast?
Classic cold start. Your hosting provider spins down your server after inactivity to save resources on free/hobby tiers. The first request wakes it up - which can take 10-30 seconds. Subsequent requests hit the already-running server and are fast. Fix: upgrade to a paid plan (always-on) or use a keep-alive ping service (cron-job.org, BetterStack) that hits your /health endpoint every 5 minutes.
Does page speed affect SEO?
Yes. Google's Core Web Vitals - which include Time to First Byte, Largest Contentful Paint, and Interaction to Next Paint - are ranking factors. Slow sites rank lower. Google Search Console shows your Core Web Vitals score and flags pages that are underperforming. A fast site is a ranking advantage, not just a UX nicety.
My database queries seem fine locally - why are they slow in production?
Local databases have no network latency and small datasets. In production, network round-trips add 1-10ms per query (more if your database is in a different region than your server), and larger datasets expose missing indexes. Use EXPLAIN on slow queries to find missing indexes, and check that your database is in the same region as your app server.