Example magic

Magic words (including parser functions, variables and behavior switches) are features of wiki markup that give instructions to Wikipedia's underlying MediaWiki software. For example, magic words can suppress or position the table of contents, disable indexing by external search engines, and produce output dynamically based on the current page or on user-defined conditional logic. Some of these features are especially useful for templates.
This page is a quick reference for magic words. For more information, refer to the main MediaWiki documentation:
* mw:Help:Magic words: All standard magic words, including the "standard" parser functions.
* mw:Help:Extension:ParserFunctions: Additional parser functions, including conditional expressions.
== General information ==
In general, there are three types of magic words
# Behavior switches: often appear in double underscores, all uppercase, e.g., __NOTOC__. They will change the behavior of a page, rather than return a value.
# Parser functions: all in lowercase. A parser function will be followed by colon and pipe-separated parameters, e.g., {{#ifexpr:Y|Yes|No}}, wrapped in double braces. They will take a value and return a value. 
# Variables: these are all uppercase, e.g., . A variable will be wrapped in double braces and will return a value in its place.
The software generally interprets magic words in the following way.
* Magic words are case sensitive.
* White space is generously allowed for readability. It will be stripped from the start and end of their keywords and parameters (as is also done inside templates).
* They can be transcluded, even variables "about the current page". This is ensured by the parsing order.
* Instead of magically transforming into HTML instructions, tags remove this magic so a magic word can itself be displayed (documented).
 words compared to {{template}}:
* As with templates, magic words can be transcluded and substituted.
* The names of are purposely chosen to be unlike the names of , and vice versa. Many parser function names will begin with the # sign, but template names will not start with a # sign, and probably not end in a : colon character, or be all-uppercase. 
* The first parameter's syntax differs. In , the name is #magic and it will be followed by an unspaced : colon and a required input parameter, p1. The first of a template is optional but would be preceded by a | pipe instead of a : colon.
== Behavior switches ==
Switch 	Description
__TOC__ 	Places the page's table of contents (TOC) at the word's position.
__FORCETOC__ 	Forces the TOC to appear in its default position. Can be used anywhere on a page.
__NOTOC__ 	Suppresses the appearance of the page's TOC. Can be used anywhere on a page.
__NOEDITSECTION__ 	Hides the "edit" links normally beside all headings on the page. To hide the edit link beside a particular heading, specify the heading using e.g. an HTML tag such as rather than with the usual wiki equals-signs syntax (e.g. ).
__NEWSECTIONLINK__ 	On non-talk pages, adds a "" link as a means to add a new section to the page.
__NONEWSECTIONLINK__ 	Removes the "" link (the add-new-section link) on talk pages.
__NOGALLERY__ 	Replaces thumbnails on a category page with normal links.
__HIDDENCAT__ 	Makes a category hidden when included on that category's page.
__INDEX__ 	Instructs search engines to index the page.
__NOINDEX__ 	Instructs search engines not to index the page. See Wikipedia:Controlling search engine indexing.
__STATICREDIRECT__ 	Prevents the link on a redirection page from being updated automatically when the page to which it redirects is moved (and "Update any redirects that point to the original title" is selected). Also instructs interwiki bots to treat the page as if an article.
__DISAMBIG__ 	Marks a page as a disambiguation page, adds it to Special:DisambiguationPages and places inward links in Special:DisambiguationPageLinks. (See mw:Extension:Disambiguator.)
{{DISPLAYTITLE:title}} 	Used to amend the displayed form of the page's title.
{{DEFAULTSORT:sortkey}}	Sets the default key (the index) under which the page is categorised.
{{NOEXTERNALLANGLINKS}}	(equivalent to {{NOEXTERNALLANGLINKS|*}}) Suppresses the automated inclusion of Wikidata interlanguage links on the lefthand side of the page. Links to particular rather than all languages may be suppressed by using {{NOEXTERNALLANGLINKS|list}}, where list a pipe-delimited list of language codes (e.g. {{NOEXTERNALLANGLINKS|fresja}} to suppress the French ("fr"), Spanish ("es") and Japanese ("ja") interlanguage links).
== Variables ==
Page name variable 	Its output in this wikitext	Description
{{FULLPAGENAME}} 	 	Canonical page name. Title line. Title unless letter-case is altered with .
{{PAGENAME}} 	 	Title line excluding namespace.
{{BASEPAGENAME}} 	 	Title of parent page, excluding namespace.
{{ROOTPAGENAME}} 	 	Title of topmost parent (before all subpages), excluding namespace.
{{SUBPAGENAME}} 	 	On a subpage, rightmost portion of current title; higher subpagenames show as backlinks.
{{ARTICLEPAGENAME}}	 	Title of the subject page associated with the current page. These are useful on talk pages (but see note about Category talk pages).
{{SUBJECTPAGENAME}}	 	Title of the subject page associated with the current page. These are useful on talk pages (but see note about Category talk pages).
{{TALKPAGENAME}} 	 	Title of the talk page associated with the current page. Useful on subject pages.
{{NAMESPACENUMBER}}	 	Number of the current page's namespace.
{{NAMESPACE}} 	 	Namespace of the title.
{{ARTICLESPACE}} 	 	On a talk page, the namespace part of the title of the associated subject page.
{{SUBJECTSPACE}} 	 	On a talk page, the namespace part of the title of the associated subject page.
{{TALKSPACE}} 	 	Namespace of the talk page associated with the current page.
 	 	Adding an E to the end of the above variables, renders the above encoded for use in MediaWiki URLs (i.e. with underscores replacing spaces).
