Special text strings expand on the fly to display user data or system info
TWikiVariables are text strings - %VARIABLE% - that expand into content whenever a page is rendered for viewing. VARIABLES are replaced by data, either user-entered or automatically generated by TWiki (like the date, or the current username). There are predefined variables, and Preference variables that you can configure. You can also define custom variables, with new names and values.
Notes:
To leave a variable unexpanded, precede it with an exclamation point, e.g. type !%TOPIC% to get %TOPIC%.
Variables are expanded relative to the topic they are used in, not the topic they are defined in.
Predefined Variables
Most predefined variables return values that were either set in the lib/twiki.cfg file, when TWiki was installed, or taken from server info (like current username, or date and time). Many of the variables let you format the appearance of the display results.
Take the time to thoroughly read through ALL preference variables. If you actively configure your site, review variables periodically. They cover a wide range of functions, and it can be easy to miss the one perfect variable for something you have in mind. For example, see %INCLUDINGTOPIC%, %INCLUDE%, and the mighty %SEARCH%.
This version of TWiki - Wed, 14 Dec 2005 build 7851 - expands the following variables (enclosed in % percent signs):
ACTIVATEDPLUGINS -- list of currently activated plugins
Note: When used in a template topic, this variable will be expanded when the template is used to create a new topic. See TWikiTemplates#TemplateTopicsVars for details.
Note: When used in a template topic, this variable will be expanded when the template is used to create a new topic. See TWikiTemplates#TemplateTopicsVars for details.
day of the Week (Sun, Mon, Tue, Wed, Thu, Fri, Sat)
Thu
$dow
day of the week (Sun = 0)
2
$week
number of week in year (ISO 8601)
34
$month
month in ISO format
Dec
$mo
2 digit month
12
$year
4 digit year
1999
$ye
2 digit year
99
$tz
either "GMT" (if set to gmtime), or "Local" (if set to servertime)
GMT
$iso
ISO format timestamp
2026-05-31T18:50Z
$rcs
RCS format timestamp
2026/05/31 18:50:53
$http
E-mail & http format timestamp
Sun, 31 May 2026 18:50:53 GMT
$epoch
Number of seconds since 00:00 on 1st January, 1970
1780253453
Variables can be shortened to 3 characters
Example: %GMTIME{"$day $month, $year - $hour:$min:$sec"}% expands to 31 May, 2026 - 18:50:53
Note: When used in a template topic, this variable will be expanded when the template is used to create a new topic. See TWikiTemplates#TemplateTopicsVars for details.
The same as %HTTP but operates on the HTTPS environment variables present when the SSL protocol is in effect. Can be used to determine whether SSL is turned on.
The name of a topic located in the current web, i.e. %INCLUDE{"WebNotify"}%
"Web.Topic"
A topic in another web, i.e. %INCLUDE{"TWiki.SiteMap"}%
"http://..."
A full qualified URL, i.e. %INCLUDE{"http://twiki.org:80/index.html"}%. Supported content types are text/html and text/plain. if the URL resolves to an attachment file on the server this will automatically translate to a server-side include.
Includes only the specified section, as defined in the included topic by the SECTION and ENDSECTION variables
PARONE="val 1" PARTWO="val 2"
Any other parameter will be defined as a variable within the scope of the included topic. The example parameters on the left will result in %PARONE% and %PARTWO% being defined within the included topic.
a comma-separated list of arguments to be interpolated in the string, replacing the [_N] placeholders in it.
none
Examples:
%MAKETEXT{string="Notes:"}% expands to Notes:
%MAKETEXT{"Contact [_1] if you have any questions." args="%WIKIWEBMASTER%"}% expands to Contact jpw@rainysky.org if you have any questions.
%MAKETEXT{"Did you want to [[[_1]][reset [_2]'s password]]?" args="TWiki.ResetPassword,%WIKIUSERNAME%"}% expands to Did you want to reset Main.TWikiGuest's password?
Notes:
that TWiki will translate the string to the current user's language only if it has such string in its translation table for that language.
Amperstands (&) followed by one letter (one of a...z, A...Z) (say, X) in the translatable string will be translated to <span class='twikiAccessKey'>X</span>. This is used to implement access keys. If you want to write an actual amperstand that stays just before a letter, write two consecutive amperstands (&&): they will be transformed in just one.
translatable string starting with underscores (_) are reserved. You should not use translatable phrases starting with an underscore.
Provided mainly for use in templates, this variable generates the parts of the topic view that relate to meta-data (attachments, forms etc.) The formfield item is the most likely to be useful to casual users.
name="..." - name of the field. The field value can be shortened as described in FormattedSearch for $formfield
Show a single form field
"form"
none
Generates the table showing the form fields. See Form Templates
"attachments"
all="on" to show hidden attachments
Generates the table showing the attachments
"moved"
none
Details of any topic moves
"parent"
dontrecurse="on": By default recurses up tree, this has some cost. nowebhome="on": Suppress WebHome. prefix="...": Prefix that goes before parents, but only if there are parents, default "". suffix="...": Suffix, only appears if there are parents, default "". separator="...": Separator between parents, default is " > ".
What sort of search is required? "topicmoved" if search for a topic that may have been moved "parent" if searching for topics that have a specific parent i.e. its children "field" if searching for topics that have a particular form field value (use the name and value parameters to specify which field to search)
required
web="%WEB%"
Wiki web to search: A web, a list of webs separated by whitespace, or all webs.
current web
topic="%TOPIC%"
The topic the search relates to, for topicmoved and parent searches
current topic
name
form field to search, for field type searches. May be a regular expression (see SEARCH).
value
form field value, for field type searches. May be a regular expression (see SEARCH).
title="Title"
Text that is prefixed to any search results
empty
default="none"
Default text shown if no search hit
empty
Example: %METASEARCH{type="topicmoved" web="%WEB%" topic="%TOPIC%" title="This topic used to exist and was moved to: "}%
NOP -- template text not to be expanded in instantiated topics
Syntax: %NOP%
Syntax: %NOP{...}%
Available in template topics only. See TWikiTemplates#HtmlTemplates for details. In normal topic text, simply expands to whatever is in the curly braces (if anything).
QUERYSTRING -- full, unprocessed string of parameters to this URL
Syntax: %QUERYSTRING%
Expands to: rev=78
String of all the URL parameters that were on the URL used to get to the current page. For example, if you add ?name=Samantha;age=24;eyes=blue to this URL you can see this in action. This string can be appended to a URL to pass parameter values on to another page.
Note: URLs built this way are typically restricted in length, typically to 2048 characters. If you need more space than this, you will need to use an HTML form and %URLPARAM{}%.
Example: To get the authenticated version of current topic write "}%L%/viewauth%SCRIPTSUFFIX%/%WEB%/%TOPIC% which expands to /bin/viewauth/TWiki/TWikiVariablesNtoZ
Syntax: %SCRIPTURL{"script"}%
Expands to: /bin/script
Example: To get the authenticated version of current topic write %SCRIPTURL{"viewauth"}%/TWiki/TWikiVariablesNtoZ which expands to /bin/viewauth/TWiki/TWikiVariablesNtoZ
Search term. Is a keyword search, literal search or regular expression search, depending on the type parameter. SearchHelp has more
required
search="text"
(Alternative to above)
N/A
web="Name" web="Main, Know" web="all"
Comma-separated list of webs to search. The special word all means all webs that doe not have the NOSEARCHALL variable set to on in their WebPreferences. You can specifically exclude webs from an all search using a minus sign - for example, web="all,-Secretweb".
Current web
topic="WebPreferences" topic="*Bug"
Limit search to topics: A topic, a topic with asterisk wildcards, or a list of topics separated by comma.
Search topic name (title); the text (body) of topic; or all (both)
"text"
order="topic" order="created" order="modified" order="editby" order "formfield(name)"=
Sort the results of search by the topic names, topic creation time, last modified time, last editor, or named field of TWikiForms. The sorting is done web by web; if you want to sort across webs, create a formatted table and sort it with TablePlugin's initsort. Note that dates are sorted most recent date last (i.e at the bottom of the table).
Sort by topic name
limit="all" limit="16"
Limit the number of results returned. This is done after sorting if order is specified
All results
date="..."
limits the results to those pages with latest edit time in the given TimeInterval.
Shorthand for nosummary="on" nosearch="on" nototal="on" zeroresults="off" noheader="on" noempty="on"
Off
=nosummary="on"
Show topic title only
Show topic summary
nosearch="on"
Suppress search string
Show search string
noheader="on"
Suppress search header Topics: Changed: By:
Show search header, unless seach is inline and a format is specified (Cairo compatibility)
nototal="on"
Do not show number of topics found
Show number
zeroresults="off"
Suppress all output if there are no hits
zeroresults="on", displays: "Number of topics: 0"
noempty="on"
Suppress results for webs that have no hits.
Show webs with no hits
header="..." format="..."
Custom format results: see FormattedSearch for usage, variables & examples
Results in table
expandvariables="on"
Expand variables before applying a FormattedSearch on a search hit. Useful to show the expanded text, e.g. to show the result of a SpreadSheetPlugin%CALC{}% instead of the formula
Raw text
multiple="on"
Multiple hits per topic. Each hit can be formatted. The last token is used in case of a regular expression ";" and search
Only one hit per topic
nofinalnewline="on"
If on, the search variable does not end in a line by itself. Any text continuing immediately after the search variable on the same line will be rendered as part of the table generated by the search, if appropriate.
Example with format: %SEARCH{"FAQ" scope="topic" nosearch="on" nototal="on" header="| *Topic: * | *Summary: * |" format="| $topic | $summary |"%(displays results in a table with header - details)
Hint: If the TWiki:Plugins.TablePlugin is installed, you may set a %TABLE{}% variable just before the %SEARCH{}% to alter the output of a search. Example: %TABLE{ tablewidth="90%" }%
Note: When used in a template topic, this variable will be expanded when the template is used to create a new topic. See TWikiTemplates#TemplateTopicsVars for details.
Example: %SERVERTIME{"$hou:$min"}% expands to 12:50
Note: When used in a template topic, this variable will be expanded when the template is used to create a new topic. See TWikiTemplates#TemplateTopicsVars for details.
STARTINCLUDE -- start position of topic text if included
If present in included topic, start to include text from this location up to the end, or up to the location of the %STOPINCLUDE% variable. A normal view of the topic shows everything exept the %STARTINCLUDE% variable itself. An optional parameter can be used to control whether the content is expanded.
Syntax: %STARTINCLUDE%
Syntax: %STARTINCLUDE{param}%
If param does not expand to a non-zero integer, then nothing will be included.
STOPINCLUDE -- end position of topic text if included
If present in included topic, stop to include text at this location and ignore the remaining text. A normal view of the topic shows everyting exept the %STOPINCLUDE% variable itself.
Table of Contents. Shows a TOC that is generated automatically based on headings of a topic. Headings in WikiSyntax ("---++ text") and HTML ("<h2>text</h2>") are taken into account. Any heading text after "!!" is excluded from the TOC; for example, write "---+!! text" if you do not want to list a header in the TOC
Hint: TOC will generate links to the headings, so when a reader clicks on a heading it will jump straight where that heading is anchored in the text. If you have two headings with exactly the same text, then their anchors will also be identical and they won't be able to jump to them. To make the anchors unique, you can add an invisible HTML comment to the text of the heading. This will be hidden in normal view, but will force the anchors to be different. For example, ---+ Heading <!--5-->.
The "format" defines the format of one topic item. It may include variables: The $name variable gets expanded to the topic name; the $web variable gets expanded to the name of the web.
Default value in case parameter is empty or missing
empty string
newline="<br />"
Convert newlines in textarea to other delimiters
no conversion
encode="entity"
Encode special characters into HTML entities, like a double quote into ". This is needed if text is put into an HTML form field
no encoding
encode="url"
Encode special characters for URL parameter use, like a double quote into %22
no encoding
multiple="on" multiple="[[$item]]"
If set, gets all selected elements of a <select multiple="multiple"> tag. A format can be specified, with $item indicating the element, e.g. multiple="Option: $item"
first element
separator=", "
Separator between multiple selections. Only relevant if multiple is specified
"\n" (new line)
Example: %URLPARAM{"skin"}% returns print for a .../view/TWiki/TWikiVariablesNtoZ?skin=print URL.
Note: When used in a template topic, this variable will be expanded when the template is used to create a new topic. See TWikiTemplates#TemplateTopicsVars for details.
Note: There is a risk that this variable could be misused for cross-site scripting.
TWiki makes names available in three formats: USERNAME like jsmith, WIKINAME like JohnSmith and WIKIUSERNAME like Main.JohnSmith. Un-authenticated users are all TWikiGuest.
Syntax: %USERNAME%
Expands to: guest
Note: When used in a template topic, this variable will be expanded when the template is used to create a new topic. See TWikiTemplates#TemplateTopicsVars for details.
Returns the language code for the language used as the current user. This is the language actually used by TWiki Internationalization (e.g. in user interface).
The language is detected from the user's browser, unless some site/web/user/session-defined setting overrides it:
Is the LANGUAGE preference is set, it's used as user's language instead of any language detected from the browser.
Avoid to define it LANGUAGE at a non per-user way, so each user can choose his/her preferred language.
List of all webs. Hidden webs are excluded, e.g. webs with a NOSEARCHALL=on preference variable. The "format" defines the format of one web item. The $name variable gets expanded to the name of the web, $qname gets expanded to double quoted name, $marker to marker where web matches selection.
Format of one line, may include $name variable. (to support HierarchicalWebs?, there are 2 added variables $webindent and $indentedname)
"$name"
format="format"
(Alternative to above)
"$name"
separator=", "
line separator
"\n" (new line)
webs="public"
comma sep list of Web, public expands to all non-hidden
"public"
marker="selected"
Text for $marker where item matches selection, otherwise equals ""
"selected"
selection="%WEB%"
Current value to be selected in list
section="%WEB%"
Example: %WEBLIST{" * [[$name.WebHome]]"}% creates a bullet list of all webs.
Example: %WEBLIST{"<option $marker value=$qname>$name</option>" webs="Trash,public" selection="TWiki" separator=" "}% Dropdown of all public Webs + Trash Web, current Web highlighted.
Note: DEPRECATED, use %WIKILOGOURL% defined in WebPreferences instead. This variables value is defined in lib/TWiki.cfg::$wikiHomeUrl which is marked deprecated. Will be removed in future versions.
WIKINAME -- your Wiki username
The WikiName is the same as %USERNAME% if not defined in the TWikiUsers topic
Syntax: %WIKINAME%
Expands to: TWikiGuest
Note: When used in a template topic, this variable will be expanded when the template is used to create new topic. See TWikiTemplates#TemplateTopicsVars for details.
WIKIUSERNAME -- your Wiki username with web prefix
Your %WIKINAME% with Main web prefix, useful to point to your FS home page
Syntax: %WIKIUSERNAME%
Expands to: Main.TWikiGuest, renders as TWikiGuest
Note: When used in a template topic, this variable will be expanded when the template is used to create a new topic. See TWikiTemplates#TemplateTopicsVars for details
Default state of the link check box in the attach file page. Check box is initially checked if value is set to CHECKED , unchecked if empty. If checked, a link is created to the attached file at the end of the topic. Value is:
%DENYTOPICCHANGE%
(any topic)
List of users and groups who are not allowed to change the current topic. (More in TWikiAccessControl)
%DENYTOPICCHANGE%
%DENYTOPICRENAME%
(any topic)
List of users and groups who are not allowed to rename the current topic. (More in TWikiAccessControl)
%DENYTOPICRENAME%
%DENYWEBCHANGE%
WL
List of users and groups who are not allowed to change topics in the FS web. (More in TWikiAccessControl)
%DENYWEBCHANGE%
%DENYWEBRENAME%
WL
List of users and groups who are not allowed to rename topics in the FS web. (More in TWikiAccessControl)
%DENYWEBRENAME%
%DONTNOTIFYCHECKBOX%
SL , UL
Default state of the "Minor Changes, Don't Notify" (DontNotify) check box in preview. Check box is initially checked if Set DONTNOTIFYCHECKBOX = checked="checked", or unchecked if empty. Value is:
%EDITBOXHEIGHT%
SL , UL
Vertical size of edit box, is 20
20
%EDITBOXWIDTH%
SL , UL
Horizontal size of edit box, is 70
70
%EDITBOXSTYLE%
SL , UL
Style of text edit box. Set to width: 99% for full window width (default; overwrites the EDITBOXWIDTH setting), or width: auto to disable. Value is: width: 99%
width: 99%
%FINALPREFERENCES%
SL , WL
List of preferences that are not allowed to be overridden by next level preferences
http-equiv meta tags for view, rdiff, attach, search* scripts.
%NEWTOPICBGCOLOR%
SL , UL
Background color of non existing topic. ( UL needs authentication for topic views )
#FFFFCE
%NEWTOPICFONTCOLOR%
SL , UL
Font color of non existing topic. ( UL needs authentication for topic views )
#0000FF
%NOSEARCHALL%
WL
Exclude web from a web="all" search (set variable to on for hidden webs)
%RELEASEEDITLOCKCHECKBOX%
SL , UL
Default state of the "Release edit lock" (UnlockTopic?) check box in preview. Checkbox is initially checked if Set RELEASEEDITLOCKCHECKBOX = checked="checked", or unchecked if empty. If checked, make sure to click on Edit to do more changes; do not go back in your browser to the edit page, or you risk that someone else will edit the topic at the same time! Value is: %RELEASEEDITLOCKCHECKBOX%
Note: There are some more useful variables defined in the TWikiPreferences like %BR% for line break, colors like %RED% for colored text and small icons like %H% for a Help icon.
Setting Preferences
The syntax for Preferences Variables is the same anywhere in TWiki (on its own TWiki bullet line, including nested bullets): [multiple of 3 spaces] * [space] Set [space] VARIABLENAME [space] = [value] Examples:
Set VARIABLENAME = value
Set VARIABLENAME = value
Creating Custom Variables
You can add your own Preference Variables for us across an entire site or a single web, using the standard Preferences syntax. Whatever you include in your Variable will be expanded on display, exactly as if it had been entered directly. You can place formatted text, page links, image paths.
Example: Create a custom logo variable the TWiki web
To place a logo anywhere in a web by typing %MYLOGO%, define the Variable on the web's WebPreferences page, and upload a logo file, ex: mylogo.gif. You can upload by attaching the file to WebPreferences, or, to avoid clutter, to any other topic in the same web, ex: LogoTopic: