How to detect Joomla version withouth having access to admin?

Sometimes you need to find out the exact Joomla version for a website you don't own for a decent reason - like you are a freelancer and need to provide an estimation for a job on the respective site.

Sure, you can ask the owner ;) but that's the easy scenario.

Fortunately there are relatively easy - and legitimate - ways to find it out, unless the owner of the site hasn't blocked the access to this information. In my personal experience (believe me, I have some) this is rarely happening.

There are basically two distinct cases, let's begin with the most common one.

You have to deal with a Joomla version 1.6.0+

Joomla, since version 1.6.0 onwards (3.9.13 when I wrote this) stores this information in a standard place, all you need to do is to access the following URL:

http://www.[whatewerdomain.tld]/administrator/manifests/files/joomla.xml 

or the corresponding variants, depending how the site is set up: you might need to use different protoclo, like https:// instead of http:// - very likely and quasi standard these days, or you might not need the www. prefix, you'll figure out. The XML file found at the above URL in the version XML element you will find the exact Joomla version, like this:

<extension version="3.3" type="file" method="upgrade">

Yes – it’s scarily easy!

You have an older Joomla version

There are multiple subvariants for these older Joomla sites. but this time you must work harder for the desired info.

Joomla 1.5.*

This covers all versions from 1.5 family, from 1.5.0 to 1.5.26 Joomla websites in the 1.5.x line do not have the above joomla.xml file, but you can check another standard location:

http://www.[whatewerdomain.tld]/language/en-GB/en-GB.xml

In this case the info is more scarce, and looks like this:

<metafile version="1.5"  client="site" >
    <name>English(United Kingdom)</name>
    <tag>en-GB</tag>
    <version>1.5.15</version>

The major problem here is, language files are/where often edited, and this info might be missing alltogether. In that case, you need to search for another file found in standard distribution package, typically a core JavaScript files under the media/system/js folder or includes/js/ folders, for example this one:

http://www.[whatewerdomain.tld]/includes/js/joomla.javascript.js

the problem there is, that the info you will find is cryptic, and you need further digging in finding out the exact version:

* @version        $Id: joomla.javascript.js 10389 2008-06-03 11:27:38Z pasamio $

But generally at this phase you don't need to dig further, it's quite enough at this phase to be certain, that you are facing a Joomla 1.5.* site. You will see the exact subversion after you win the project ad receive the backend credentials ;)

Joomla 1.0.*

Here you are in a similar situation as in the case of Joomla 1.5.* - you can find out easily the evidence that you are looking to to a Joomla 1.0 site by checking the existence of this file:

http://www.[whatewerdomain.tld]/modules/custom.xml

It is generally enough to check for the existence of the file, unfortunately the information contained will not help you to dig for the exact subversion:

<mosinstall type="module" version="1.0.0">
    <name>Custom Module</name>
    <author>Joomla! Project</author>
    <creationDate>July 2004</creationDate>
    <copyright>(C) 2005 Open Source Matters. All rights reserved.</copyright>
    <license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
    <authorEmail>This email address is being protected from spambots. You need JavaScript enabled to view it.<;/authorEmail>
    <authorUrl>www.joomla.org</authorUrl>
    <version>1.0.0</version>

Even if is clearly visible, that the intention was to store the full version string - including the subversion - this file was never used correctly in this regard. The only clue here regarding the subversion is the creationDate value.

Here are two links wich can help you in finding out the missing info: