=== Speedlyst - Web Speed Analytics ===
Contributors: greatgatsbys
Tags: pagespeed, core web vitals, speed test, performance, admin
Requires at least: 5.8
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 0.52.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Find what slows WordPress down. Not just the score.

== Description ==

Google PageSpeed Insights shows what your visitors experience. Speedlyst adds local WordPress diagnostics to help you understand what may be causing the problem.

Measure mobile PageSpeed Insights and Core Web Vitals, check the health and performance of WordPress itself, follow changes over time, and export everything into one AI-ready report.

Speedlyst helps you diagnose:

* Core Web Vitals and mobile PageSpeed performance
* PHP memory usage and limits
* Object cache and OPcache
* Autoloaded options and database overhead
* WP-Cron delays
* WordPress admin performance
* Changes and trends over time

No Google API key, account, or registration is required.

Speedlyst measures and diagnoses performance. It does not modify, cache, or optimise your website automatically.

This plugin is an independent project and is not affiliated with, endorsed by, or sponsored by Google LLC.

=== PageSpeed Insights and Core Web Vitals ===

Click Measure site speed to run a mobile performance test using Google PageSpeed Insights.

Speedlyst shows:

* Mobile Lighthouse performance score
* Largest Contentful Paint (LCP)
* Interaction to Next Paint (INP)
* Cumulative Layout Shift (CLS)
* Laboratory data from the current test
* Real-user Chrome UX Report data when available
* Prioritised opportunities for improvement
* Recommended actions based on the measured results

The first measurement runs only when you request it.

You can request up to 10 PageSpeed Insights measurements per site per day. Local WordPress diagnostics do not use this allowance.

No Google API key needs to be configured.

=== Local WordPress diagnostics ===

PageSpeed Insights tells you what happens in the browser. Speedlyst also looks inside WordPress and at the hosting environment to help identify possible causes.

Local diagnostics include:

* PHP version and end-of-life status
* PHP `memory_limit`
* Real peak memory usage
* Persistent object cache status and detected backend
* OPcache status
* Number and total size of autoloaded options
* Largest autoloaded options
* Overdue WP-Cron tasks
* Age of the oldest delayed cron task
* WordPress admin request time
* Database query count
* Peak memory used by the measured admin request
* WP_DEBUG status
* Number of active plugins
* Active theme

Recommendations are generated from the measurements that are actually available and prioritised by importance.

If the hosting environment cannot provide a value, Speedlyst shows it as Not measured rather than incorrectly reporting zero.

=== Performance history ===

A single test can be misleading. Speedlyst stores daily snapshots locally so you can see whether something has changed or is gradually getting worse.

You get:

* Up to 90 daily snapshots of local WordPress diagnostics
* Up to 60 stored PageSpeed Insights measurements
* 14-day charts in the dashboard
* 7-day trends for key metrics
* Recommendations shown alongside relevant data

Missing measurements remain gaps instead of being displayed as unchanged values.

This makes it easier to see whether a plugin update, configuration change, hosting issue, or gradual increase in resource usage has affected the site.

=== WordPress admin performance ===

A slow WordPress admin is not something a PageSpeed score can explain.

Speedlyst adds local measurements that can help identify common causes, including:

* PHP memory limits and actual memory usage
* Large autoloaded options
* Object cache configuration
* OPcache status
* Overdue WP-Cron tasks
* Database query count
* Admin request time
* PHP version
* Active plugins and theme

The goal is not just to tell you that WordPress is slow, but to give you useful evidence about where to investigate first.

=== AI-ready report ===

Instead of copying numbers from screen after screen, download everything in one Markdown file.

The report includes:

* Current local WordPress diagnostics
* The latest PageSpeed Insights measurement
* Reference values for each section
* Recommendations
* A ready-to-use prompt for an AI assistant

Upload or paste the report into ChatGPT, Claude, Gemini, or another AI assistant for deeper troubleshooting.

For more complex performance problems, a reasoning-capable model will usually provide a more useful analysis than a model optimised primarily for speed.

The report is generated locally inside WordPress and downloaded directly to you. Speedlyst does not automatically upload it to an AI provider or to the Speedlyst measurement service.

The report uses the language currently selected in the plugin.

=== Privacy ===

Local diagnostics, recommendations, history, and report generation run inside your WordPress installation.

Speedlyst:

* Does not use cookies
* Does not collect visitor data
* Does not load anything on the public frontend
* Does not run PageSpeed Insights automatically
* Does not send your AI report anywhere

An external request is made only when you click Measure site speed.

PageSpeed Insights results and local diagnostic data are stored in your WordPress database.

=== Languages ===

Speedlyst supports 21 languages.

The language can follow the current WordPress user or be selected individually inside the plugin.

When an official WordPress.org language pack is available, Speedlyst prefers it and falls back to the bundled translation when necessary.

Learn more at https://speedlyst.org/ about Speedlyst.

== External services ==

Speedlyst connects to two external services when you explicitly request a PageSpeed Insights measurement.

No external request is made when the plugin is activated or during normal background operation.

**1. Speedlyst measurement service**

The Speedlyst measurement service performs the Google PageSpeed Insights API request on your behalf so that you do not need your own Google API key.

When you request a measurement, the plugin sends:

* The public home URL being measured
* A one-time random verification code valid for five minutes
* The installed Speedlyst version

The service reads the temporary verification value from a public REST endpoint on your website to confirm that the measurement request belongs to that site.

The service stores only:

* The domain being measured
* The time of the request

These records are kept for two days to enforce the measurement limit and protect the service from abuse.

Besides your per-site daily allowance, the service applies a short-term overall rate limit across all sites to protect itself. A measurement can therefore occasionally be declined even when your own allowance is not used up. Wait a moment and request it again.

The service does not store:

* PageSpeed measurement results
* Page content
* Posts
* WordPress user data
* Visitor data

Verification codes expire after five minutes.

Operator: Petr Kučera, PPC ONE, Czech Republic
Terms of service: https://speedlyst.org/terms/
Privacy policy: https://speedlyst.org/privacy/

**2. Google PageSpeed Insights API**

After verification, the Speedlyst measurement service sends the public URL being measured to the Google PageSpeed Insights API.

Google loads and analyses the public page and returns the performance data shown in Speedlyst.

Google receives the public URL being measured and may return laboratory data and real-user Chrome UX Report data when available.

Google Terms of Service: https://policies.google.com/terms
Google Privacy Policy: https://policies.google.com/privacy

== Installation ==

1. Upload the plugin to `/wp-content/plugins/` or install it through **Plugins, Add New**.
2. Activate it through the **Plugins** screen.
3. Open **Speedlyst** in the admin menu to review the local diagnostics.
4. Click **Measure site speed** when you want to request mobile Google PageSpeed Insights results.

== Frequently Asked Questions ==

=== Will Speedlyst make my website faster? ===

Not by itself.

Speedlyst is a diagnostic tool. It helps you find what may be slowing the site down and recommends what to investigate or improve first.

You can then make the change yourself, pass the information to a developer, or use the AI-ready report with an AI assistant.

Afterwards, Speedlyst's history helps you see whether the change actually improved the site.

=== Do I need a Google PageSpeed Insights API key? ===

No.

Speedlyst's measurement service performs the PageSpeed Insights API request for you. You do not need to create a Google account, configure an API key, or connect another service.

=== How many PageSpeed tests can I run? ===

You can request up to 10 PageSpeed Insights measurements per site per day.

Local WordPress diagnostics do not count towards this limit.

The measurement service also applies a short-term overall rate limit across all sites. If a measurement is declined while you still have allowance left, wait a moment and try again.

=== Why are my results different from PageSpeed Insights or Lighthouse? ===

Lighthouse laboratory measurements are individual tests performed under specific test conditions. Those conditions can vary between runs, so scores and individual metrics can vary too.

Speedlyst stores history to make it easier to distinguish a longer-term trend from a single result.

=== Why is Core Web Vitals field data missing? ===

Real-user field data comes from the Chrome UX Report.

Google provides it only when it has enough eligible real-user data for the measured URL or origin.

When field data is unavailable, Speedlyst reports it as Not measured rather than zero.

=== What is a good LCP, INP, or CLS? ===

Google currently classifies:

* LCP: 2.5 seconds or less as good
* INP: 200 milliseconds or less as good
* CLS: 0.1 or less as good

Speedlyst displays these thresholds directly alongside the measurements.

=== Why is my WordPress admin slow? ===

Common causes include insufficient PHP memory, high memory usage, database activity, large autoloaded options, delayed cron tasks, missing object caching, PHP or OPcache configuration, plugins, or the active theme.

Speedlyst measures several of these factors together so you can see where the problem is most likely to be.

=== Does Speedlyst slow down my website? ===

Speedlyst does not load anything on the public frontend.