Note: The magic words above can also take a parameter, in order to parse values on a page other than the current page. A colon (:) is used to pass the parameter, rather than a pipe (|) that is used in templates, like {{MAGICWORD:value}}. For example, {{TALKPAGENAME:Wikipedia:MOS}} returns Wikipedia talk:MOS on any page. See meta:Help:Page name for more details of parser functions.
Note:
In the "Category" and "Category talk" namespaces, to wikilink (some) page name variables may require prefixing a colon to avoid unwanted categorization.
 
Site variable 	Example	Description
{{SITENAME}} 	 	
{{SERVER}} 	 	
{{SERVERNAME}} 	 	
{{SCRIPTPATH}} 	 	
{{CURRENTVERSION}}	 	Returns current MediaWiki version.
===Other variables by type===
Date and time	Revision data	Statistics
{| 	Universal time
* {{CURRENTYEAR}}
* {{CURRENTMONTH}}
* {{CURRENTMONTHNAME}}
* {{CURRENTMONTHABBREV}}
* {{CURRENTDAY}}
* {{CURRENTDAY2}}
* {{CURRENTDOW}}
* {{CURRENTDAYNAME}}
* {{CURRENTTIME}}
* {{CURRENTHOUR}}
* {{CURRENTWEEK}}
* {{CURRENTTIMESTAMP}}	Local website time
* {{LOCALYEAR}}
* {{LOCALMONTH}}
* {{LOCALMONTHNAME}}
* {{LOCALMONTHABBREV}}
* {{LOCALDAY}}
* {{LOCALDAY2}}
* {{LOCALDOW}}
* {{LOCALDAYNAME}}
* {{LOCALTIME}}
* {{LOCALHOUR}}
* {{LOCALWEEK}}
* {{LOCALTIMESTAMP}}
: {{REVISIONID}} cannot be substituted and does not function in preview.
: English Wikipedia.
: This shows the last user to edit the page. There is no way to show the user viewing the page due to technical issues.
== Parser functions ==
===Metadata===
Function 	Description
{{PAGEID}} 	Unique page identifier number.
{{PAGESIZE:fullpagename}} 	Size of named page in bytes.
{{PROTECTIONLEVEL:actionfullpagename}} 	Protection level assigned to action ("edit", "move", etc.) on named page.
{{PROTECTIONEXPIRY:actionfullpagename}}	Protection expiry assigned to action ("edit", "move", etc.) on named page.
{{PENDINGCHANGELEVEL}} 	Protection level for pending changes on the current page.
{{PAGESINCATEGORY:pagename}} 	Number of pages in the category named pagename.
{{NUMBERINGROUP:groupname}} 	Number of users in the usergroup named groupname.
To output numbers without comma separators (for example, as "123456789" rather than "123,456,789"), append the parameter |R.
===Formatting===
Function 	Description
lc:string 	Converts all characters in string to lower case.
lcfirst:string 	Converts first character of string to lower case.
uc:string 	Converts all characters in string to upper case.
ucfirst:string 	Converts first character of string to upper case.
formatnum:unformatted_numberformatnum:formatted_num R	Adds comma separators to an unformatted_number (e.g. 123456789 becomes ). To remove such formatting, use formatnum:formatted_numberR (i.e. , for example, produces ).
#dateformat:dateformat#formatdate:dateformat	Formats a date according to user preferences; a default can be given as an optional case-sensitive second parameter for users without date preference; can convert a date from an existing format to any of dmy, mdy, ymd, or ISO 8601 formats, with the user's preference overriding the specified format.
padleft:xyzstringlength padright:xyzstringlength 
padleft:xyzlengthpadstr padright:xyzlengthpadstr	Pad with zeroes '0' to the right or left, to fill the given length; an alternative padding string can be given as a third parameter; the repeated padding string (padstr) will be truncated if its length does not evenly divide the required number of characters.
plural:Nsingularplural 	Outputs singular if N is equal to 1, otherwise outputs plural. See the documentation at mediawiki.org for more details.
#time:formatobject #timel:formatobject 
#time:d F Ydatelangcode	Used to format dates and times, for ISO format, dots or English month names. #timel is based on local time as defined for each wiki; for English Wikipedia, this is identical to #time. The optional 3rd parameter is the output language code (French, German, Swedish: fr, de, sv, etc.). Example Finnish: {{#time:d F Y|June 30, 2016|fi}} shows: (June). ISO to German: {{#time:d. M Y|1987-10-31|de}} shows: . For format codes, see: mw:Help:Extension:ParserFunctions##time.
gender:userm_outf_outu_out 	Outputs m_out, f_out or u_out according to whether the gender specified in user's preferences is, respectively, male, female or unspecified. Other parameter permutations are available, see mw:Help:Magic words#gender and translatewiki:Gender.
#tag:tagcontent with magic 	Only way to evaluate magic words inside a tag, in order to generate <tag>magic</tag>. Also handles tag attributes.
===Paths===
Function 	Description
localurl:fullpagename query 	Relative path to page name. The query parameter is optional.
fullurl:fullpagename query 	Absolute path, without protocol prefix (i.e. without "http:" etc.), to page name. The query parameter is optional.
canonicalurl:fullpagename query 	Absolute path, including protocol prefix, to page name. The query parameter is optional.
filepath:filename 	Absolute path to the media file filename.
urlencode:string 	Encodes string for use in URL query strings; , for example, produces: . To encode string for use in URL paths or MediaWiki page names, append, respectively, or (to produce "" or "").
anchorencode:string 	Input encoded for use in MediaWiki URL section anchors.
ns:n 	Returns the name of the namespace whose index is the number n. For MediaWiki URLs, use nse:.
#rel2abs:path 	Converts a relative file path to an absolute path.
#titleparts:fullpagenamenumberfirst segment	Splits the fullpagename (title) into that number of segments.
===Conditional===
Function 	Description
#expr:expression 	Evaluates expression (see m:Help:Calculation).
#if:string result1 result2 	Outputs result2 if string is empty, otherwise outputs result1.
#ifeq:string1string2 result1 result2 	Outputs result1 if string1 and string2 are equal (alphabetically or numerically), otherwise outputs result2.
#iferror:test_string result1 result2 	Outputs result1 if test_string generates a parsing error, otherwise outputs result2.
#ifexpr:expression result1 result2 	Outputs result1 if expression is true, otherwise outputs result2.
#ifexist:pagetitle result1 result2 	Outputs result1 if the page [[pagetitle]] exists, otherwise outputs result2. Note that underscores are needed for spaces in namespaces.
#switch:string c1=r1 c2=r2 ... default	Outputs r1 if string is c1, r2 if string is c2, etc., otherwise outputs default (if provided).
If, in these conditional functions, empty unnamed parameters are to be parsed as empty rather than as text (i.e. as empty rather than as the text "", "", etc.), they will require trailing pipes (i.e. 1, 2, etc., rather than 1, 2, etc.).
* For the use of these functions in tables, see Wikipedia:Conditional tables.
===Other===
Function 	Description
{{#babel:code1|code2|...}} 	Render userboxes telling your language skills. Improves upon (an alternative).
{{#coordinates:arg1|arg2|...}} 	Save the GeoData coordinates of the subject to the page's database. Used in .
{{#invoke:module|function|arg1|...}}	Use Scribunto to transclude a lua template, e.g. function replace in module String.
{{#language:code1|code2}} 	Print the name represented by the language code, e.g. en → English. Print in language 2 if given.
{{#lst:}} {{#lsth:}} {{#lstx:}} 	Three ways to transclude a section of a page.
{{#property:arg1|arg2|...}} 	Include a property (Wikidata) from a named entity, instead of the default on the page.
{{#related:...}} 	Links to similar topics, to engage readers. (Beta feature.)
 	Aliases for {{#lst:}} {{#lsth}} {{#lstx}} (above).
{{#target:fullpagename}} 	Send a message to a list of talk pages on the fullpagename, using the MassMessage function.
{{int:pagename}} 	Transclude an interface message , i.e. a pagename in MediaWiki namespace
== See also ==
*Help:Magic links - for ISBN, PMID and RFC
* mw:Localisation
* mw:Manual:Extending wiki markup
* CoreParserFunctions.php
* wikEd, a MediaWiki editor with syntax highlighting for templates and parser functions
* 
* 
* Special:Version, at the bottom of the page, all the {{magic words}} on this page are listed there as Parser function hooks
Category:Wikipedia features
he:עזרה:משתנים