CMS Detector
What CMS is this site using? See the platform, theme, plugins and the whole stack behind any website, with the line of code that proves each one.
A domain or a full URL with a path. We never publish the sites you check.
Every technology we find is pinned where its proof sits: a DNS record, a response header, a line of the page, or what a real browser loaded.

Any websiteA domain or a full URL with a path: the page is read live, never from an old crawl.The answerThe platform, its version (for WordPress, checked against the latest release) and the theme.Where we found itEvery technology pinned where its proof sits: DNS, a header, a line of the page, the browser.The proofThe selected signal exactly as the site sent it, a header line, a tag or a file path; step through every one with ‹ ›.How does a CMS detector work?
It asks the site for the page once, under its own name, then looks for the marks each platform leaves: in the response headers, the cookies, the HTML and the paths of its files.
Some marks are set by the platform itself and are hard to fake or remove: WordPress announces its REST API in a Link header, Shopify sets a _shopify_essential cookie. Others are written into the page and can be removed or copied: a generator tag, a class name, a comment.
So a mark anyone can copy is a hint, while two independent marks, or one that only the platform itself sets, are proof. Every answer above shows the marks it rests on, quoted exactly as we found them, and how sure that makes us: Confirmed, Likely or Possible.
Besides the page, we read the domain's DNS records and, on a WordPress site, at most two more files from the same host: the theme's style.css and the /wp-json/ index the page points to. A real browser joins in only when you ask for it.
- HTTP/2 200 · 23 headers
- 1line 3
server: cloudflare - 2line 7
link: <https://nalgene.com/wp-json/>; rel="https://api.w.org/" - 3line 8
link: <https://nalgene.com/wp-json/wp/v2/pages/87>; rel="alternate"; title="JSON"; type="application/json" - 4line 15
set-cookie: __cf_bm=BZFgzmA1kpRQ…; HttpOnly; Secure - HTML · 464 KB
- 5byte 1,085
<!-- This site is optimized with the Yoast SEO Premium plugin v28.0 (Yoast SEO v28.6) --> - 6byte 8,283
<link rel='stylesheet' href='…/wp-content/themes/nalgene-twentytwenty/style.css?ver=9260242'> - 7byte 52,255
<meta name="generator" content="WP Rocket 3.23.5.1"> - 8byte 432,563
<script src="…/wp-includes/js/wp-util.min.js?ver=7.1.3"></script>
- 1HeaderCloudflare serves the siteConfirmed
- 2HeaderWordPress's REST API: set by WordPress itselfConfirmed
- 3HeaderThe page's own REST address: WordPress core againConfirmed
- 4CookieCloudflare Bot ManagementConfirmed
- 5CommentYoast SEO and its versionLikely
- 6File pathThe theme's folder, then its style.css headerConfirmed
- 7GeneratorWP Rocket: self-declared, easy to removeLikely
- 8?ver=WordPress 7.1.3 on its own core scriptLikely
CMS, site builder, headless CMS or framework?
They all make websites, but only some leave their name in the page. Where the content lives decides what a detector can see.
A classic CMS such as WordPress stores the content and renders every page itself, so its marks are everywhere. A site builder such as Wix also hosts the site, so its file hosts give it away.
A headless CMS such as Contentful only stores content; a separate front end, often Next.js, renders the page, so at most the CMS's image host shows. A static site generator such as Hugo builds plain HTML ahead of time and leaves, at most, a generator tag on the home page.
- Content + theme
- rendered by WordPress
- on its own server
- The page
What the page shows
/wp-content/rel="https://api.w.org/"<meta name="generator">Detector saysWordPressConfirmed
- Content
- rendered by Wix
- hosted by Wix
- The page
What the page shows
static.wixstatic.com/mediax-wix-request-idserver: PepyakaDetector saysWixConfirmed
- Content in Contentful
- fetched over an API
- rendered by Next.js
- The page
What the page shows
/_next/static/images.ctfassets.netDetector saysNo CMS in the pagePossible
- Markdown files
- built into HTML once
- served as plain files
- The page
What the page shows
<meta name="generator" content="Hugo …">home page onlyDetector saysHugoLikely
How do you find a site's WordPress theme and plugins?
Read the folder names in the page's file paths. A WordPress theme detector takes the theme's folder from /wp-content/themes/<name>/, then opens that theme's style.css, whose header names the theme, its author, its version and, for a child theme, its parent.
The header is the theme's ID card, defined in the WordPress theme handbook. A child theme adds Template: with its parent's folder, so one page can show two themes: nalgene.com runs its own Nalgene Twenty Twenty on Genesis 3.5.0.
Plugins show the same way, as /wp-content/plugins/<name>/ folders, often with a ?ver= number. That number is the plugin's version only when it matches a release: WooCommerce's scripts on nalgene.com carry 11.2.1, the Stable tag in its WordPress.org readme, while another plugin's file carries a timestamp.
Only plugins that put something in the page can be seen. Backups, security tools or a form on the contact page leave nothing in the home page's HTML, so no detector can list every plugin a site has.
Theme
In the page
/wp-content/themes/nalgene-twentytwenty/style.css?ver=9260242/wp-content/themes/genesis/lib/js/skip-links.min.js?ver=3.5.0class="… wp-child-theme-nalgene-twentytwenty …"Child themeNalgene Twenty Twenty
- /wp-content/themes/nalgene-twentytwenty/style.css
Theme Name: Nalgene Twenty TwentyNameAuthor: Scout DigitalAuthorVersion: 9260242Version · a build numberTemplate: genesisParent folder
Parent themeGenesis 3.5.0 · StudioPress
Theme Name: GenesisNameAuthor: StudioPressAuthorVersion: 3.5.0Version
Plugins
/plugins/woocommerce/?ver=11.2.1WooCommerce 11.2.1: the Stable tag in its WordPress.org readme
/plugins/woocommerce/…/jquery-blockui/?ver=2.7.0-wc.11.2.1A library WooCommerce bundles (jQuery BlockUI 2.7.0), tagged with WooCommerce's version
/plugins/elasticpress/?ver=1792138636A timestamp (16 October 2026), not ElasticPress's version
- + 13 more plugin folders
instagram-feed-prowoo-discount-ruleswoo-discount-rules-prowoo-variation-swatcheswoocommerce-back-in-stock-notificationswp-rocketsimple-cloudflare-turnstilekount-fraud-preventiondatalayer-for-woocommerceaddify-advanced-split-ordernalgene-customizervital-theme-modificationsvital-message-bar-master
Plugins that put nothing in the page: invisible to every detector
How do you find which Shopify theme a store uses?
Search the page's source for Shopify.theme. Every Shopify store we checked prints this object, and a Shopify theme detector reads it: the theme's name in that store, the theme it is built on with its version, its Theme Store number and whether it is the published theme.
The name is whatever the merchant called their copy, so it can say little: LACMA's museum shop calls its theme “Updated copy of Kingdom”. schema_name and schema_version name the theme underneath, Kingdom 4.3.1, and theme_store_id is its number in Shopify's Theme Store.
Big brands often run their own theme: allbirds.com's is built on allbirds-theme 1.231.12, with no Theme Store number. The platform itself is confirmed by Shopify's other marks, such as its powered-by: Shopify header and the _shopify_essential cookie.
Shopify.theme = {- 1
"name": "[DNAM Theme July 2026]", - 2
"id": 130450260048, - 3
"schema_name": "allbirds-theme", "schema_version": "1.231.12",- 4
"theme_store_id": null, - 5
"role": "main" }
- 1The name the merchant gave this copy of the theme
- 2The theme's ID in this store
- 3The theme it's built on, and that theme's version
- 4Its number in Shopify's Theme Store: none here
- 5main: the published theme customers see
Three stores, three kinds of theme
| Store | Named in the store | Built on | Theme Store |
|---|---|---|---|
| allbirds.comOwn theme | [DNAM Theme July 2026] | allbirds-theme 1.231.12 | none |
| theme-dawn-demo.myshopify.comShopify's demo store | Dawn | Dawn 15.0.0 | #887 |
| thelacmastore.orgMuseum shop | Updated copy of Kingdom | Kingdom 4.3.1 | #725 |
Why does a detector say “not found”?
Usually because the page it read doesn't carry the CMS's marks, not because there is no CMS. Four cases cover most of them.
We name the case when we can see it: a bot check instead of the site, a framework with no CMS markers, marks a site owner switched off, or a page that runs a different system from the rest of the site.
And sometimes there really is none: W3Techs finds no CMS it recognises on 32.1% of websites, so a detector that finds nothing on about one site in three is working normally.
drupal.org
3 KB · not the site
Fastly answered with a 3 KB “Client Challenge” page instead of the site: no Drupal markup to read. We say “blocked” and offer a browser scan.
openai.com
framework · Possible CMS
Next.js on Vercel. The words may come from a headless CMS; only Contentful's image host hints at it, so it stays “Possible”.
nalgene.com
generator removed · still Confirmed
No WordPress generator tag, yet the REST Link header, /wp-content/ paths and ?ver=7.1.3 still name WordPress. Hiding every mark is rarely complete.
ghost.org
/ = Hugo · /blog/ = Ghost
ghost.org's home page is built with Hugo; its /blog/ runs Ghost 6.73. We check one URL: paste the page you mean, a shop or a blog section included.
What does a browser scan find that a normal check misses?
Everything that arrives after the HTML: tags a tag manager adds, analytics and ad pixels, chat and consent tools, and scripts that only exist once JavaScript runs. On allbirds.com, a real Chrome found 15 technologies that a read of the page's HTML missed.
A normal check reads what the server sends. It is fast and shows the platform, the theme and most of the stack. A browser scan loads the page in Chrome for a few seconds, lets its scripts run and reads what they load.
In our test of five sites the browser never lost a technology the server read had found, and it added between 2 (Wikipedia) and 27 (TechCrunch). Sites run through a tag manager gain the most; a plain wiki page hardly changes.
- In the HTML
- Only in a browser
Found only in a browser on allbirds.com
Analytics & marketing
Frameworks & libraries
Fonts
Commerce
Which CMS is most popular in 2026?
WordPress, by far: it runs 39.6% of all websites and 58.3% of the sites whose CMS is known, according to W3Techs on 23 October 2026.
Shopify (5.3% of all websites) and Wix (4.2%) follow, two hosted platforms that were under half a percent in 2015. The older open-source systems shrink: Joomla fell from 3.3% of all websites in 2015 to 1.1%, Drupal from 2.0% to 0.6%.
Countries differ. Among .ru sites with a known CMS, WordPress has 33.4%, Tilda 27.4% and 1C-Bitrix 15.9%, so there Tilda is nearly as common as WordPress. Figures: W3Techs.
- CMSknown CMSall sites
- 1WordPress58.3%39.6%
- 2Shopify7.9%5.3%
- 3Wix6.2%4.2%
- 4Squarespace3.6%2.4%
- 5Joomla1.6%1.1%
- 6Tilda1.2%0.8%
- 7Webflow1.2%0.8%
- 8Duda1.1%0.7%
- 9Drupal0.9%0.6%
- 10GoDaddy Website Builder0.9%0.6%
- .ru sites with a known CMS
- WordPress33.4%
- Tilda27.4%
- 1C-Bitrix15.9%
Can a website hide its CMS?
Partly. A self-hosted CMS lets its owner switch off the generator tag and rename a path or two, but the platform still shapes the page; hosted platforms such as Shopify and Wix can't hide their marks at all.
Hiding is rarely complete. The common WordPress snippet removes the generator tag from the page but not from the RSS feed, renaming /wp-json/ keeps the rel="https://api.w.org/" link, and moving wp-content still leaves a /themes/ folder and ?ver= numbers in the page.
That's why “not found” never means “no CMS”: a clean page can still run any of them. When a site hides well, our answer drops to Likely or Possible and shows the marks that remain.
- WordPress generator tag
<meta name="generator" content="WordPress 7.1.3">Switched off withremove_action( 'wp_head', 'wp_generator' )What still showsThe RSS feed's generator line<generator>https://wordpress.org/?v=7.1.3</generator> - WordPress REST path
/wp-json/Switched off withadd_filter( 'rest_url_prefix', … )What still showsThe link's relationrel="https://api.w.org/" - The wp-content folder
/wp-content/Switched off withWP_CONTENT_DIR · WP_CONTENT_URLWhat still showsThe themes folder inside it, and ?ver= numbers…/themes/<name>/?ver= - Next.js header
x-powered-by: Next.jsSwitched off withpoweredByHeader: falseWhat still showsIts file paths/_next/static/ - Hugo generator tag
<meta name="generator" content="Hugo …">Switched off withdisableHugoGeneratorInject = trueWhat still showsNothing: a static site has no CMS running - Joomla version
<meta name="generator" content="Joomla! …">Switched off withMetaVersionOff by defaultWhat still showsThe generator tag, without a versionJoomla! - Open Source Content Management - Shopify
{{ content_for_header }}Switched off withNo switchWhat still showsIts scripts and cookies on every page_shopify_essentialpowered-by: Shopify - Wix
static.wixstatic.com/mediaSwitched off withNo switchWhat still showsIts media hoststatic.wixstatic.com/media
Why does an exposed CMS version matter?
Because old versions carry holes that are already public. WordPress's own hardening guide says older versions aren't maintained with security updates and that, once a fix ships, how to exploit the hole is almost certainly public.
A version number alone still doesn't prove a site is exposed. Only WordPress 7.1 is officially supported, yet on 6 October 2026 WordPress released a new version on every branch back to 4.7, so a site on 6.9.10 has its branch's newest release.
So we show the version a page carries, mark it “latest” only when it matches WordPress.org's newest release, and never call a site vulnerable. Drupal shows only its major version, which is enough to spot an old one: Drupal 7 lost security support on 5 January 2025.
- Version 7
- 7.1.3 latest · the only supported branch
- 7.0.7
- Version 6
- 6.9.10
- 6.8.11
- 6.7.10
- 6.6.10
- 6.5.13
- 6.4.13
- 6.3.13
- 6.2.14
- 6.1.15
- 6.0.17
- Version 5
- 5.9.19
- 5.8.18
- 5.7.20
- 5.6.22
- 5.5.23
- 5.4.24
- 5.3.26
- 5.2.29
- 5.1.27
- 5.0.30
- Version 4
- 4.9.34
- 4.8.33
- 4.7.38
- 4.6.30
- 4.5.33
- 4.4.34
- 4.3.35
- 4.2.39
- 4.1.42
- 4.0.38
- Version 3
- 3.9.40
- 3.8.41
- 3.7.41
- 3.6 and older
- Released 6 October 2026
- Last release July 2025
- Last release 30 November 2022
- No release since 2013
Is it a website vulnerability checker?
A passive one. For every exact version a site shows in its headers, its page or a browser scan, it lists the published security advisories that cover it, CVEs among them, from OSV.dev or, for a JavaScript library found by its file, from Retire.js; the release line's support from endoflife.date; and our own notices, such as PHP2Shell. It never sends probes or attack requests.
A version number has limits. A Linux distribution's package may carry backported fixes under an old number, an advisory may need a feature the site doesn't use, and many sites hide their versions. So the answer lists facts about a version (“36 published advisories cover Next.js 14.1.0”) and never says a site is vulnerable.
Behind Cloudflare the Server header reads “cloudflare”, so the web server's own version is out of sight, but the site's other headers pass through: a PHP version in X-Powered-By still shows. To test your own site properly, use a vulnerability scanner you have permission to run against it.
1A Flask app's development serverflask-app.example
What the site sends
Server: Werkzeug/2.0.1 Python/3.8.10Werkzeug2.0.1Published advisories · OSV.dev11 advisories2 highSupport · endoflife.date–not in this sourceOur notice–not in this sourcePython3.8.10Published advisories · OSV.dev–not in this sourceSupport · endoflife.dateEnded Oct 7, 2024Our notice–not in this source2PHP behind Cloudflareshop.example
What the site sends
Server: cloudflareWeb server version: hidden by CloudflareX-Powered-By: PHP/7.4.33PHP7.4.33Published advisories · OSV.dev–not in this sourceSupport · endoflife.dateEnded Nov 28, 2022Our noticePotentially vulnerablePHP2Shell · no fixed release from the PHP project for 7.43Next.js, seen in a browser scanapp.examplefound by a browser scan
What the site sends
window.next.version → "14.1.0"Next.js14.1.0Published advisories · OSV.dev36 advisories4 criticalSupport · endoflife.dateEnded Oct 26, 2025newest 14.2.35Our notice–not in this source
How does it compare with BuiltWith, Wappalyzer and WhatCMS?
BuiltWith answers from its own index of the web, Wappalyzer offers results verified within the last 30 days or a live read that costs five lookups, and WhatCMS reads the page live but lists recent lookups on its home page. As a CMS checker and website technology checker, this one reads the page you give it, now, and shows the line behind each answer.
An index is good for history: BuiltWith's API reports when it last indexed a domain. A live read shows the exact page you paste as it is now, a shop or blog subfolder included.
Free use differs too: Wappalyzer needs an account for 50 lookups a month, BuiltWith's single-site lookups are free, and WhatCMS's free API plan has 500 detections a month, with private lookups from $40 a month. This page needs no account and publishes nothing.
DNS RobotThis page
- Answers from
- The page you paste, read now, with the line behind each answer
- Free use
- No account; nothing published
- Worth knowing
- A real browser scan on request
BuiltWith
- Answers from
- Its own index of the web, crawled like a search engine
- Free use
- Single-site lookups
- Worth knowing
- Its API says when it last indexed a domain
Wappalyzer
- Answers from
- Results verified within 30 days, or a live read
- Free use
- 50 lookups a month with an account
- Worth knowing
- A live result counts as 5 lookups
WhatCMS
- Answers from
- The page, fetched when you ask
- Free use
- API: 500 detections a month
- Worth knowing
- Lists recent lookups on its home page; private ones from $40 a month
CMS detector: questions and answers
How do I find out what CMS a website is using?
generator, wp-content, Shopify.theme or wixstatic.Can you detect a site's WordPress theme?
/wp-content/themes/<name>/ and read that theme's style.css header: its name, author and version. A child theme names its parent in a Template: line, so you see both, such as Nalgene Twenty Twenty on Genesis 3.5.0. A host that blocks theme files leaves only the folder name.Can you detect which Shopify theme a store uses?
Shopify.theme object in their HTML with the theme's name in that store, the theme it is built on (schema_name) and its version, its Theme Store number and its role. The name can be anything the merchant typed, such as “Updated copy of Kingdom”, so we show the theme underneath too. A brand's own theme, like allbirds.com's, has no Theme Store number.Can it find every plugin a WordPress site uses?
/wp-content/plugins/<name>/, a comment or a class name. Plugins that work in the dashboard or on other pages, such as backups, security or a form on the contact page, leave no trace in the home page. Checking the page where a plugin runs finds more.Why does it say a site isn't WordPress when I know it is?
wp-content, or the address runs something else: ghost.org's home page runs Hugo while its blog runs Ghost. Check the exact page, or try a browser scan.Can it see the CMS behind Cloudflare?
X-Powered-By header still show; only the Server header becomes “cloudflare”, which hides the web server's own version. The exception is a bot check: when Cloudflare or another firewall answers with a challenge page instead of the site, we say the check was blocked, and a browser scan may get through.Why do two CMS detectors give different answers?
How accurate is this CMS detector?
Why is the CMS version missing?
?ver=. We only show a version that a signal on the page actually carries, and we say where we found it.Can it check a website for known vulnerabilities (CVEs)?
Can it check if a site is affected by PHP2Shell?
X-Powered-By or Server header names PHP, we compare it with php.net's fixes of 21 October 2026 (8.5.12, 8.4.27, 8.3.36 and 8.2.35), as OpenAI's php2shell-checker does: an older release on those branches, or any PHP 5.4 to 8.1, is “potentially vulnerable”. A distribution's package may carry a backported fix, and a site that hides its PHP version can't be checked this way.Do you keep or publish the sites I check?
Missing something?Suggest a feature or a new tool
Related tools
Hosting Checker
Find out who hosts any website: web host, CDN, CMS, email provider, registrar and SSL issuer
Website Down Checker
Is it down for everyone or just you? Check any site from 11 places and your own connection, with a live screenshot
SSL Certificate Check
Verify SSL certificate validity and security details
DNS Lookup
Every DNS record from the domain's own nameservers, beside Google's and Cloudflare's cache
WHOIS Lookup
Look up domain registration, registrar, and owner details via RDAP
Link Analyzer
Analyze all links on a webpage with dofollow/nofollow detection and HTTP status checking
bbc.com
nextjs.org
techcrunch.com
wikipedia.org


Published advisories · OSV.dev
Support · endoflife.date
