Bundled Skins
MediaWiki documents five bundled skins in its source tree (loaded from theskins/ directory):
Vector 2022
The current default skin since MediaWiki 1.37 (2022). A modernised version of Vector with improved accessibility and mobile support. Introduced in 1.36 (2021).
Vector (legacy)
The previous default from MediaWiki 1.17 (2011) until Vector 2022. Introduced in 1.16 (2010), it was designed to be more user-friendly than MonoBook.
MinervaNeue
A mobile-optimized skin introduced in 1.19 (2012). Designed primarily for mobile devices but usable on desktop. Used by default on Wikimedia mobile sites.
Timeless
A responsive skin for different screen sizes, equally focused on reading and editing interfaces. Introduced in 1.31 (2018).
MonoBook
Named after a black-and-white photo of a book used as the page background. The original default from 1.3 (2004) until replaced by Vector. The classic MediaWiki look.
The bundled skins (Vector, MinervaNeue, Timeless, MonoBook) are distributed separately from core and installed into the
skins/ directory. The skins/ directory in the core repository contains only a README file.How Skins Differ from Extensions
- Skins
- Extensions
- Registered with
wfLoadSkin()inLocalSettings.php - Described by
skin.json(same schema asextension.json) - Extend
SkinTemplate(orSkin) as their base class - Control overall page layout and chrome
- One skin is active per page view (the user’s preferred skin or the wiki default)
- Listed separately under “Installed skins” in Special:Version
Loading a Skin
Install the skin files
Place the skin directory under Skins available from Wikimedia Git can be cloned directly:For development, a symlink works too:
skins/ in your MediaWiki installation:Set it as the default (optional)
skin.json.skin.json Structure
skin.json uses the same schema as extension.json. The key difference is the "type": "skin" field and the SkinTemplateFactory or ValidSkinNames registration.
The SkinTemplate Base Class
Most skins extendSkinTemplate, which provides the foundational logic for rendering page structure. The skin class sets the template class used to produce HTML output:
BaseTemplate and implements a execute() method that outputs the full page HTML using data provided by SkinTemplate.
Custom CSS and JavaScript
Wiki administrators and users can customize CSS and JavaScript without modifying skin files, by editing special pages on the wiki.Site-Wide Customization
| Page | Scope |
|---|---|
MediaWiki:Common.css | CSS applied to all skins |
MediaWiki:Common.js | JavaScript applied to all skins |
MediaWiki:Vector.css | CSS applied only when the Vector skin is active |
MediaWiki:Minerva.css | CSS applied only when the Minerva skin is active |
MediaWiki:Vector.js | JavaScript applied only when Vector is active |
MediaWiki:<SkinName>.css / MediaWiki:<SkinName>.js for any installed skin.
Per-User Customization
Individual users can customize their own experience by editing:User:<name>/vector.cssUser:<name>/vector.jsUser:<name>/common.css- etc.
These wiki pages are only editable by users with the
editinterface right (typically administrators). Changes take effect immediately without any server-side deployment.Hooks for Skins
Skins can register hooks just like extensions, using the sameHookHandlers and Hooks fields in skin.json. Common hooks used by skins include:
Custom Skins
A large catalog of third-party skins is available. Installing a custom skin follows the same steps as any bundled skin: copy or clone the files intoskins/, add wfLoadSkin() to LocalSettings.php, and optionally set it as the default.
For an overview of writing a new skin from scratch, see the MediaWiki skinning manual.