Extension Manifest Generator
Generate Joomla extension manifest XML files for components, modules, and plugins.
Common fields
Component fields
Joomla Extension Manifest XML Generator — Complete Guide
Every Joomla extension — whether a component, module, plugin, or template — requires a manifest XML file (historically called joomla.xml or simply {name}.xml) to be installed via the Joomla Extension Manager. The manifest describes the extension's metadata, files, SQL installation scripts, and configuration parameters. An invalid manifest will prevent installation entirely.
Manifest File Requirements by Type
- Components — The manifest must declare both the
administrationandsitesections, list all PHP files, and define the admin menu entry. SQL install/uninstall scripts are listed under<install>and<uninstall>. - Modules — Simpler manifests that list the module PHP file, helper file, and
mod_{name}.xmlparameter file. Theclientattribute specifies whether it is a site or admin module. - Plugins — Must declare the plugin
groupattribute. The manifest lists the main plugin PHP file and any language files. Plugin configuration parameters are defined inline in the manifest. - Templates — Declare template positions using
<positions>elements. Template files are listed under the<files>section. Media files go in a separate<media>element. - Libraries — Used for shared PHP code that multiple extensions depend on. The
<libraryname>element defines the namespace key. - Packages — Install multiple extensions in a single archive. List each child extension's installer archive inside
<extensions>.
Joomla Version Compatibility
Use version="4.0" for Joomla 4.x and 5.x compatibility. Older manifests using version="2.5" or version="3.0" will trigger deprecation warnings in Joomla 4+ and may fail in future versions. Always set method="upgrade" so the installer handles both fresh installs and updates without requiring an uninstall first.
Language Files
Language files should be declared in your manifest using <languages> tags. Joomla's installer copies them to language/{lang-tag}/. Use the extension's name as the language file prefix — for example en-GB.com_mycomponent.ini and en-GB.com_mycomponent.sys.ini.