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 theadvanced-cache.phpdrop-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
widthandheightto 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
.htaccessrules, which send WebP to browsers that accept it while the URLs in the HTML stay the same, or throughpictureelements in the HTML, which also works on servers without.htaccessand 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/uploadsand 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=swapto Google Fonts stylesheet URLs that are already on the page. - Font preload and preconnect hints – Adds
preloadlinks for the font files you enter andpreconnectlinks 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
.htaccesssupport is recommended. On other web servers (for example Nginx) the.htaccessrules 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.phpis recommended.
LNDLE Speed Pro
LNDLE Speed Pro is a separate plugin available at 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





Installation
- In your WordPress dashboard, go to Plugins Add New, search for “LNDLE Speed”, then install and activate it. Alternatively, upload the
lndle-speedfolder to/wp-content/plugins/and activate the plugin on the Plugins screen. - 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.
- Switch the recommendations you want on or off and click “Apply recommendations”.
- Open your site in a private browser window and check that pages look and work as before. The response header
X-LNDLE-Speed: HITshows 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 Speedinwp-config.php. IfWP_CACHEis already set totrue, the file is left unchanged. An existingWP_CACHEline with another value is replaced.- A block between
# BEGIN LNDLE Speedand# END LNDLE Speedat the top of the.htaccessfile 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.htaccessfile that sets the response headers for cached pages. - One
.webpfile next to each converted image inwp-content/uploads/, named after the original (for examplephoto.jpg.webp), as long as WebP creation is switched on. The original files are not touched.
When you deactivate the plugin, it removes its
.htaccessblock, its ownadvanced-cache.php(or restores the drop-in that was there before), theWP_CACHEline it added, the folderwp-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.webpfiles are deliberately kept: deleting them would be irreversible, and you can remove theuploadsfolder’s.webpfiles yourself at any time.Not removed automatically: a
WP_CACHEline that was already inwp-config.phpbefore 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, intowp-content/uploads/lndle-speed-fonts/. From then on the page links to that local copy, and thepreconnectto 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
.htaccessrules 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 theVary: Acceptheader, use thepictureelement 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
pictureelement for WebP instead of the.htaccessrules, because a CDN in front of the site may ignore theVary: Acceptheader. 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' );towp-config.phpso that the preload and WP-Cron requests can authenticate. -
How do I check a page without the cache?
-
Append
?nolndlespeedto the URL to bypass cache and optimization for a single request. Append?lndle-speed-guestto 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-lazyor the attributedata-no-lazyto 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
Contributors & Developers
“LNDLE Speed – Page Cache, WebP, Lazy Load & Performance” is open source software. The following people have contributed to this plugin.
Contributors“LNDLE Speed – Page Cache, WebP, Lazy Load & Performance” has been translated into 1 locale. Thank you to the translators for their contributions.
Translate “LNDLE Speed – Page Cache, WebP, Lazy Load & Performance” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
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
.htaccessswitch 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
.htaccessrules or throughpictureelements, 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.
