Blogging Expert Free tools for blog and channel owners

Inspectors / INS-01 Runs in your browser

WordPress Theme Detector: Read the Theme From a Page Source

Paste a page's HTML and read back the active theme folder, the child-theme parent, every plugin folder referenced on the page, and the WordPress version if the site still publishes it.

Inspector INS-01 Paste-in — nothing is fetched

Use view-source, not the Elements panel. Elements shows the page after scripts have rewritten it.

WHERE THE NAME HIDES <link rel="stylesheet" href="/wp-content/themes/ astra-child /style.css?ver=1.4"> ACTIVE THEME FOLDER · loads last <link rel="stylesheet" href="/wp-content/themes/ astra /style.css"> PARENT THEME · named in the child's Template: line <script src="/wp-content/plugins/ wordpress-seo /js/dist/main.js"> PLUGIN FOLDER · one path per plugin that loads an asset WHERE THE NAME HIDES <link href="/wp-content/themes/ astra-child ACTIVE THEME FOLDER · loads last <link href="/wp-content/themes/ astra PARENT THEME · from the Template: line <script src="/wp-content/plugins/ wordpress-seo PLUGIN FOLDER · one per loaded asset
The three path shapes the inspector looks for. A theme folder only ever appears between /wp-content/themes/ and the next slash, which is why the check is reliable even on a site that has renamed everything else.

What a page source can and cannot tell you

WordPress serves the active theme's assets from a predictable location. Every stylesheet, script and image belonging to a theme sits under /wp-content/themes/<folder>/, and that path appears in the HTML because the browser has to be told where to fetch it from.

That turns theme detection into a text problem, and nothing about it has to be guessed. The folder name is not the marketing name of the theme, but on themes distributed publicly the two usually match, because installing a theme creates a folder named after it.

What the source cannot tell you is how much of the theme is still the theme. A site can keep the Astra folder while overriding every template in a child, so the answer "Astra" is true and not especially informative. The two-folder case, where a child and a parent both appear, is the signal that real customisation happened.

Reading the style.css header when the folder is unhelpful

Renamed folders are common on agency builds. When the folder name is a dead end, fetch the theme's stylesheet directly, at /wp-content/themes/<folder>/style.css, and paste its first twenty lines here instead.

WordPress requires a comment block at the top of that file, and it carries the fields that matter: Theme Name, Author, Version, and Template when the theme is a child. Those are filled in by the theme author rather than by whoever installed it, so they survive renaming.

The tool accepts either input. If it sees header fields it reports them; if it sees page HTML it reports paths. Pasting both, one after the other, usually settles the question completely.

Plugins are visible for the same reason

Plugins load their assets from /wp-content/plugins/<folder>/, so any plugin that puts a script or stylesheet on the page names itself in the process. The inspector collects every distinct folder it finds.

The list is partial by nature and it is worth being clear about why. A plugin that only runs server-side (a backup tool, a redirect manager, a caching layer) never loads a front-end asset and never appears. So the result is "plugins that touch this page", not "plugins installed".

Even so, the visible set is usually the interesting one: the SEO plugin, the page builder, the form handler, the consent banner. Those are the ones shaping what a visitor experiences, and they are the ones you would want to know about before quoting on a redesign.

Version numbers, and why they are often missing

WordPress appends a ?ver= query to asset URLs, and for theme files that value is frequently the theme version. Where it is present the tool reports it as a hint rather than a fact, because plenty of sites replace it with a build hash or strip it entirely for cache reasons.

The generator meta tag is the other frequent giveaway. It carries the WordPress core version when a site has not removed it, which many have, either through a security plugin or because a developer did not want the version public.

An absent generator tag and stripped versions are themselves informative. They indicate a site somebody has hardened deliberately, which tends to mean a maintained build. An install nobody has touched since launch rarely gets that treatment.

Nothing leaves your browser

The parser is a few regular expressions running on the text in the box. There is no upload, no queue and no log, because there is no server on the other side of this page to receive any of it.

That matters more than it sounds for this particular tool. Page source often contains nonces, logged-in user identifiers and REST endpoints, and pasting all of that into a hosted service means handing it to whoever runs the service. Here it stays in the tab and disappears when you close it.

Questions people ask

Why do I have to paste the source instead of entering a URL?

Because no page in a browser is allowed to fetch another website. Browsers block cross-origin requests unless the other site opts in, and no ordinary site opts in. Any tool that accepts a URL gets around that by fetching the page on its own server, not in your browser.

Pasting the source removes that middle step. You already have the page open; the browser has already downloaded it. This tool reads what is in front of you and never sends it anywhere.

How do I view the source of a page?

Add view-source: in front of the address, or press Ctrl+U on Windows and Linux, or Option+Command+U in Safari. Then select all and copy.

Use view-source, not the Elements panel in developer tools. Elements shows the document after JavaScript has rewritten it, which can hide the original theme paths or invent ones that were never in the file.

The result says a theme folder but the name looks meaningless.

Folder names are chosen by whoever installed the theme, and agencies routinely rename them or ship a client-specific build. A folder called "main" or "site-2019" is a custom or heavily modified theme rather than something you can buy.

When that happens, the style.css header is the better source. Open /wp-content/themes/<folder>/style.css directly in the browser and paste that instead. The Theme Name and Author fields there are usually left intact.

What does it mean when two theme folders show up?

Almost always a child theme. WordPress loads the parent theme for templates and functions, and the child theme for overrides, so both folders appear in the same page.

The child is the one whose stylesheet loads later, and its style.css carries a Template: line naming the parent. The tool flags the pair when it can tell them apart.

Can it tell me the theme version?

Sometimes. Many sites append a version query to stylesheet URLs, and where that is the theme version, it is reported. Plenty of sites strip it or replace it with a cache-busting hash instead, in which case the answer is honestly unknown.

The style.css header carries the real version. If you need it exactly, fetch that file.

Does it work on sites that are not WordPress?

It will tell you that it found no WordPress markers, which is itself useful. The tool also reports any generator meta tag it finds, so a Shopify, Wix, Drupal or static-site build usually identifies itself in the same pass.

Other tools on this site