How to Detect What JavaScript Framework a Website Uses (2026 Guide)
With so many JavaScript frameworks in active use—React, Vue, Angular, Next.js, Nuxt, Svelte, Astro, and more—it's increasingly useful to know which one powers a site you're researching. This guide covers the fastest automated methods and the manual signals you can inspect directly in your browser.
Why Detect the JavaScript Framework?
Knowing which JavaScript framework a site uses is valuable in several professional contexts:
- Developer research: Understand what frameworks are being adopted in your industry or by competitors.
- Recruitment and hiring: Identify what technologies a company's engineering team works with before applying or interviewing.
- Sales and agency outreach: Target prospects who use specific frameworks (e.g., offering React component libraries to React shops).
- Benchmarking: Compare how different frameworks affect site performance, load times, and Core Web Vitals in the wild.
- Competitive intelligence: Monitor technology choices across your market to inform your own product or technology decisions.
Fastest Method: Automated Scanner
The easiest approach is to use a dedicated technology detection tool. Web Reveal is a free scanner that identifies the JavaScript framework—along with the full technology stack—of any website in seconds. Enter a URL, hit scan, and you'll see the frameworks, libraries, CMS, analytics tools, CDN, and hosting provider in one view.
Web Reveal performs live detection—it analyses the site as it currently runs rather than relying on cached crawl data—so results reflect the framework actually deployed at the time of the scan.
You can also install the Web Reveal Chrome extension to see framework information passively in a toolbar popup as you browse any site.
Manual Detection Techniques
If you want to inspect a site manually—either for learning or to verify an automated result—here are the main techniques:
1. View page source
Press Ctrl+U (Windows/Linux) or Cmd+U (Mac) to view raw HTML. Look for:
- Script tags with framework-specific filenames (e.g.,
react.min.js,vue.global.js) - Root element attributes: React often uses
<div id="root">, Angular addsng-versionattributes - Server-rendered data tags like Next.js's
<script id="__NEXT_DATA__">
2. Browser console
Open the developer tools console (F12 → Console) and type framework-specific checks. See the framework-specific sections below for exact commands.
3. Network tab – loaded scripts
Open the Network tab (F12), filter by JS, and reload the page. Look at the filenames and URLs of loaded scripts for framework names, version numbers, or CDN paths (e.g., cdn.jsdelivr.net/npm/vue).
4. HTML element attributes
Inspect the DOM in the Elements tab. Angular apps add ng-version to the root element; Vue adds data-v-* scoped attributes to elements; Svelte produces svelte-* class prefixes in compiled output.
Detecting React
React is the most widely used JavaScript library for building UIs. Signs to look for:
- A root element:
<div id="root">or<div id="app">in the HTML - Script bundle filenames containing
react,chunk, or hashed filenames typical of Create React App or Vite builds - In the browser console: typing
window.__REACT_DEVTOOLS_GLOBAL_HOOK__returns an object if React is present (works in development and some production builds) - React DevTools browser extension will notify you when it detects a React-powered page
- Data attributes like
data-reactrooton the root element (older React versions)
Note: React alone does not produce an identifiable HTML output structure on its own; the signals vary depending on how the app is bundled and deployed. Tools like Web Reveal detect React through multiple combined signals.
Detecting Vue.js
Vue.js has clear fingerprints in both the DOM and global JavaScript scope:
- In the console:
window.Vuereturns the Vue constructor if the library is loaded globally (common with CDN usage) - For Vue 3:
window.__VUE__may be set, or check for__vue_app__on the root DOM element - DOM elements have
data-v-*attributes added by Vue's scoped CSS feature - Script tags referencing
vue.global.prod.jsor similar Vue CDN URLs - Vue DevTools browser extension detects Vue apps automatically
Detecting Angular
Angular (Angular 2+, not AngularJS 1.x) leaves distinctive markers:
- The root element (often
<app-root>) has anng-versionattribute containing the Angular version number - In the console:
getAllAngularRootElements()returns an array of root elements if Angular is present - HTML comments like
<!--ng-container-->from Angular's rendering - Script bundles named
main.js,polyfills.js,runtime.jsare typical Angular CLI output
For AngularJS (version 1.x), look for ng-app attributes on the HTML element and ng-controller in the DOM.
Detecting Next.js
Next.js is a React framework with strong server-side rendering (SSR) and static site generation (SSG) capabilities. It is particularly easy to detect:
- A
<script id="__NEXT_DATA__" type="application/json">tag in the page source containing page props and build ID - The HTTP response header
x-powered-by: Next.js(when not stripped by a reverse proxy) - Script URLs with
/_next/static/chunks/path prefix - Route prefetch link tags with
/_next/paths - The
__next_fglobal variable in React Server Components builds
Detecting Nuxt, Svelte, Astro, and Others
Nuxt.js
window.__nuxtorwindow.$nuxtglobal variables in the browser console/_nuxt/path prefix in script URLs- A
X-Powered-By: Nuxt.jsHTTP header (when not removed) nuxt-linkcomponents rendered as standard anchor tags with specific attributes
Svelte / SvelteKit
- Compiled Svelte code produces unique CSS class names with short hashed identifiers (e.g.,
svelte-1tky8bj) - SvelteKit apps include a
/_app/route for static assets - HTML data attributes like
data-svelte-hin recent versions
Astro
- The
X-Powered-By: AstroHTTP header (on Astro deployments that haven't stripped it) - Script tags referencing
/_astro/paths astro-islandcustom elements in the DOM for partial hydration components
jQuery
- In the console:
window.jQuery.fn.jqueryreturns the version string if jQuery is loaded - Scripts from
ajax.googleapis.com/ajax/libs/jquery/or similar CDN paths
Bottom line: For the fastest result, use Web Reveal's free scanner. For a deeper understanding of what the signals mean, or to verify results, the manual techniques above will give you insight into exactly how each framework identifies itself.
Frequently Asked Questions
How can I tell if a website uses React?
React apps often include a root <div id="root"> and may expose window.__REACT_DEVTOOLS_GLOBAL_HOOK__ in the console. Script bundles may contain react in their filenames. Automated tools like Web Reveal detect React through multiple signals simultaneously.
Is there a free tool to detect JavaScript frameworks?
Yes. Web Reveal is a free scanner that identifies JavaScript frameworks, libraries, CMS platforms, analytics tools, and hosting providers for any website. No sign-up is required.
Can I detect a JavaScript framework from the browser console?
Yes—for many frameworks. React: check window.__REACT_DEVTOOLS_GLOBAL_HOOK__. Vue: check window.Vue or window.__VUE__. Angular: try getAllAngularRootElements(). These checks work best on development builds; production builds may obfuscate these globals.
How do I know if a site uses Next.js?
Look for a <script id="__NEXT_DATA__"> tag in the page source, script URLs starting with /_next/static/chunks/, and (when available) the x-powered-by: Next.js response header. Web Reveal detects Next.js automatically.
Try Web Reveal for Free
Identify the JavaScript framework, CMS, analytics tools, and full tech stack of any website in seconds.