The check catalogue

Twenty-seven checks in six areas. Every one can be switched off from Microscope → Checks when it doesn’t apply to how your site is hosted.

PHP

The runtime the site is actually served by — with the SAPI caveat in mind.

CheckWhat it looks at
OPcache
opcache
That PHP’s bytecode cache is enabled and large enough to hold Craft, its plugins and your templates without evicting them — memory, file count, interned strings, hit rate, restarts and timestamp validation. The highest-value check in the plugin: Craft is several thousand PHP files before a single plugin is installed, and without OPcache every one is read, parsed and compiled on every request.
PHP version
phpVersion
The version against the one Craft performs best on, and against PHP’s own security support schedule.
Memory limit
memoryLimit
memory_limit against what Craft needs for image transforms, project config and large queries.
Request limits
requestLimits
max_execution_time, max_input_vars and the upload limits, against what the control panel needs to save large entries and assets.
Performance extensions
phpExtensions
Optional extensions that let Craft take a faster path — shared-memory caching (APCu, Redis), Imagick, and Zstandard compression.
Realpath cache
realpathCache
The size and lifetime of PHP’s path resolution cache, which Composer-based applications lean on heavily.

Database

MySQL and MariaDB, measured against your real data volume. On PostgreSQL every check here records itself as skipped.

CheckWhat it looks at
InnoDB buffer pool
innodbBufferPool
The buffer pool against the size of Craft’s data, and how often pages are being read from disk instead of served from memory.
Database version
databaseVersion
The MySQL or MariaDB version against the one Craft is tuned for.
Table sizes
tableBloat
Craft tables that have grown out of proportion to the site’s actual content — usually revisions, sessions or the queue.
Temporary tables
tempTables
How often the database has to write temporary tables to disk while sorting and grouping.
Slow query log
slowQueryLog
Whether slow queries are being logged at all, and how many the server has seen.
Connections
connectionLimits
Connection limits, refused connections, and the thread and table caches.
Query cache
queryCache
Whether MariaDB’s query cache is enabled, which serialises writes behind a global lock.

Server

The machine and the connection in front of it. Several of these read short, read-only shell commands; if shell probes are off or the host blocks them, the check skips rather than guesses.

CheckWhat it looks at
System resources
systemResources
CPU count, available memory and load average, where the environment allows it.
Response compression
compression
Whether HTML responses are gzip- or Brotli-compressed before they go over the wire.
HTTP protocol
httpProtocol
The HTTP version in use and whether the connection is secure.
Disk space
diskSpace
Free space on the volume holding the site.

Craft

Craft’s own configuration, read from the running install rather than from a config file on disk — so per-environment overrides and .env values are reflected accurately.

CheckWhat it looks at
Dev mode
devMode
That development-only settings — dev mode, admin changes, template debugging — are off in production.
Caching
cacheConfig
The cache driver, template caching and session storage.
Queue
queueRunner
How background jobs are run, and whether a backlog has built up.
Image handling
imageHandling
The image driver, when transforms are generated, and whether Craft is optimising the files it produces.
Garbage collection
garbageCollection
Revision limits, soft-deleted content, and whether anything is actually cleaning up.
Project config
projectConfig
The size of the project config, and whether Craft is watching it for changes in production.

Content schema

The shape of your content, not the content itself. These checks count fields, layouts and totals; they never read a field value.

CheckWhat it looks at
Field layouts
fieldLayouts
Layouts wide enough to slow the entry editor down — or to overflow max_input_vars and silently lose content on save, which is the failure mode nobody diagnoses on the first try.
Field usage
fieldUsage
How many custom fields exist, and any that aren’t used in a single field layout.
Content volume
contentVolume
How much content the site holds, and the point at which unbounded queries stop being survivable.

Templates

One check, running eight structural rules over every Twig file. It gets its own page.

CheckWhat it looks at
Template analysis
templates
Element queries inside loops, relational fields executed per row, unbounded queries, missing eager loading, transforms in loops, missing {% cache %}, includes without only, and images missing dimensions or loading hints.

Turning a check off

Go to Microscope → Checks and switch it off. A disabled check does not run and does not appear in reports at all — it is not the same as a skipped one, which ran the availability test and could not proceed.

Checks are opted out of rather than into. The stored setting is a list of disabled handles, which starts empty — so a check added in a later release starts working on upgrade, instead of sitting silently disabled because it was not in a list written before it existed.

Your own checks

Plugins and modules can register checks of their own, which appear in this catalogue, get scored the same way and print on the same report. See Extending.