13 Ways To Find the Tech Stack of Any Website

How I find the tech stack of any website — a practical, step-by-step guide
I love digging into how websites are built. It’s like reading the blueprint of a house — messy wiring, clever hacks, and much more. In this post we will walk through every useful, ethical method and possible methods we use to identify a website’s tech stack: front-end frameworks, back-end language, CMS, CDNs, analytics, hosting, and more.
Important note (ethics): everything below is about observing public signals. Do not scan, probe, or access resources you don’t have permission to test. Don’t try to access private files, run port scans on third-party servers without consent, or exploit misconfigurations. When in doubt: ask for permission.
These are just for learning purpose.
Follow: Techolyze for more in-depth guides and learning.
Quick overview — how to approach this
When you have to check a site you need follow this order:
Quick glance (URL patterns, visible meta tags).
View source + DevTools (fast wins).
Check headers & network resources.
Use browser extensions & online services for confirmation.
DNS / WHOIS / hosting clues.
Combine signals and rate confidence.
Below are the methods we use — each with step-by-step instructions and examples.
1) View page source (the fastest first look)
Why: many sites leave telltale strings in HTML (meta generator tags, links to framework assets).
Steps
Open the page in your browser.
Right-click → View Page Source (or
Ctrl+U
).Search (
Ctrl+F
) for keywords:wp-
,__NEXT_DATA__
,angular
,vue
,react
,generator
,wp-content
,shopify
,gatsby
,jekyll
.Look at the
<head>
for<meta name="generator" content="...">
or script/link URLs that reveal libraries.
Example
If you see
/wp-content/themes/
or/wp-content/plugins/
→ almost certainly WordPress.If you find a large script tag named
__NEXT_DATA__
or JSON object with"next"
→ likely Next.js (server-rendered React).
2) Browser DevTools — Elements, Network, Application (my go-to)
Why: DevTools shows scripts, XHR requests, cookies, service workers — a goldmine.
Steps
Open DevTools (
F12
orCtrl+Shift+I
).Elements: inspect the DOM — is there a root div
<div id="root">
(React),<app-root>
(Angular), or<div id="__next">
(Next)?Network: reload the page (disable cache) and inspect JS/CSS files and XHRs. Look at script filenames and request paths.
Application (Storage): inspect cookies, localStorage and sessionStorage keys — cookie names often reveal framework/CMS (e.g.,
laravel_session
,PHPSESSID
,wordpress_logged_in
).Console: sometimes frameworks log warnings that reveal versions or devtools hooks.
Example
Network shows requests to
cdn.shopify.com
→ Shopify.Application → cookie named
wp-settings-1
→ WordPress.
3) HTTP headers (quick server hints)
Why: servers or middlewares sometimes include headers revealing server, framework, or CDN.
Steps
Use
curl -I https://example.com
(or browser devtools → Network → click main request → Headers).Check for headers:
Server:
,X-Powered-By:
,Via:
,CF-Cache-Status
,X-Cache
.Interpret:
Server: nginx
says webserver;X-Powered-By: Express
suggests Node.js/Express backend;Server: cloudflare
usually means Cloudflare sits in front of origin.
Example header block
HTTP/1.1 200 OK
Server: cloudflare
X-Powered-By: Express
CF-Cache-Status: HIT
Here I’d conclude Cloudflare is the CDN/proxy and the origin app might be Express (Node.js).
4) JavaScript globals & in-page clues
Why: many frameworks expose global variables or specific markup.
Steps
In DevTools Console type a few checks:
window.__NEXT_DATA__
→ Next.js SSR data.window.__REACT_DEVTOOLS_GLOBAL_HOOK__
→ React present.window.__VUE_DEVTOOLS_GLOBAL_HOOK__
→ Vue present.
Inspect inline JSON-LD (
<script type="application/ld+json">
) — may reveal CMS or plugins (e.g., schema added by Yoast SEO).
Example
window.__NEXT_DATA__
exists and containsprops.pageProps
→ strong Next.js evidence.
5) Check for common CMS/Platform patterns
Why: CMSs leave consistent URL and folder structures.
Steps & examples
WordPress: look for
/wp-content/
,/wp-admin/
,xmlrpc.php
,wp-json/
.Shopify: assets from
cdn.shopify.com
, presence ofshopify
in HTML comments,/collections/
and/products/
URL structure.Drupal: paths like
/sites/default/files/
or meta tags mentioning Drupal.Squarespace / Wix: usually more opaque but you’ll see platform-specific inline comments or URLs.
6) Browser extensions & devtools plugins (fast confirmation)
Why: tools like Wappalyzer & WhatRuns detect many technologies automatically.
Steps
Install Wappalyzer or WhatRuns in your browser.
Navigate to the site — the extension icon shows detected tech.
Click the icon to see libraries, server, analytics, frameworks.
Example
- Wappalyzer reports: React, Webpack, Google Analytics, Cloudflare — great for quick confirmations.
7) Online services (BuiltWith, Netcraft, SimilarTech)
Why: these services aggregate fingerprints and historical data.
Steps
Go to BuiltWith (or Wappalyzer online) and paste the URL.
Read the breakdown: analytics, frameworks, widgets, CDN, hosting.
Cross-check with your DevTools findings.
Note: these services are a great second opinion — they often list versions and trends.
8) DNS, WHOIS, and hosting clues
Why: nameservers and DNS records help identify hosting/CDN.
Steps
Use
dig example.com NS
or online DNS lookup to see nameservers.If nameservers are
cloudflare.com
orawsdns
, that indicates Cloudflare or AWS.WHOIS lookup may show registrar or hosting contact (limited for privacy-protected domains).
Example
- NS:
ns1.cloudflare.com
→ site uses Cloudflare.
9) Certificates & TLS information
Why: certificate issuer and SANs sometimes reveal hosting provider or vendor.
Steps
Click the padlock in browser → View Certificate (or use
openssl s_client
).Check Issuer (Let’s Encrypt, DigiCert) and Subject Alternative Names (SANs).
Some platforms (e.g., Shopify) present specific certificate patterns.
10) Look for APIs, GraphQL endpoints, and AJAX patterns
Why: endpoints tell you the backend style.
Steps
In DevTools → Network, filter XHR/Fetch requests and inspect endpoints.
/api/
with JSON payloads and cookies → API-driven app./graphql
endpoint or POST XHRs withquery
→ GraphQL backend.
Example
- Frequent calls to
/api/posts
returning JSON → headless CMS or custom API (maybe Node/Express, Next.js, etc.).
11) Third-party tags and analytics
Why: analytics providers and tag managers are easy to spot and useful to know.
Steps
Search source for
gtag(
,ga('create'
,G-
(GA4),matomo
,segment
,gtm.js
(Google Tag Manager).Tag managers usually load many vendor scripts — check which tags are firing.
Example
GTM-XXXX
→ Google Tag Manager;UA-
orG-
suggests Google Analytics.
12) Fingerprinting & favicon hashing (advanced finger-printing)
Why: some fingerprinting services identify stacks by favicon hash or JS file hashes.
Steps
Note
favicon.ico
path and URL.Use services that map favicon hashes to tech stacks (I use this only as corroboration).
Treat this as one more signal — not definitive.
13) Command-line & remote probes (with strict ethical limits)
Why: CLI tools can reveal DNS and header info quickly.
Steps (ethical)
Use
curl -I
for headers anddig
for DNS.Don’t run intrusive scans (nmap/shodan port scans) without explicit permission.
Use
whois
for ownership metadata.
14) How to combine evidence (confidence scoring)
We never have to trust one single indicator. Combine multiple signals and assign a confidence level:
High confidence:
/wp-content/
+ WP cookies +/wp-admin/
→ WordPress.Medium:
X-Powered-By: Express
but obfuscated JS → likely Node/Express but could be misleading.Low: a single external script from a vendor (could be just a widget).
Make decisions like a jury: multiple independent pieces of evidence increase confidence.
15) Common pitfalls & false positives
Headers can be intentionally misleading (proxies mask origin).
Single third-party scripts don’t mean the whole site uses that stack.
Minified/bundled JS may hide original library names.
Serverless and headless setups blur classical "CMS" categories.
Quick cheat-sheet
View source → search for
wp-
,next
,__NEXT_DATA__
,generator
.DevTools Network → check script names and XHR endpoints.
Cookies →
PHPSESSID
,laravel_session
,wp-
keys.Headers →
X-Powered-By
,Server
,CF-
.DNS/WHOIS → nameservers reveal CDNs/hosts.
Extensions/Online tools → Wappalyzer, BuiltWith, WhatRuns.
Console globals →
window.__NEXT_DATA__
, React/Vue hooks.Tag/Analytics →
G-
,UA-
,gtm.js
,matomo
.