WooCommerce checkout speed: a lighter, faster purchase

The checkout cannot be cached, so it depends on the server, its scripts and payment tools. How it recalculates, what slows it, and how to test it with a cart.

AdvancedHow-to6 min readUpdated October 30, 2026

In this guide
  1. Why the checkout is different
  2. What happens when a visitor fills in the form
  3. What slows a checkout
  4. What to fix
    1. 1. Make the server fast for pages that are not cached
    2. 2. Remove fields you do not need
    3. 3. Load fewer scripts
    4. 4. Make recalculations quick
    5. 5. Keep the page quiet
    6. 6. Do not speculate on it
  5. How to test a checkout
  6. Mistakes to avoid
  7. Check your own page
  8. Sources

Why the checkout is different

On the rest of a store, a page cache does most of the work. The checkout is the exception. WooCommerce defines the constants DONOTCACHEPAGE, DONOTCACHEOBJECT and DONOTCACHEDB on the cart, checkout and account pages, and adds WordPress's no-cache headers. The reason is sound: the page holds the customer's basket, address and totals.

That means each checkout view is built by PHP, with database queries, on your server. A slow host, a missing object cache or a heavy plugin shows up here first. See WooCommerce speed for the whole store.

The page also loads its own scripts. WooCommerce adds a checkout script on this page only, and a payment tool, a tax or shipping plugin, an address lookup, analytics and sometimes a chat widget add more.

What happens when a visitor fills in the form

This is how the classic checkout script behaves, according to its source code:

So every recalculation is a full request to your server that loads WordPress and your plugins. If a shipping or tax plugin calls another company's server on each recalculation, the visitor waits for that too. A slow answer is visible, and it happens in the middle of a purchase.

To see it for yourself, open DevTools, go to the Network panel, type wc-ajax in the filter, and reload the checkout. The first request appears on its own. Then change a country and look at the time each request takes.

What slows a checkout

The server. The checkout is never cached, so the server's response time and the database matter. See hosting for WordPress and WordPress caching, where the object cache is covered.

Payment tools and other scripts. The 2025 Web Almanac describes payments as a major dependency surface: third-party scripts, redirects, fraud tools and compliance requirements. Each payment method that adds a button or a form field can load its own scripts. Wallet buttons, card fields, address lookups, tracking tags, session recording and chat all run on the main thread while the customer tries to type. See third-party scripts.

Too many fields. Every field is more typing, more validation and, for address fields, another recalculation.

Heavy page furniture. A large header, a slider, a newsletter pop-up or a related-products block adds weight to the page where the customer has least patience for it.

Slow rules. Complicated shipping, tax or discount rules take longer to calculate. This matters most for stores with many shipping zones or rules that call outside services.

What to fix

1. Make the server fast for pages that are not cached

Work through the host, PHP, the object cache and the plugins, as in the earlier guides. If the checkout is slow and the product pages are fast, this is the first place to look.

2. Remove fields you do not need

WooCommerce lets a developer change the checkout fields with the woocommerce_checkout_fields filter, and it has a separate filter and setting for the order notes box. Guest checkout is a setting too: if you require an account, the customer has more to do. Keep every field you need for shipping, tax and the law, and drop the rest. Test with real orders before you remove a field that a plugin or your fulfilment process relies on.

3. Load fewer scripts

4. Make recalculations quick

5. Keep the page quiet

Use a simple template for the checkout. No slider, no promotional banner, no related products. A smaller page loads sooner and keeps attention on the form.

6. Do not speculate on it

If you use speculation rules, exclude the cart, checkout and account pages. A page that is loaded before the visitor sees it can show stale basket data, and it can run payment scripts early.

How to test a checkout

An online tester starts with an empty cart, and WooCommerce redirects a visit to the checkout with an empty cart to the cart page. To test the real page, use Chrome's own Lighthouse panel:

  1. Open a private window, so that extensions and old data do not affect the result.
  2. Add a product to the cart and go to the checkout, in that window.
  3. Open DevTools and go to the Lighthouse panel. Choose Navigation mode and the device you want to test.
  4. Run it. Lighthouse reloads the page you are on.

Lighthouse 13.5 resets some stored data before a run: file systems, the shader cache, service workers and cache storage, as well as the browser's HTTP cache. According to its settings, cookies are not on that list, so the cart session survives. The Chrome documentation describes a Clear Storage checkbox for this reset and says to leave it on to audit a first-time visitor's experience. Check that the report shows the checkout form and not an empty-cart message.

Then test what a score cannot show:

Mistakes to avoid

Check your own page

The free audit cannot reach a checkout with a cart, so run it on a product page for a baseline, then do the Lighthouse test above with an item in the cart. Open 3rd parties, Reduce unused JavaScript and Document request latency. If the server response is slow, work on hosting and caching. If the scripts are heavy, start with the payment and tracking tools. Then time the recalculation.

Sources

Start here

Free website audit

Live Google data for any public page: mobile and desktop.

Mobile + desktop · Lighthouse lab test · Real-user Chrome data when Google has it

Rather have this done for you? WordPress speed · Book a call

Related guides

All guides →