Skip to content

Test your website now

Free, no card. We read only public pages.

Run free audit →

Security · Info severity

Meta Generator Tag Version Disclosure: Remove Extra Detail

Remove unnecessary CMS version disclosure from meta generator tags. Review WordPress and static templates, preserve cache busting, and verify real patch status.

Published · Updated

What the check tests

Check
sec.disclosure.generator - Meta generator does not leak CMS version
Passes when
The generator meta tag should not reveal exact CMS/plugin versions.
Scope
graded on every page crawled
Severity
Info
Fix effort
small - under an hour
Impact when fixed
low

In one paragraph

Meta generator tag version disclosure means the page identifies software that produced it, sometimes with a version number. Removing unnecessary generator metadata reduces one easy fingerprint, but does not patch vulnerabilities or make the platform unidentifiable. Identify the source of each tag, suppress it where practical, and keep the named software updated. Preserve unrelated functionality such as asset cache busting.

Why it matters

A generator meta tag is intended to describe the publishing software. When it includes a detailed version, automated tools can use it as a convenient starting point for classifying the site. That information is not itself an exploit and does not establish whether a particular vulnerability is present.

Versions can be stale, custom-labelled, or affected by vendor backports. Conversely, removing the number from an actually vulnerable application does not repair it. Review installed components and trusted maintenance records for patch status rather than treating the public banner as your software inventory.

Most CMS platforms can also be inferred from asset paths, login routes, feeds, and application behaviour. The practical value here is modest reduction of gratuitous information, not hiding every trace of the technology.

How WebAuditOS evaluates this finding

The supplied rule reads the first generator meta tag in server-returned HTML. A dotted numeric pattern such as 6.4 or 3.18.3 produces an informational failure. A generator value without that pattern warns informationally; no tag passes. Unreadable HTML is not graded.

This pattern does not validate actual release identifiers. A major-only version can remain a warning, and unrelated dotted numbers may match. Only the first tag is examined, so another can become visible to the check after its predecessor is removed. JavaScript-added tags and separate feed or header disclosures are outside this rule.

How to fix it

  1. Inspect the HTML source for every meta element named generator. Record which platform, theme, or plugin produces each one. Review the server source and rendered DOM separately if scripts add metadata at runtime.
  2. Prioritise maintenance first. Confirm actual installed versions, support status, and available security updates through your deployment or CMS tooling. Do not postpone a necessary update merely because the public number can be hidden.
  3. Remove the tag at its source where supported. For WordPress core output, a common filter in a maintained site plugin is:
add_filter('the_generator', '__return_empty_string');

Test against your deployed version and output paths. Plugins that independently print their own tags can require separate documented filters or settings. Avoid editing vendor core files that an update will replace.

  1. For a static generator, inspect the theme's head partial or layout and remove the specific generator output. Keep unrelated metadata such as charset, viewport, title, description, and canonical tags intact. Review theme updates so they do not reintroduce the tag unnoticed.
  2. For another CMS, prefer its supported metadata or extension API to a blind HTML string replacement at the proxy. Output rewriting can be fragile with compressed responses, caching, and differing page templates.
  3. If a hosted builder does not allow removal, document the limitation and evaluate the actual information exposed. A bare platform label can be an acceptable low-priority residual issue. Do not break the supported site setup solely to clear an informational signal.
  4. Verify multiple page types, feeds where relevant, and cached output after deployment. Purge stale rendered pages if your platform requires it. Rescan; if the next plugin tag is now reported, assess that source rather than assuming the previous fix failed.
  5. Preserve asset versioning. If you choose to replace exposed version parameters on CSS or JavaScript, use a reliable content hash or equivalent cache-busting mechanism. Do not strip every query parameter or delete unrelated files just to reduce fingerprinting.

What the fix can break

Removing an informational tag usually has no direct rendering effect, but technology-detection or support tooling may stop identifying the platform automatically. Ensure staff can still obtain the real version from trusted internal records.

Broad metadata removal can accidentally damage search and sharing tags. Target the generator element rather than removing whole head sections or all meta elements.

Deleting asset version parameters can leave browsers using stale files after an update. Do not remove licence notices or distribution files indiscriminately; review operational and licence obligations before changing them. The goal is a narrow disclosure reduction, not unreviewed cleanup across the release package.

Questions

Does the tag prove the CMS is vulnerable?

No. It provides a claimed technology or version, not a tested vulnerability finding. Confirm real patch status and configuration separately.

Why did a different generator appear after removal?

The documented rule reads only the first tag. Another plugin's existing output can become the next reported value.

Should I remove every asset version parameter too?

Not blindly. Those parameters can perform essential cache busting. Preserve a working versioning strategy if you change the public identifier.

Review X-Powered-By disclosure, server version disclosure, and directory listing. Each has a separate source and remedy.

In the report

Test this on your own site

Every scan runs sec.disclosure.generator on every page it crawls, on every plan. The finding carries this id, so a line in a report can be matched to the explanation above - and the free scan needs no account.