Title: LNDLE Speed – Page Cache, WebP, Lazy Load &amp; Performance
Author: LNDLE
Published: <strong>October 10, 2026</strong>
Last modified: October 12, 2026

---

Search plugins

![](https://ps.w.org/lndle-speed/assets/banner-772x250.png?rev=3738160)

![](https://ps.w.org/lndle-speed/assets/icon-256x256.png?rev=3738160)

# LNDLE Speed – Page Cache, WebP, Lazy Load & Performance

 By [LNDLE](https://profiles.wordpress.org/lndle/)

[Download](https://downloads.wordpress.org/plugin/lndle-speed.0.10.5.zip)

 * [Details](https://wordpress.org/plugins/lndle-speed/#description)
 * [Reviews](https://wordpress.org/plugins/lndle-speed/#reviews)
 *  [Installation](https://wordpress.org/plugins/lndle-speed/#installation)
 * [Development](https://wordpress.org/plugins/lndle-speed/#developers)

 [Support](https://wordpress.org/support/plugin/lndle-speed/)

## Description

LNDLE Speed is a caching and front-end optimization plugin for WordPress sites running
on Apache-compatible servers. It stores finished HTML pages as static files, serves
them through `.htaccess` rewrite rules, optimizes the HTML while a page is cached,
creates WebP versions of your images and serves Google Fonts from your own server.

After activation, a setup wizard inspects the site and proposes settings. You decide
which of them are applied, and every setting can be changed later.

#### Features

 * **Page cache** – Pages are saved as static HTML files in `wp-content/cache/lndle-
   speed/` and served directly by Apache or LiteSpeed. On other web servers the 
   cache is served through PHP by the `advanced-cache.php` drop-in.
 * **Automatic cache clearing** – When a post, page, comment or term changes, the
   affected pages and their archives are cleared. Changes to themes, menus, widgets,
   plugins and Elementor templates clear the whole cache. Cached pages also expire
   after a configurable lifetime.
 * **Cache preload** – After the cache has been cleared, the plugin reads your XML
   sitemap and requests the pages one after another via WP-Cron, in short time-limited
   runs. If no sitemap is found, it uses the most recently modified published content.
 * **Browser cache rules** – Optional Expires and Deflate (GZIP) rules written to`.
   htaccess`.
 * **Lazy load for images and iframes** – Adds the native `loading="lazy"` attribute.
   The first images on a page (two by default) are left out so that the logo and
   hero image load immediately. Exclusions by file name or class are possible.
 * **Lazy load for video posters** – Preview images of videos load shortly before
   the video scrolls into view, and the video file itself only loads on playback.
   Videos with autoplay are not changed.
 * **Missing image dimensions** – Adds `width` and `height` to local images that
   have neither, to avoid layout shifts.
 * **WebP images** – Creates a WebP version next to every JPEG and PNG upload, with
   the quality you choose. A background run does the same for the images already
   in your media library, and you can recreate all WebP files after changing the
   quality. The original files are never changed, and the WebP files stay in place
   when the plugin is removed.
 * **WebP delivery** – Either through `.htaccess` rules, which send WebP to browsers
   that accept it while the URLs in the HTML stay the same, or through `picture`
   elements in the HTML, which also works on servers without `.htaccess` and behind
   a CDN. The setup wizard recommends the method that suits your server.
 * **Hero image preload** – Finds the most important image at the top of the page
   and preloads it, in the format the browser will actually load.
 * **Defer JavaScript** – Scripts are loaded after the first paint instead of blocking
   it, with the execution order preserved. Scripts can be excluded by file name 
   or keyword; the setup wizard excludes known cookie-banner scripts on its own.
 * **CSS minification and combining** – Minifies local stylesheets that are not 
   minified yet and combines consecutive local stylesheets into one file. The original
   files are not changed.
 * **Asynchronous CSS** – Stylesheets you list (icon fonts, animations) are loaded
   without blocking the first paint.
 * **Google Fonts from your own server** – Fonts that a page requests from Google
   are downloaded once into `wp-content/uploads` and served from there. Visitors
   no longer connect to a Google server, which is what the German and Austrian data
   protection authorities ask for. New fonts are picked up automatically; the download
   runs in the background, never while a visitor waits.
 * **Google Fonts display swap** – Adds `display=swap` to Google Fonts stylesheet
   URLs that are already on the page.
 * **Font preload and preconnect hints** – Adds `preload` links for the font files
   you enter and `preconnect` links for the origins you enter.
 * **YouTube preview images** – Embedded YouTube videos are replaced by their preview
   image; the player only loads after a click.
 * **WordPress cleanup** – Disable the emoji script and the embed script, remove
   the generator tag, RSD, wlwmanifest and shortlink from the head, remove Dashicons
   for visitors who are not logged in, remove jQuery Migrate on the front end, and
   reduce or disable the Heartbeat API.
 * **Database cleanup** – Removes revisions, auto-drafts, trashed posts, spam and
   trashed comments and expired transients, then optimizes the tables. On demand
   at the push of a button, or once a week in the background.
 * **Setup wizard** – Detects the web server, Cloudflare, an existing server-side
   page cache, other caching and optimization plugins, plugins that already lazy-
   load images, Elementor, WooCommerce, cookie banner plugins, directory protection
   and the WP-Cron configuration, and recommends settings based on what it finds.
 * **Tools** – Admin bar entries to clear the whole cache or the current page, and
   a “View as visitor” link that shows the optimized page while you are logged in.

#### What is not cached

Logged-in users, requests with query strings (common tracking parameters such as`
utm_*`, `gclid` and `fbclid` are ignored), password-protected posts, search results,
404 pages, feeds, REST requests, and visitors with a comment-author or WooCommerce
cart cookie. The WooCommerce cart, checkout and account pages are always excluded.
You can exclude further paths in the settings.

#### Elementor

LNDLE Speed is built with Elementor sites in mind. The cache is cleared when Elementor
templates are saved or when Elementor regenerates its CSS files, the Elementor preview
is never cached or optimized, and the setup wizard points out when Elementor’s CSS
print method is set to inline output.

#### Requirements and limits

 * Apache or LiteSpeed with `.htaccess` support is recommended. On other web servers(
   for example Nginx) the `.htaccess` rules have no effect; cached pages are then
   served through PHP, and the browser cache rules do not apply.
 * WordPress Multisite is not supported.
 * There is no separate cache for mobile devices and no cache for logged-in users.
 * Cache preload and cache expiry depend on WP-Cron. On a site that is served mostly
   from the cache, a real cron job calling `wp-cron.php` is recommended.

#### LNDLE Speed Pro

LNDLE Speed Pro is a separate plugin available at [lndle.media/plugins/speed/](https://lndle.media/plugins/speed/).
It replaces the free plugin, takes over its settings and adds:

 * AVIF images, created alongside WebP and served first where the browser supports
   it
 * Image optimization: compress and downscale JPEG and PNG files, remove metadata,
   keep the originals and restore them again
 * Delay JavaScript until user interaction
 * Elementor background images: preload the hero background per breakpoint, including
   slider slides, and lazy-load the ones below the fold
 * Detection of the fonts actually used above the fold, in the setup wizard
 * A check that measures how many bytes each delivery method really saves on your
   site
 * Detection of Cloudflare Rocket Loader
 * Automatic updates and support

The Pro features are not contained in this plugin: the code for them is only part
of the separate Pro plugin. Everything in the feature list above works without Pro,
and your settings are kept if you switch.

## Screenshots

[⌊Dashboard with the system status⌉⌊Dashboard with the system status⌉[

Dashboard with the system status

[⌊Setup wizard with the recommendations for this server⌉⌊Setup wizard with the recommendations
for this server⌉[

Setup wizard with the recommendations for this server

[⌊Cache settings⌉⌊Cache settings⌉[

Cache settings

[⌊Media: lazy load, WebP creation and delivery⌉⌊Media: lazy load, WebP creation 
and delivery⌉[

Media: lazy load, WebP creation and delivery

[⌊JavaScript and CSS settings⌉⌊JavaScript and CSS settings⌉[

JavaScript and CSS settings

## Installation

 1. In your WordPress dashboard, go to Plugins  Add New, search for “LNDLE Speed”, 
    then install and activate it. Alternatively, upload the `lndle-speed` folder to`/
    wp-content/plugins/` and activate the plugin on the Plugins screen.
 2. After the first activation you are taken to the setup wizard at Settings  LNDLE
    Speed. It lists what was detected on your site and the recommended settings.
 3. Switch the recommendations you want on or off and click “Apply recommendations”.
 4. Open your site in a private browser window and check that pages look and work as
    before. The response header `X-LNDLE-Speed: HIT` shows that a page was served from
    the cache.

If another caching plugin is active, deactivate it first. Two page caches interfere
with each other.

## FAQ

### Does it work with Elementor?

Yes. The cache is cleared when you save Elementor templates or when Elementor regenerates
its CSS files, and the Elementor preview is never cached or optimized. If Elementor
prints its CSS inline, the setup wizard suggests switching the CSS print method 
to “External File”, which works better with a page cache.

### What does the plugin write to my server?

On activation and whenever you save the settings, LNDLE Speed writes the following:

 * `wp-content/advanced-cache.php` – the WordPress drop-in that loads the cache 
   engine before WordPress itself. If a drop-in from another caching plugin already
   exists and that plugin is still active, the file is not replaced; you get a notice
   and can replace it manually. The previous drop-in is then kept in the database
   and written back when LNDLE Speed is deactivated.
 * `wp-content/cache/lndle-speed/config.php` – a generated configuration file for
   the cache engine, in the plugin’s own cache directory. That directory denies 
   direct access to PHP files.
 * `define( 'WP_CACHE', true ); // LNDLE Speed` in `wp-config.php`. If `WP_CACHE`
   is already set to `true`, the file is left unchanged. An existing `WP_CACHE` 
   line with another value is replaced.
 * A block between `# BEGIN LNDLE Speed` and `# END LNDLE Speed` at the top of the`.
   htaccess` file in your site root, containing the rewrite rules for the page cache
   and, if enabled, the browser cache rules.
 * The folder `wp-content/cache/lndle-speed/` with the cached pages, the minified
   and combined CSS files and a small `.htaccess` file that sets the response headers
   for cached pages.
 * One `.webp` file next to each converted image in `wp-content/uploads/`, named
   after the original (for example `photo.jpg.webp`), as long as WebP creation is
   switched on. The original files are not touched.

When you deactivate the plugin, it removes its `.htaccess` block, its own `advanced-
cache.php` (or restores the drop-in that was there before), the `WP_CACHE` line 
it added, the folder `wp-content/cache/lndle-speed/` with the configuration file,
and its scheduled events. When you delete the plugin, its options are removed from
the database as well. The generated `.webp` files are deliberately kept: deleting
them would be irreversible, and you can remove the `uploads` folder’s `.webp` files
yourself at any time.

Not removed automatically: a `WP_CACHE` line that was already in `wp-config.php`
before activation. Removal requires that the files are still writable at the time
of deactivation.

### My host already has a server cache. Do I still need the page cache?

Usually not. The setup wizard requests your home page and looks for response headers
of a server-side page cache (for example Varnish, Nginx FastCGI cache or LiteSpeed)
and of the Cloudflare HTML cache. If it finds one, it switches the page cache and
the preload off in its recommendations so that pages are not cached twice. The other
features – lazy load, image dimensions, CSS minification and the WordPress cleanup–
can be used together with a server cache. In that case, clear the cache at your 
hosting provider after changing settings or content.

### How does serving Google Fonts locally work?

Switch on “Serve Google Fonts from this website” under “Files”. When a page requests
a stylesheet from `fonts.googleapis.com`, the plugin notes the address and downloads
it in the background, together with the font files, into `wp-content/uploads/lndle-
speed-fonts/`. From then on the page links to that local copy, and the `preconnect`
to Google is removed. Visitors never connect to Google. The download needs an outgoing
connection from your server to Google once per font set; if your host blocks that,
the page keeps using the Google copy and nothing breaks. Fonts that a theme or plugin
already hosts itself are not touched, and font files cannot be converted into another
format by the plugin.

### Does the plugin send data anywhere?

No. The plugin has no tracking, does not contact a license or update server and 
loads no external scripts or fonts.

It makes HTTP requests to your own site only: the cache preload requests your sitemap
and your pages so that they are cached, and the setup wizard fetches your home page
from your browser to look for cache headers. Pages are only preloaded if they belong
to your own domain. Sitemaps on other domains are ignored.

The settings page contains links to the LNDLE Speed Pro page on lndle.media. They
are plain links; nothing is loaded from there unless you click them.

### Which images are converted to WebP?

JPEG and PNG files in the media library, including the sub-sizes WordPress creates.
The WebP file is written next to the original and is only kept if it is actually
smaller. Images that are already WebP, AVIF, SVG or GIF are left alone, and so are
the original files – nothing is overwritten.

### Which WebP delivery method should I choose?

On Apache or LiteSpeed without a CDN in front of the site, the `.htaccess` rules
are the better choice: they also cover background images in CSS and leave the HTML
unchanged. On Nginx, or behind a CDN or server cache that may ignore the `Vary: 
Accept` header, use the `picture` element instead. The setup wizard makes a recommendation
based on what it finds on your server, and you can switch at any time.

### Does it improve the Core Web Vitals?

That is what the plugin is built for. The page cache cuts the server response time,
which is what Time to First Byte measures. The hero image preload and the WebP delivery
shorten the Largest Contentful Paint, because the browser finds the most important
image earlier and downloads a smaller file. Adding the missing width and height 
to images prevents the layout shifts that Cumulative Layout Shift counts. Defer 
JavaScript and the combined, asynchronous stylesheets reduce the work the browser
has to do before the first paint, which shows up in Interaction to Next Paint. How
much each of them is worth depends on the site; the plugin measures nothing and 
promises no score.

### How is this different from the other caching plugins?

It is built around Apache and LiteSpeed with `.htaccess`, and around Elementor sites.
Cached pages are served by the web server itself, without starting WordPress. The
setup wizard looks at the server, the installed plugins and the response headers
before it recommends anything, instead of switching everything on at once. There
is no account, no external service and no tracking.

### Does it work with WooCommerce?

Yes. Cart, checkout and the account pages are never cached, and visitors who have
something in their cart are served uncached pages. The rest of the shop is cached
as usual. Be careful with aggressive JavaScript settings on a shop and test the 
cart, the variations and the checkout after switching them on.

### Can I use it together with Cloudflare or another CDN?

Yes. The setup wizard detects Cloudflare and other proxy caches and adapts its recommendations,
for example by suggesting the `picture` element for WebP instead of the `.htaccess`
rules, because a CDN in front of the site may ignore the `Vary: Accept` header. 
After changing settings or content, the cache at the CDN has to be cleared separately;
the plugin cannot do that for you.

### Does it support Multisite?

No. Multisite networks are not supported, and the setup wizard shows a warning when
it detects one.

### Does it work on Nginx?

Partly. Without `.htaccess`, cached pages are served through PHP instead of directly
by the web server, which is slower than on Apache or LiteSpeed, and the browser 
cache rules have no effect. The setup wizard tells you which web server it found.

### My staging site is password protected. Why does the preload not work?

With HTTP basic authentication in front of the site, the preload receives a 401 
response. Add `define( 'LNDLE_SPEED_HTTP_AUTH', 'user:password' );` to `wp-config.
php` so that the preload and WP-Cron requests can authenticate.

### How do I check a page without the cache?

Append `?nolndlespeed` to the URL to bypass cache and optimization for a single 
request. Append `?lndle-speed-guest` to see the page as a visitor would, with all
optimizations, while you are logged in.

### How do I exclude an image from lazy load?

Add the class `skip-lazy` or the attribute `data-no-lazy` to the image, or enter
part of the file name or class under “Lazy load exclusions”.

### Is the database cleanup reversible?

No. Revisions, auto-drafts, trashed items and spam are deleted permanently. Create
a backup first.

## Reviews

![](https://secure.gravatar.com/avatar/4f8188ca5439d28210779925441db5b82e33e4d50238916462b2e560cad74b70?
s=60&d=retro&r=g)

### 󠀁[Even better than WP Rocket!](https://wordpress.org/support/topic/even-better-than-wp-rocket/)󠁿

 [advnce](https://profiles.wordpress.org/advnce/) October 12, 2026

I tested WP Rocket and Lndle Speed on my page and on my clients pages and LNDLE 
Speed is always better and faster – we work with Elementor and I feel like this 
is the perfekt match – Elementor + LNDLE Speed it is!Will use it for all my clients
now!

 [ Read all 1 review ](https://wordpress.org/support/plugin/lndle-speed/reviews/)

## Contributors & Developers

“LNDLE Speed – Page Cache, WebP, Lazy Load & Performance” is open source software.
The following people have contributed to this plugin.

Contributors

 *   [ LNDLE ](https://profiles.wordpress.org/lndle/)

“LNDLE Speed – Page Cache, WebP, Lazy Load & Performance” has been translated into
1 locale. Thank you to [the translators](https://translate.wordpress.org/projects/wp-plugins/lndle-speed/contributors)
for their contributions.

[Translate “LNDLE Speed – Page Cache, WebP, Lazy Load & Performance” into your language.](https://translate.wordpress.org/projects/wp-plugins/lndle-speed)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/lndle-speed/), check
out the [SVN repository](https://plugins.svn.wordpress.org/lndle-speed/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/lndle-speed/) by
[RSS](https://plugins.trac.wordpress.org/log/lndle-speed/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 0.10.5

 * Fixed (Setup): a response header such as “x-cache-status: MISS” was read as “
   the server already caches the pages”, even though MISS and BYPASS mean the opposite.
   On such sites the setup wizard deselected “Page cache” and “Preload cache” without
   reason. The check now asks twice and only counts a reply that really came from
   a cache.
 * Fixed (Pro, “Delay JavaScript”): if a consent tool parks third-party scripts 
   and releases them after consent (Borlabs Cookie, Complianz, Real Cookie Banner,
   Cookiebot and others), jQuery is no longer delayed on that page. The released
   script used to run before the delayed jQuery and failed with “jQuery is not defined”.
   This extends the fix from 0.10.3 to scripts that are not in the page as JavaScript
   yet.
 * Improved: when the plugin is deleted, the folder for the locally stored Google
   Fonts is now removed as well, not just the font files inside it. Nothing else
   in your uploads folder is touched.

#### 0.10.4

 * Improved (Pro, “License”): the license key now has a “Save license key” button
   of its own, right next to the field. It saves the key and checks it with the 
   license server in one step, and the result is shown on the spot. “Check license
   now” is a button of the same form, so a key that has just been entered can no
   longer be lost.
 * Fixed (Pro, “License”): the field no longer contains the stored key in masked
   form. It stays empty and shows the mask as a placeholder, so a pasted key can
   no longer mix with the mask and be discarded without a message. An empty field
   means “keep the stored key”; the key is deleted with “Remove license”.

#### 0.10.3

 * Fixed (Pro, “Delay JavaScript”): when an inline script is excluded under “JavaScript
   exclusions” and uses jQuery – a consent banner or a content blocker, for example–
   jQuery itself is no longer delayed. Those scripts run immediately again, as their
   exclusion intends. Consent and the scripts that depend on it must not wait for
   the first click.
 * Everything else is unchanged: without such a script jQuery is delayed as before,
   and scripts with data-no-optimize are never touched.

#### 0.10.2

 * Fixed (Pro, “Delay JavaScript”): inline scripts that matched an entry under “
   JavaScript exclusions” but call jQuery ran before the delayed jQuery and failed
   with “jQuery is not defined” (for example the content blocker scripts of Borlabs
   Cookie with the default exclusion “borlabs”).

#### 0.10.0

 * New: Google Fonts can be served from your own server. The fonts are downloaded
   once into the uploads folder, the page links to the local copy and the preconnect
   to Google is removed – no visitor connects to Google any more.
 * The setup wizard reports whether the home page requests fonts from Google and
   recommends the new setting when it does.
 * The setup wizard also points out font files that are still in the old TTF or 
   OTF format and would be about 70 percent smaller as WOFF2.

#### 0.9.3

 * Fixed: WebP files were not created. In 0.9.1 and 0.9.2 the conversion was started
   only in the Pro edition, so neither new uploads nor the run over the media library
   produced any files. Please start the run under “Media” once after updating.
 * New: a button that deletes the generated WebP files again, without touching your
   original images.
 * New: the media settings show how much of the media library already has a WebP
   file, and which format a visitor’s browser gets.
 * The WebP quality is now set with a slider from “Smallest files” to “Highest quality”
   instead of a bare number.
 * Fonts in WOFF, TTF and OTF format can be preloaded as well; so far only WOFF2
   was recognized.
 * The cache rules in `.htaccess` switch themselves off if the plugin folder is 
   removed without deactivating the plugin first.

#### 0.9.2

 * Plugin title, short description and tags reworded so that the plugin can be found
   in the directory.
 * New entries in the FAQ on the Core Web Vitals, WooCommerce and CDNs.
 * No functional changes.

#### 0.9.1

 * New: creates WebP versions of JPEG and PNG images, on upload and for the existing
   media library.
 * New: serves WebP either through `.htaccess` rules or through `picture` elements,
   whichever suits the server.
 * New: preloads the hero image of a page.
 * New: Defer JavaScript, with exclusions by file name or keyword.
 * New: combines consecutive local stylesheets and loads selected stylesheets asynchronously.
 * New: preloads the font files you enter.
 * New: replaces embedded YouTube videos with their preview image until they are
   clicked.
 * New: the database cleanup can run once a week in the background.
 * The setup wizard recommends the delivery method that suits the server it finds.

#### 0.9.0

 * First public release.

## Meta

 *  Version **0.10.5**
 *  Last updated **3 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.1.3**
 *  PHP version ** 7.4 or higher **
 *  Languages
 * [English (US)](https://wordpress.org/plugins/lndle-speed/) and [German](https://de.wordpress.org/plugins/lndle-speed/).
 *  [Translate into your language](https://translate.wordpress.org/projects/wp-plugins/lndle-speed)
 * Tags
 * [cache](https://wordpress.org/plugins/tags/cache/)[elementor](https://wordpress.org/plugins/tags/elementor/)
   [google fonts](https://wordpress.org/plugins/tags/google-fonts/)[page cache](https://wordpress.org/plugins/tags/page-cache/)
   [webp](https://wordpress.org/plugins/tags/webp/)
 *  [Advanced View](https://wordpress.org/plugins/lndle-speed/advanced/)

## Ratings

 5 out of 5 stars.

 *  [  1 5-star review     ](https://wordpress.org/support/plugin/lndle-speed/reviews/?filter=5)
 *  [  0 4-star reviews     ](https://wordpress.org/support/plugin/lndle-speed/reviews/?filter=4)
 *  [  0 3-star reviews     ](https://wordpress.org/support/plugin/lndle-speed/reviews/?filter=3)
 *  [  0 2-star reviews     ](https://wordpress.org/support/plugin/lndle-speed/reviews/?filter=2)
 *  [  0 1-star reviews     ](https://wordpress.org/support/plugin/lndle-speed/reviews/?filter=1)

[Your review](https://wordpress.org/support/plugin/lndle-speed/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/lndle-speed/reviews/)

## Contributors

 *   [ LNDLE ](https://profiles.wordpress.org/lndle/)

## Support

Issues resolved in last two months:

     1 out of 1

 [View support forum](https://wordpress.org/support/plugin/lndle-speed/)