5 Best CMS Detection Tools for Developers
Compare five CMS detection tools by browser workflow, APIs, coverage, batch research, evidence, pricing, and practical limits.

Direct answer: Wappalyzer is the best overall CMS detection tool for developers who move between browser research and API automation. BuiltWith is strongest for broad coverage, historical data, and bulk intelligence. WhatCMS is a practical lightweight detector with batch and API options. W3Techs Site Info fits structured technology benchmarking, while CMS Detect is the simplest browser extension for a one-off check.
All five infer a site’s technology from public fingerprints. They do not have a guaranteed view of every server-side component. A customized, headless, server-rendered, or deliberately obscured site may reveal too few signals for a confident result.
How CMS detection works
A detector fetches one or more public pages and examines artifacts left by the software behind them. Typical signals include HTML generator tags, asset and image paths, response headers, cookies, session names, JavaScript bundles, URL patterns, and known framework markers. WhatCMS describes checking thousands of artifacts before returning a result: “Our detection algorithm checks for thousands of artifacts to determine if the requested page was generated by a CMS.” WhatCMS

The result is an inference based on what the fetched pages expose. A detector may identify WordPress from a generator tag or /wp-content/ path, for example, but that evidence can disappear when a site removes metadata, proxies assets, or renders content through a custom frontend.
What a useful result should include
- The CMS name and, when available, version.
- Non-CMS technologies such as analytics, ecommerce, CDN, hosting, JavaScript frameworks, and web server.
- The evidence or page location where a technology was found.
- A confidence indicator or explanation of detection strength.
- The URL scope: one page, a domain crawl, or a recursive scan.
- Timestamped results if you need to track a migration or technology change.
Comparison at a glance
| Tool | Best for | Browser workflow | API or automation | Bulk or history | Evidence and limits |
|---|---|---|---|---|---|
| Wappalyzer | Browser plus API workflows | Website lookup and extension | URL lookups, live results, recursive options | Useful for enrichment workflows | Free account includes 50 technology lookups per month; paid plans add limits and API credits. Vendor site |
| BuiltWith | Breadth, history, and bulk intelligence | Domain lookup | Domain API with XML, JSON, CSV, or XLSX | Lists, trends, historical data, lead research | Vendor displays coverage of more than 127,670 internet technologies. Vendor site |
| WhatCMS | Lightweight checks and focused API use | One-off reports | Technology endpoint and batch detection | Batch, hosting, and WordPress-theme reports | Checks thousands of artifacts including tags, paths, headers, and session names. Vendor site |
| W3Techs Site Info | Structured benchmarking | Site information pages | Site Info API | Technology statistics and version fields | Published bundles range from 1,000 requests for 100 Euro to 100,000 for 2,000 Euro; requests are generally valid for one year. API documentation |
| CMS Detect | Fast browser checks | Chrome extension and one-click lookup | Limited compared with API-first tools | Not designed for deep historical research | Reports CMSs, frameworks, and technologies from the browser toolbar. Vendor site |
1. Wappalyzer: best overall for browser plus API workflows
Choose Wappalyzer when the same team needs quick manual inspection and an automated enrichment pipeline. Its website lookup handles a one-off check, the browser extension reports technologies while you browse, and the API supports URL lookups, live results, recursive options, and credit-based usage.
Good fit
- Sales or research teams qualifying domains manually.
- Developers enriching a database of company websites.
- Scripts that need a documented API rather than HTML scraping.
Limits to plan for
The free account allowance is 50 technology lookups per month. Larger workloads require paid limits and API credits. Treat a result as a current observation: a lookup can change after a deployment, redirect, CDN change, or redesign.
2. BuiltWith: best for breadth, history, and bulk intelligence
BuiltWith is the strongest choice when CMS identification is only one part of a broader technology-intelligence project. Its coverage spans CMS, ecommerce, frameworks, analytics, hosting, and infrastructure. The lookup page states coverage of more than 127,670 internet technologies, a vendor count that can change over time.
The Domain API can return XML, JSON, CSV, or XLSX and includes confidence scores and metadata. Separate lists and trend capabilities support lead generation, market research, and historical questions such as when a domain adopted a particular platform.
Good fit
- Building large prospect or partner lists.
- Comparing technology adoption across many domains.
- Investigating historical changes and related domains.
3. WhatCMS: best lightweight detector with batch and API options
WhatCMS is a useful middle ground between a one-click detector and a data workflow. It offers one-off checks, reports, batch detections, hosting and WordPress-theme detection, and API access. Its technology endpoint can return CMS, language, database, web server, and other technology information.
Its public explanation is particularly useful for interpreting results: the service looks for generator tags, image paths, headers, session names, and other artifacts. That makes it easy to understand both why a result appeared and why a hidden or customized implementation might be missed.
4. W3Techs Site Info: best for structured benchmarking
W3Techs Site Info is appropriate when the output must support technology statistics rather than a simple CMS yes-or-no answer. The Site Info API returns technology categories, names, versions when available, newer-version percentages, and where on the site a technology was found.
Published request bundles range from 1,000 requests for 100 Euro to 100,000 for 2,000 Euro, and requests are generally valid for one year. Use it when you need consistent fields for reports, version comparisons, or benchmarking. Confirm current prices and package terms before committing budget.
5. CMS Detect: best for a simple browser check
CMS Detect is the lowest-friction option for a developer who wants a quick answer while browsing. Its Chrome extension reports CMSs, frameworks, and technologies from the browser toolbar.
It is a sensible choice for occasional manual checks. For a recurring data pipeline, bulk list, historical comparison, or confidence metadata, use an API-oriented service instead.
How to detect a CMS yourself from the browser
You can perform a basic first pass without a commercial detector. This method inspects public HTML, headers, asset paths, and common markers. It is useful for debugging and for understanding what automated tools are looking for.
Step 1: inspect the document and response headers
const target = 'https://example.com';
const response = await fetch(target, { redirect: 'follow' });
const html = await response.text();
const signals = {
generator: html.match(/<meta[^>]+name=["']generator["'][^>]+content=["']([^"']+)/i)?.[1] || null,
wordpress: /wp-content|wp-includes|wp-json/i.test(html),
drupal: /drupalSettings|sites\/default\/files|X-Generator:\s*Drupal/i.test(html),
joomla: /com_content|media\/jui|Joomla!/i.test(html),
shopify: /cdn\.shopify\.com|Shopify\.theme/i.test(html),
wix: /static\.wixstatic\.com|_wixCIDX/i.test(html),
squarespace: /static1\.squarespace\.com|squarespace\.com/i.test(html),
webflow: /assets\.website-files\.com|Webflow/i.test(html)
};
console.log({
status: response.status,
finalUrl: response.url,
server: response.headers.get('server'),
poweredBy: response.headers.get('x-powered-by'),
signals
});
Run it in a modern Node.js release that supports built-in fetch. Replace example.com with a site you are allowed to inspect. The regular expressions are hints, not an accuracy benchmark. A positive marker can be stale or intentionally exposed, and a negative result does not prove that a site has no CMS.
Step 2: check source and network requests
- Open page source and search for
generator, CMS-specific directories, JSON endpoints, and asset hostnames. - Open developer tools and inspect document response headers, cookies, and loaded scripts.
- Check more than the homepage. A blog, login page, product page, or error page may reveal different signals.
- Record the URL, timestamp, evidence, and final redirect destination.
Step 3: report uncertainty
Use labels such as “detected,” “likely,” and “not observed.” Do not turn a missing marker into a claim that the site uses no CMS. Compare independent signals before presenting a result to a customer or adding it to a lead database.
Or skip the browser setup
ScreenshotNeo is a website screenshot API and MCP server. A screenshot can preserve the page state you inspected while your detector handles the HTML and headers. See the ScreenshotNeo documentation for request options.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
Cookie banners, newsletter popups, and chat widgets are removed before the shot. Bot checks, blank pages, failed loads, timeouts, and cache hits are never billed, and response headers identify the page verdict and whether it was billed. An MCP server lets AI agents take screenshots with Claude, Cursor, or another MCP client. You get 1,000 screenshots each month free with no card; paid plans start at $5 for 3,000.
Sign up for the free ScreenshotNeo plan.
Choosing the right tool
| Your requirement | Recommended choice |
|---|---|
| Manual browsing plus an API workflow | Wappalyzer |
| Largest technology catalog, history, and lead lists | BuiltWith |
| Quick checks, batch detection, hosting, and WordPress theme data | WhatCMS |
| Version fields, detection locations, and market statistics | W3Techs Site Info |
| One-click browser extension | CMS Detect |
Troubleshooting common detection problems
No CMS is detected
Cause: the site may be headless, server-rendered, cached, customized, or hiding generator and asset markers. Fix: inspect several paths, response headers, cookies, script bundles, and redirect destinations. Report “not observed” rather than “no CMS.”
The result names the wrong platform
Cause: shared libraries, old assets, a migration, or a third-party subdomain can create a misleading signal. Fix: require two or more independent indicators and check the evidence location and timestamp.
Only the CDN or analytics stack appears
Cause: the CMS is hidden behind a CDN or the fetched page contains mostly third-party scripts. Fix: inspect the origin-facing clues that are publicly available, including HTML paths and CMS-specific JSON endpoints, while respecting access controls.
API requests consume credits faster than expected
Cause: recursive scans, repeated URLs, redirects, retries, or fetching multiple pages per domain. Fix: deduplicate URLs, cache results with timestamps, select the smallest scan scope, and retry only transient failures.
Results disagree between tools
Cause: vendors maintain different fingerprint databases, crawl scopes, and confidence rules. Fix: compare the cited evidence, run checks close together in time, and preserve the raw responses. The available vendor pages do not provide a controlled independent accuracy benchmark across these five tools.
Performance, reliability, and cost practices
- Cache responsibly: store a result with its timestamp and source URL so repeated checks do not consume credits.
- Control crawl scope: start with one page, then expand only when evidence is weak or the project requires domain-wide coverage.
- Use bounded concurrency: queue large lists instead of sending an unbounded burst that triggers throttling or produces incomplete results.
- Keep evidence: save headers, relevant HTML snippets, detected locations, confidence values, and the final URL.
- Separate observation from conclusion: “WordPress marker found in HTML” is stronger and more reproducible than an unsupported categorical label.
- Budget by workload: Wappalyzer’s free allowance is 50 lookups per month; W3Techs publishes request bundles; BuiltWith and WhatCMS usage depends on the selected product or API plan. Recheck current vendor pricing before purchase.
- Respect site boundaries: inspect public pages, follow terms and robots guidance where applicable, and do not bypass authentication or anti-bot controls.
FAQ
Can a CMS detector identify a headless CMS?
Sometimes. It can identify public frontend or API fingerprints, but a headless setup may expose no obvious CMS marker. Check multiple pages and treat the result as probabilistic.
Which tool has an API?
Wappalyzer, BuiltWith, WhatCMS, and W3Techs Site Info document API workflows. CMS Detect is primarily a browser extension and one-click checker.
Is BuiltWith an alternative to Wappalyzer?
Yes, but their strengths differ. Wappalyzer fits browser-plus-API workflows; BuiltWith emphasizes breadth, historical data, confidence metadata, lists, and trends.
Can I detect a CMS from JavaScript alone?
Yes, for a basic heuristic pass using fetched HTML and headers, as shown above. JavaScript-only detection cannot see private server configuration and can miss deliberately hidden or rendered signals.
Should I trust a version number?
Only as an observation with evidence and a timestamp. A version may come from an old asset, a stale header, or a vendor-managed service rather than the active CMS core.