Most WordPress slowness does not come from one big problem but from small delays stacking on top of each other: an outdated PHP version, a server with no caching layer, uncompressed images and more plugins than the site actually needs. The good news is that most of these are one-time fixes, and done in the right order they typically halve load time. The twelve steps below are ordered by how much they actually gain you, starting with the biggest.
Before optimising anything you need a baseline, otherwise you cannot tell whether a change helped. The three measurements Google uses as a ranking signal are grouped under Core Web Vitals:
One critical detail: these thresholds are evaluated at the 75th percentile of page loads, not on averages, and mobile and desktop are measured separately. "It loads fast on my machine" is not a measurement.
Also, do not confuse lab data with field data. PageSpeed Insights shows you two blocks: the top one is real user data, the bottom one is a simulation score. Make decisions based on the real user data. For server response you can measure TTFB directly with curl -w "%{time_starttransfer}\n" -o /dev/null -s https://yoursite.com — under 200 ms is good, over 600 ms needs investigation.
Fix the infrastructure before touching plugin settings. These four items usually account for more than half the total improvement.
This is the single largest gain available from one setting. WordPress officially recommends PHP 8.3 or greater; versions at or below 7.4 have reached end of life and carry security risk. PHP 8.x completes the same workload with noticeably less CPU than 7.x.
In cPanel you can change it under MultiPHP Manager by selecting your domain. Always take a backup first, and if you run an older theme or an abandoned plugin, test on a staging copy before switching production.
Plugin-based caches store the page after PHP has already run. A server-level cache answers the request without PHP being involved at all — the difference is measured in hundreds of milliseconds.
If you run on a LiteSpeed web server, the LiteSpeed Cache (LSCache) plugin does exactly this: it turns dynamic PHP pages into static snapshots served straight from the server. One important caveat: the plugin's caching functions require a LiteSpeed-based server component. On non-LiteSpeed hosting you can install the plugin, but you only get the optimisation features — the caching layer that produces the real gain never activates.
Nubitro hosting plans ship with LiteSpeed as standard, so installing and enabling LSCache is all that is needed.
OPcache keeps compiled PHP bytecode in memory so it is not recompiled on every request. It is usually enabled on modern hosting; you can confirm it in phpinfo() output.
Object caching stores database query results in memory. On query-heavy sites such as WooCommerce stores its impact is significant. If Redis or Memcached is available, enable it.
If most of your visitors are in one country and your server is somewhere else, you pay 40–60 ms on every single request. That sounds small until you remember a page load makes dozens of requests. If your TTFB is consistently above 600 ms, question location and server load before anything else.
Images account for most of the weight of a typical WordPress page. These three steps usually cut page size in half.
WebP delivers comparable visual quality at a substantially smaller file size than JPEG or PNG, and every current browser supports it. LiteSpeed Cache, Imagify or ShortPixel can convert your existing media library in bulk.
The most common mistake is uploading a 4000-pixel phone photo and scaling it down to 600 pixels with CSS. The browser still downloads the entire file; the resizing only happens on screen. Resize images to the largest size they will actually be displayed at before uploading.
WordPress does this by default now, but watch two things. First, some page builders disable it on their own image output. Second, exclude the hero image at the top of the page from lazy loading — that image is usually your LCP element, and delaying it directly damages your score.
There is no rule that says "20 plugins is too many" — what matters is how much work each plugin does on every page load. Query Monitor shows you which plugin generates how many queries and how much time it costs. Do not just deactivate plugins you no longer use; delete them, since inactive plugins still expand your security surface.
Watch particularly for: social media feed plugins, unused page-builder modules, multiple contact form plugins, and sliders that load their own CSS and JS on every page.
"Multipurpose" themes shipping with hundreds of demo layouts also load the code for dozens of features you never use. Changing themes on a live site is a big decision, but if you are starting a new project, picking a lightweight theme beats every optimisation you would otherwise do later.
WordPress stores a revision every time you edit a post. On a site that has been running for years, half of wp_posts can be revisions — plus transients, spam comments and settings rows left behind by deleted plugins.
You can limit revisions by adding define('WP_POST_REVISIONS', 5); to wp-config.php. Always take a database backup before any cleanup.
A CDN serves your static files from a location near the visitor. If your audience is concentrated in one country and your server is in that country, the gain is limited; if your audience is geographically spread, the difference is clear. The second benefit is offloading static requests from your server, which lowers resource consumption.
Compressing HTML, CSS and JavaScript with Brotli or GZIP substantially reduces transfer size for text-based content. Also confirm your server supports HTTP/2 or HTTP/3, which carry many small files in parallel over a single connection.
Check whether compression is active with curl -I -H "Accept-Encoding: br,gzip" https://yoursite.com — you should see a content-encoding line in the response headers.
Four of the twelve items above depend directly on what your hosting provider gives you: PHP version, server-level caching, resource isolation and location. If those four are missing, no amount of plugin configuration compensates.
Nubitro web hosting plans provide all four out of the box: LiteSpeed means LSCache runs at full capacity, CloudLinux isolates each account so neighbouring sites cannot slow you down, cPanel lets you change PHP versions yourself, and the servers are located in Turkey. Plans include unlimited SSD disk space, unlimited monthly traffic, a free SSL certificate, unlimited email and FTP accounts and instant setup; PRO SSD plans carry a 2 CPU and 3–4 GB RAM allocation.
If your current site is with another provider, cPanel-to-cPanel migration is free. Review the plans on our professional SSD hosting page, or look at cheap SSD hosting for smaller projects. If your resource needs have outgrown shared hosting, our guide on the difference between VDS and VPS clarifies which step to take next.
In order: update PHP, enable server-level caching, convert images to WebP. Those three deliver most of the total gain on most sites and none of them requires writing code.
No. The score is an estimate calculated under lab conditions. What Google uses for ranking is real user measurement. A site scoring 85 with a field LCP of 2 seconds is in better shape than one scoring 98 with a field LCP of 3.5 seconds.
Three common causes: the plugin is set to a cache mode that requires LiteSpeed but your server is not LiteSpeed; you are testing while logged in (cached pages are not served to logged-in users); or the bottleneck is TTFB rather than caching. Test in a private window and measure TTFB separately.
Yes. On shared hosting with LiteSpeed, CloudLinux isolation and a current PHP version, a properly configured typical WordPress site comfortably passes Core Web Vitals. What genuinely requires a VDS is high traffic, heavy e-commerce or custom software.
Cart, my-account and checkout pages cannot be cached — on those pages performance depends directly on PHP and database speed. That makes object caching (Redis) and adequate CPU/RAM allocation far more critical on WooCommerce sites than on static ones.
Some plugins clean up their own tables on deletion, others leave them behind. Take a backup first, and check whether the plugin has a "preserve data on uninstall" setting.