PageSpeed Insights measurements run only when you request them. Local history collection is lightweight and runs inside WordPress.

=== Can I measure a local, private, or password-protected website? ===

No.

The Speedlyst measurement service must be able to reach a temporary public verification endpoint, and Google must be able to load the public page being measured.

Password protection, firewalls, security plugins, blocked external IP addresses, or similar restrictions may prevent the measurement from working.

=== Does Speedlyst send data automatically? ===

No external PageSpeed request is made automatically.

Local diagnostics, recommendations, history, and report generation remain inside WordPress.

The external measurement process starts only when you click Measure site speed.

=== Where does the AI report go? ===

The report is created inside your WordPress installation and downloaded directly to you.

Speedlyst does not send it to the measurement service or to an AI provider.

You decide whether and where to upload it.

=== Does Speedlyst use cookies or collect visitor data? ===

No.

Speedlyst does not use cookies and does not collect information about your website visitors.

=== Why does a value say "Not measured"? ===

Some hosting environments prevent plugins from reading certain server values.

When Speedlyst cannot retrieve a value reliably, it reports it as Not measured instead of substituting an incorrect zero.

=== What happens to my data when I uninstall? ===

Your local diagnostics and history stay in the WordPress database after you uninstall the plugin, so that reinstalling does not lose your history.

To remove them, delete the options whose names start with `speedlyst_`, for example with WP-CLI. On a multisite installation, remove them for each site separately.

=== Does Speedlyst support WordPress Multisite? ===

Yes.

Speedlyst stores diagnostic data separately for each site in a WordPress Multisite installation.

== Screenshots ==

1. Dashboard status cards for PHP, memory, autoload data, OPcache, and WP-Cron, with 14-day history trends for local performance.
2. Mobile PageSpeed score, Core Web Vitals thresholds, and prioritized improvement opportunities.
3. Local history trends with daily snapshots, 7-day sparklines, and recommendations for improving WordPress performance.
4. Site status and advanced diagnostics for admin speed, object cache, cron delays, and the largest autoloaded options.
5. AI report export with current measurements, the latest PageSpeed Insights result, reference values, and a ready-made question.

== Changelog ==

= 0.52.1 =
* The listing now also documents the short-term overall rate limit of the measurement service, so it is clear why a measurement can occasionally be declined. No functional changes.

= 0.52.0 =
* Rewritten plugin listing: shorter sentences, the value first, and the same voice as the product website.
* Stored options now use the `speedlyst_` prefix, which matches the plugin name. The uninstall instructions were updated accordingly.

= 0.51.2 =
* Documentation only: a shorter, clearer changelog and an upgrade notice that matches the current version. No functional changes.

= 0.51.1 =
* Visual polish of the brand refresh: brand colors on a light admin screen throughout.
* Admin notices from other plugins stay readable wherever WordPress places them.

= 0.51.0 =
* The new Speedlyst brand in the admin screen: new mark and thin line icons.
* Links to the product website from the plugin header, the plugins list, and the plugin screen.

= 0.50.0 =
* Error and warning notices from other plugins stay exactly where WordPress puts them. Only success and informational notices are collected into the collapsible panel on the Speedlyst screen.

= 0.49.0 =
* Settings link in the plugins list and a shorter admin URL. Stored data is unchanged.

= 0.48.0 =
* Notices from other plugins are collected into a collapsible panel on the Speedlyst screen, where they stay visible and dismissible.

= 0.47.0 =
* The plugin is now Speedlyst - Web Speed Analytics. No functional changes.

= 0.46.0 =
* An explicit statement that this project is independent of Google.
* A dedicated External services section describing the measurement service, its terms of service, and its privacy policy: the service stores only the domain of the measured site and the time of the request, for two days, and never the measurement results.

= 0.45.0 =
* Neutral wording in the AI report guidance: use the most capable model available. No functional changes.

= 0.44.0 =
* Up to 10 PageSpeed Insights measurements per site per day.
* Measurements run only after you click the measurement button.
* Integration with the WordPress Privacy API.

= 0.43.0 and earlier =
* Development before the public release. The plugin became a standalone WordPress speed diagnostics tool with no account, pairing, or Google API key required.

== Upgrade Notice ==

= 0.52.1 =
Documentation only. No functional changes and no change to stored data.

= 0.52.0 =
A clearer plugin listing and a `speedlyst_` prefix for stored options. Existing data from earlier versions is not migrated; the uninstall instructions explain how to remove it.
