How to Tell if a Website Uses Vue.js (2026 Guide)
Vue.js is one of the most widely adopted JavaScript frameworks in the world, powering millions of applications from small interactive widgets to large-scale enterprise dashboards. Whether you are doing competitive research, auditing a site, or simply curious about what is running under the hood, detecting Vue.js is straightforward once you know the right signals. This guide covers the fastest free tools and the most reliable manual techniques for 2026.
What Is Vue.js?
Vue.js is an open-source progressive JavaScript framework created by Evan You, a former Google engineer, who released the first version in February 2014. Unlike monolithic frameworks that require complete buy-in from the start, Vue is designed to be incrementally adoptable — you can sprinkle it onto an existing HTML page to enhance specific interactive elements, or use it as the foundation of a complete single-page application (SPA) with its own routing and state management.
Vue's component-based architecture and reactive data binding system let developers declare the relationship between UI state and rendered HTML cleanly. The framework uses a template syntax that is valid HTML, making it easier for designers and developers who are familiar with standard HTML to start building Vue components quickly compared to JSX-based alternatives.
Vue 3, released in September 2020, introduced the Composition API, improved TypeScript support, a faster virtual DOM, and a smaller core bundle. As of 2026, Vue 3 is the current stable release while Vue 2 reached end-of-life in December 2023, though many legacy applications remain on it. Vue consistently ranks as the second or third most widely used JavaScript framework in annual developer surveys, with a particularly strong user base across Asia, Europe, and in enterprise back-office applications.
Why Detect Vue.js?
Knowing that a site is built with Vue.js has real value across a range of professional contexts:
- Developers and agencies: Identify prospects already invested in Vue for consulting work, component library integration, or performance optimisation services.
- Competitive research: Understanding a competitor's frontend framework reveals their engineering maturity, team preferences, and build constraints.
- SaaS sales: Vue-heavy stacks often signal growth-stage startups and established enterprises looking to scale their product teams — high-value prospects for developer tooling vendors.
- Recruiters: Companies using Vue have specific hiring needs for Vue developers. Identifying which companies use Vue can surface qualified leads faster than generic job boards.
- Security researchers: Identifying the Vue version helps assess exposure to known client-side vulnerabilities in outdated Vue releases, particularly in Vue 2 projects that may have missed end-of-life migration.
- Migration consultants: There is a large installed base of Vue 2 applications that need upgrading to Vue 3. Identifying Vue 2 sites creates targeted outreach opportunities for teams offering migration services.
Fastest Method: Free Scanner Tool
The quickest and most reliable way to detect Vue.js is to use Web Reveal — a free technology scanner that performs live analysis of any URL and returns a full technology stack breakdown in seconds, including the JavaScript framework, version where detectable, hosting provider, CDN, analytics tools, and more.
Enter the website URL on the Web Reveal homepage. The scanner checks multiple Vue.js fingerprints simultaneously and confirms whether the site uses Vue, which version is in use, and any Vue-based meta-frameworks layered on top.
The Web Reveal Chrome extension detects Vue.js automatically as you browse any website, displaying the result in the browser toolbar without requiring you to visit the Web Reveal site separately. This is ideal for quick checks while browsing competitor sites or during client research sessions.
__VUE__ Global Flag (Vue 3)
The clearest programmatic signal for Vue 3 is the __VUE__ property set on the window object. When a Vue 3 application initialises, it sets window.__VUE__ = true as part of its runtime bootstrap. This flag is present even on production builds.
To check for it, open the browser developer tools (F12), go to the Console tab, and type:
window.__VUE__
If the result is true, the page is running Vue 3. You can also check the version of the loaded Vue instance by inspecting the app instance if it is exposed on the window:
window.__VUE_APP__ && window.__VUE_APP__.version
Note that Vue does not expose the app instance globally by default in production builds, but many Vue 3 applications do expose it for debugging purposes in staging environments.
Vue DevTools Hook Global
Vue registers a __vue_devtools_global_hook__ object on the window to communicate with the Vue DevTools browser extension. This hook is present across both Vue 2 and Vue 3 applications, making it a reliable cross-version signal.
To check for it in the browser console:
window.__vue_devtools_global_hook__
If the result is an object (rather than undefined), Vue is running on the page. Inspect the object further — in Vue 3 you will typically see a Vue property and an apps array containing references to the mounted Vue application instances.
Note: In production builds, Vue may set the DevTools hook but suppress some of its properties. The presence of the hook object itself is still a reliable indicator. For definitive version detection, combine this check with the __VUE__ flag and bundle file analysis described in this guide.
HTML Markers: data-v-app and id="app"
Vue's mount function adds the data-v-app attribute to the root DOM element of the application. This attribute is specific to Vue 3 and is one of the most straightforward HTML-visible signals you can check without running JavaScript. To find it, press Ctrl+U to view the page source and search for data-v-app:
<div id="app" data-v-app="">
The presence of data-v-app is a definitive indicator of a Vue 3 application. Vue 2 does not use this attribute.
An element with id="app" is the conventional mount point for Vue applications but is not uniquely Vue-specific — it is also used by some non-Vue projects. Use it as a corroborating signal alongside the DevTools hook or __VUE__ flag rather than as a sole indicator.
For Vue 2 applications, look for the __vue__ property attached to DOM nodes. In the browser console, you can check:
document.querySelector('#app').__vue__
If this returns a Vue instance object rather than undefined, the page is using Vue 2.
Scoped Style Attribute Patterns
Vue's single-file component (SFC) format supports scoped styles — CSS rules that apply only within the component they are defined in. Vue achieves this by adding a unique data attribute to each DOM element rendered by a scoped component and using that attribute as a CSS selector.
These attributes follow the pattern data-v-[8-character-hex-hash], for example:
<div data-v-3f1a2b4c>
To check for them, open the Elements panel in browser DevTools and inspect any component-rendered element. If you see multiple short data-v- attributes on elements throughout the page, the site is almost certainly built with Vue single-file components.
You can also search the page source for data-v- using your browser's find function (Ctrl+F after pressing Ctrl+U). If multiple matches appear, Vue scoped styles are in use.
Note: Not all Vue applications use scoped styles. If you do not find data-v- attributes, the application may still be using Vue with global styles or CSS Modules. Use this as a confirmatory signal, not a definitive one.
JavaScript Bundle File Patterns
Vue applications compiled with Vite, Webpack, or Vue CLI produce predictable asset filenames and script paths. Look in the page source for <script> tags referencing files such as:
vue.min.jsorvue.global.prod.js— Vue loaded directly from a CDN such as unpkg or cdnjsvue.esm-bundler.js— Vue's ES module build, common in Vite-based projects/assets/index-[hash].js— Vite production bundle; searching the file contents often reveals Vue internals/js/chunk-[hash].js— Webpack code-split chunk files from Vue CLI projectsvue-router.min.jsorvuex.min.js— Vue's official router and state management libraries loaded separately from a CDNpinia.iife.jsorpinia.esm-bundler.js— Pinia, the official state management library for Vue 3, is a strong secondary indicator
Searching the page source for vue within <script src= paths is a quick heuristic. Be aware that bundlers may combine Vue into a single generic output file, so the absence of an obvious Vue filename does not rule out Vue.
Vue-Based Frameworks as Secondary Signals
Several widely used frameworks and meta-frameworks are built entirely on Vue. Detecting any of these is confirmation that the site also uses Vue underneath:
- Nuxt.js: Look for
window.__NUXT__in the page source or inline scripts, and for asset paths under/_nuxt/. Nuxt is the most popular Vue meta-framework and adds server-side rendering, file-based routing, and a module ecosystem. - Quasar: Look for the
q-approot element or thequasarglobal in the browser console. Quasar provides a full component library and build system on top of Vue for web and mobile apps. - VitePress: Look for the
__VP_SITE_DATA__global or assets loaded from paths containingvitepress. VitePress is a static site generator built on Vue and Vite, used for documentation sites including Vue's own official docs. - Gridsome: Look for
window.__GRIDSOME__in the page source. Gridsome is a Vue-based static site generator focused on data-driven sites. - Ionic Vue: Look for
ion-apporion-pageelements in the HTML. Ionic Vue wraps Vue components in Ionic's UI shell for cross-platform mobile and PWA development.
If any of these framework-specific signals are present, Vue.js is also present — no additional check is needed.
Distinguishing Vue 2 from Vue 3
Knowing which major version of Vue a site is using is often as important as knowing Vue is present at all, particularly if you are assessing migration risk or targeting outreach at sites likely running on unmaintained software.
Vue 3 indicators
window.__VUE__ === truein the browser consoledata-v-appattribute on the root element- Pinia state management library (Pinia is Vue 3 only)
- Nuxt 3 (built on Vue 3 exclusively)
- Asset filenames referencing
vue@3or3.x.xin CDN paths
Vue 2 indicators
window.Vueis defined andwindow.Vue.versionstarts with2.document.querySelector('#app').__vue__returns a Vue 2 instance object- Vuex state management (Vuex 4 supports Vue 3, but Vuex 3 is Vue 2 only — check the version string in script paths)
- Asset filenames referencing
vue@2or2.x.xin CDN paths - Absence of
data-v-appwhile scopeddata-v-attributes are present
Vue 2 reached end-of-life on December 31, 2023. Sites still running Vue 2 receive no further security patches from the core team, which has implications for vulnerability assessments and compliance requirements.
How Web Reveal Detects Vue.js
Web Reveal performs live HTTP analysis of the target URL and checks for multiple Vue.js fingerprints simultaneously:
- The
__VUE__global flag set by Vue 3 during runtime initialisation - The
__vue_devtools_global_hook__object registered by both Vue 2 and Vue 3 - The
data-v-appattribute on root HTML elements - Scoped style
data-v-[hash]attributes on component-rendered elements - JavaScript asset filenames and CDN paths matching Vue output patterns
- Companion library signals (Vue Router, Vuex, Pinia) as corroborating evidence
- Vue-based framework markers (Nuxt.js, Quasar, VitePress) as secondary confirmation
Because Web Reveal cross-references multiple signals, it can reliably confirm Vue.js and distinguish between major versions even on heavily minified production builds where individual manual checks might be inconclusive. The scanner also reports the detected Vue version string when it is readable from loaded asset paths or inline scripts.
Frequently Asked Questions
How can I tell if a website uses Vue.js?
The fastest method is to scan the URL with Web Reveal. Manually, open the browser console and check for window.__VUE__ (Vue 3) or window.__vue_devtools_global_hook__ (Vue 2 and 3). You can also look for data-v-app in the page source or check for data-v-[hash] attribute patterns on DOM elements using browser DevTools.
What is Vue.js and why is it widely used?
Vue.js is an open-source progressive JavaScript framework from Evan You for building user interfaces. Its gentle learning curve, HTML-template-based syntax, and excellent documentation make it a popular first framework for developers transitioning from traditional multi-page websites. Its progressive nature — usable as a small enhancement or a full SPA framework — makes it flexible enough for both simple and complex projects.
Can a website hide that it uses Vue.js?
Partially. Production builds minify and mangle variable names, making it harder to identify Vue by reading source files directly. However, the __VUE__ flag and the DevTools hook are set by the Vue runtime itself and cannot be removed without patching the library source — making them highly reliable detection signals even in optimised production builds. The data-v-app attribute is added by Vue's mount function and is similarly difficult to suppress.
Is Vue.js the same as Nuxt.js or Quasar?
No. Vue.js is a UI library and application framework. Nuxt.js and Quasar are meta-frameworks and UI toolkits built on top of Vue that add routing, server-side rendering, static site generation, and component libraries. All sites using Nuxt or Quasar also use Vue underneath, but a Vue site does not necessarily use either — it may use Vite, Vue CLI, or a custom build setup.
What version of Vue.js is a website using?
For Vue 3, run window.__VUE_APP__ && window.__VUE_APP__.version in the browser console, or check loaded script paths for a Vue CDN URL containing a version number such as vue@3.4.21. For Vue 2, run window.Vue && window.Vue.version. The Web Reveal scanner reports the detected Vue version automatically when it is readable from asset paths or inline scripts.
Detect Vue.js and Any Website's Full Tech Stack
Web Reveal is a free tool that identifies Vue.js, the version in use, any framework built on top of it, the hosting provider, and the complete technology stack of any website. No account required.
Scan a Website Free