A lightweight markup language (LML), also termed a simple or humane markup language, is a markup language with simple, unobtrusive syntax. It is designed to be easy to write using any generic text editor and easy to read in its raw form. Lightweight markup languages are used in applications where it may be necessary to read the raw document as well as the final rendered output.
For instance, a person downloading a software library might prefer to read the documentation in a text editor rather than a web browser. Another application for such languages is to provide for data entry in web-based publishing, such as blogs and wikis, where the input interface is a simple text box. The server software then converts the input into a common document markup language like HTML.
Lightweight markup languages were originally used on text-only displays which could not display characters in italics or bold, so informal methods to convey this information had to be developed. This formatting choice was naturally carried forth to plain-text email communications. Console browsers may also resort to similar display conventions.
In 1986 international standard SGML provided facilities to define and parse lightweight markup languages using grammars and tag implication. The 1998 W3C XML is a profile of SGML that omits these facilities. However, no SGML document type definition (DTD) for any of the languages listed below is known.
Lightweight markup languages can be categorized by their tag types. Like HTML (<b>bold</b>
), some languages use named elements that share a common format for start and end tags (e.g. BBCode [b]bold[/b]
), whereas proper lightweight markup languages are restricted to ASCII-only punctuation marks and other non-letter symbols for tags, but some also mix both styles (e.g. Textile bq.
) or allow embedded HTML (e.g. Markdown), possibly extended with custom elements (e.g. MediaWiki <ref>'''source'''</ref>
).
Most languages distinguish between markup for lines or blocks and for shorter spans of texts, but some only support inline markup.
Some markup languages are tailored for a specific purpose, such as documenting computer code (e.g. POD, reST, RD) or being converted to a certain output format (usually HTML or LaTeX) and nothing else, others are more general in application. This includes whether they are oriented on textual presentation or on data serialization.[ clarification needed ]
Presentation oriented languages include AsciiDoc, atx, BBCode, Creole, Crossmark, Djot, Epytext, Haml, JsonML, MakeDoc, Markdown, Org-mode, POD (Perl), reST (Python), RD (Ruby), Setext, SiSU, SPIP, Xupl, Texy!, Textile, txt2tags, UDO and Wikitext.
Data serialization oriented languages include Curl (homoiconic, but also reads JSON; every object serializes), JSON, and YAML.
Language | HTML export tool | HTML import tool | Tables | Link titles | class attribute | id attribute | Release date |
---|---|---|---|---|---|---|---|
AsciiDoc | Yes | Yes | Yes | Yes | Yes | Yes | 2002-11-25 [1] |
BBCode | No | No | Yes | No | No | No | 1998 |
Creole | No | No | Yes | No | No | No | 2007-07-04 [2] |
Djot | Yes | Yes [3] | Yes | Yes | Yes | Yes | 2022-07-30 [4] |
Gemtext | Yes | ? | No | Yes | No | No | 2020 |
GitHub Flavored Markdown | Yes | No | Yes | Yes | No | No | 2011-04-28+ |
Jira Formatting Notation | Yes | No | Yes | Yes | No | No | 2002+ [5] |
Markdown | Yes | Yes | No | Yes | Yes/No | Yes/No | 2004-03-19 [6] [7] |
Markdown Extra | Yes | Yes | Yes [8] | Yes | Yes | Yes | 2013-04-11 [9] |
MediaWiki | Yes | Yes | Yes | Yes | Yes | Yes | 2002 [10] |
MultiMarkdown | Yes | No | Yes | Yes | No | No | 2009-07-13 |
Org-mode | Yes | Yes [11] | Yes | Yes | Yes | Yes | 2003 [12] |
PmWiki | Yes [13] | Yes | Yes | Yes | Yes | Yes | 2002-01 |
POD | Yes | ? | No | Yes | ? | ? | 1994 |
reStructuredText | Yes | Yes [11] | Yes | Yes | Yes | auto | 2002-04-02 [14] |
setext | Yes | Yes | No | Yes | No | No | 1992 [15] |
Slack | No | No | No | Yes | No | No | 2013+ [16] [17] |
TiddlyWiki | Yes | No | Yes | Yes | Yes | No | 2004-09 [18] |
Textile | Yes | No | Yes | Yes | Yes | Yes | 2002-12-26 [19] |
Texy | Yes | Yes | Yes | Yes | Yes | Yes | 2004 [20] |
txt2tags | Yes | Yes [21] | Yes [22] | Yes | Yes/No | Yes/No | 2001-07-26 [23] |
No | No | No | No | No | No | 2016-03-16 [24] |
Markdown's own syntax does not support class attributes or id attributes; however, since Markdown supports the inclusion of native HTML code, these features can be implemented using direct HTML. (Some extensions may support these features.)
txt2tags' own syntax does not support class attributes or id attributes; however, since txt2tags supports inclusion of native HTML code in tagged areas, these features can be implemented using direct HTML when saving to an HTML target. [25]
Language | Implementations | X HTML | Con/La TeX | DocBook | ODF | EPUB | DOC (X) | LMLs | Other | License | |
---|---|---|---|---|---|---|---|---|---|---|---|
AsciiDoc | Python, Ruby, JavaScript, Java | XHTML | LaTeX | DocBook | ODF | EPUB | No | — | Man page etc. | GNU GPL, MIT | |
BBCode | Perl, PHP, C#, Python, Ruby | (X)HTML | No | No | No | No | No | No | — | — | Public Domain |
Creole | PHP, Python, Ruby, JavaScript [26] | Depends on implementation | CC_BY-SA 1.0 | ||||||||
Djot | Lua (originally), JavaScript, Prolog, Rust [3] | HTML | LaTeX, ConTeXt | DocBook | ODF | EPUB | RTF | MediaWiki, reST | Man page, S5 etc. | MIT | |
GitHub Flavored Markdown | Haskell (Pandoc) | HTML | LaTeX, ConTeXt | DocBook | ODF | EPUB | DOC | AsciiDoc, reST | OPML | GPL | |
Java, [27] JavaScript, [28] [29] [30] PHP, [31] [32] Python, [33] Ruby [34] | HTML [28] [29] [30] [32] [33] | No | No | No | No | No | No | — | — | Proprietary | |
Markdown | Perl (originally), C, [35] [36] Python, [37] JavaScript, Haskell, [11] Ruby, [38] C#, Java, PHP | HTML | LaTeX, ConTeXt | DocBook | ODF | EPUB | RTF | MediaWiki, reST | Man page, S5 etc. | BSD-style & GPL (both) | |
Markdown Extra | PHP (originally), Python, Ruby | XHTML | No | No | No | No | No | No | — | — | BSD-style & GPL (both) |
MediaWiki | Perl, PHP, Haskell, Python | XHTML | No | No | No | No | No | No | — | — | GNU GPL |
MultiMarkdown | C, Perl | (X)HTML | LaTeX | No | ODF | No | DOC, RTF | — | OPML | GPL, MIT | |
Org-mode | Emacs Lisp, Ruby (parser only), Perl, OCaml | XHTML | LaTeX | DocBook | ODF | EPUB [39] | DOCX [39] | Markdown | TXT, XOXO, iCalendar, Texinfo, man, contrib: groff, s5, deck.js, Confluence Wiki Markup, [40] TaskJuggler, RSS, FreeMind | GPL | |
PmWiki | PHP | XHTML 1.0 Transitional, HTML5 | No | PDF export addons | No | No | EPUB export addon | No | — | — | GNU GPL |
POD | Perl | (X)HTML, XML | LaTeX | DocBook | No | No | RTF | — | Man page, plain text | Artistic License, Perl's license | |
reStructuredText | Python, [41] [42] Haskell (Pandoc), Java, | HTML, XML | LaTeX | DocBook | ODF | EPUB | DOC | — | man, S5, Devhelp, QT Help, CHM, JSON | Public Domain | |
Textile | PHP, JavaScript, Java, Perl, Python, Ruby, ASP, C#, Haskell | XHTML | No | No | No | No | No | No | — | — | Textile License |
Texy! | PHP, C# | (X)HTML | No | No | No | No | No | No | — | — | GNU GPL v2 License |
txt2tags | Python, [43] PHP [44] | (X)HTML, SGML | LaTeX | DocBook | ODF | EPUB | DOC | Creole, AsciiDoc, MediaWiki, MoinMoin, PmWiki, DokuWiki, Google Code Wiki | roff, man, MagicPoint, Lout, PageMaker, ASCII Art, TXT | GPL |
Although usually documented as yielding italic and bold text, most lightweight markup processors output semantic HTML elements em
and strong
instead. Monospaced text may either result in semantic code
or presentational tt
elements. Few languages make a distinction, e.g. Textile, or allow the user to configure the output easily, e.g. Texy.
LMLs sometimes differ for multi-word markup where some require the markup characters to replace the inter-word spaces (infix). Some languages require a single character as prefix and suffix, other need doubled or even tripled ones or support both with slightly different meaning, e.g. different levels of emphasis.
HTML output | <strong>strongly emphasized</strong> | <em>emphasized text</em> | <code>code</code> | semantic |
---|---|---|---|---|
<b>bold text</b> | <i>italic text</i> | <tt>monospace text</tt> | presentational | |
AsciiDoc | *bold text* | 'italic text' | +monospace text+ | Can double operators to apply formatting where there is no word boundary (for example **b**old t**ex**t yields bold text). |
_italic text_ | `monospace text` | |||
BBCode | [b]bold text[/b] | [i]italic text[/i] | [code]monospace text[/code] | Formatting works across line breaks. |
Creole | **bold text** | //italic text// | {{{monospace text}}} | Triple curly braces are for nowiki which is optionally monospace. |
Djot | *bold text* | _italic text_ | `monospace text` | |
Gemtext | — | — | ```alt text | Text immediately following the first three backticks is alt-text. |
Jira Formatting Notation | *bold text* | _italic text_ | {{monospace text}} | |
Markdown [45] | **bold text** | *italic text* | `monospace text` | semantic HTML tags |
__bold text__ | _italic text_ | |||
MediaWiki | '''bold text''' | ''italic text'' | <code>monospace text</code> | mostly resorts to inline HTML |
Org-mode | *bold text* | /italic text/ | =code= | |
~verbatim~ | ||||
PmWiki | '''bold text''' | ''italic text'' | @@monospace text@@ | |
reST | **bold text** | *italic text* | ``monospace text`` | |
Setext | **bold text** | ~italic text~ | `monospace text` | |
Textile [46] | *strong* | _emphasis_ | @monospace text@ | semantic HTML tags |
**bold text** | __italic text__ | presentational HTML tags | ||
Texy! | **bold text** | *italic text* | `monospace text` | semantic HTML tags by default, optional support for presentational tags |
//italic text// | ||||
TiddlyWiki | ''bold text'' | //italic text// | `monospace text` | |
``monospace text`` | ||||
txt2tags | **bold text** | //italic text// | ``monospace text`` | |
POD | B<bold text> | I<italic text> | C<monospace text> | Indented text is also shown as monospaced code. |
Slack | *bold text* | _italic text_ | `monospace text` | ```block of monospaced text``` |
*bold text* | _italic text_ | ```monospace text``` |
Gemtext does not have any inline formatting, monospaced text (called preformatted text in the context of Gemtext) must have the opening and closing ```
on their own lines.
In HTML, text is emphasized with the <em>
and <strong>
element types, whereas <i>
and <b>
traditionally mark up text to be italicized or bold-faced, respectively.
Microsoft Word and Outlook, and accordingly other word processors and mail clients that strive for a similar user experience, support the basic convention of using asterisks for boldface and underscores for italic style. While Word removes the characters, Outlook retains them.
Code | AsciiDoc | ATX | Creole | Jira | Markdown | MediaWiki | Org-mode | PmWiki | reST | Setext | Slack | Textile | Texy! | TiddlyWiki | txt2tags | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
*italic* | No | No | No | No | Yes | No | No | No | Yes | No | No | No | Yes | No | No | No |
**italic** | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
_italic_ | Yes | Yes | No | Yes | Yes | No | No | No | No | No | Yes | Yes | No | No | No | Yes |
__italic__ | Yes | No | No | No | No | No | No | No | No | No | No | Yes | No | No | No | No |
'italic' | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
''italic'' | Yes | No | No | No | No | Yes | No | Yes | No | No | No | No | No | No | No | No |
/italic/ | No | No | No | No | No | No | Yes | No | No | No | No | No | No | No | No | No |
//italic// | No | No | Yes | No | No | No | No | No | No | No | No | No | Yes | Yes | Yes | No |
~italic~ | No | No | No | No | No | No | No | No | No | Yes | No | No | No | No | No | No |
Code | AsciiDoc | ATX | Creole | Jira | Markdown | MediaWiki | Org-mode | PmWiki | reST | Setext | Slack | Textile | Texy! | TiddlyWiki | txt2tags | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
*bold* | Yes | Yes | No | Yes | No | No | Yes | No | No | No | Yes | Yes | No | No | No | Yes |
**bold** | Yes | No | Yes | No | Yes | No | No | No | Yes | Yes | No | Yes | Yes | No | Yes | No |
__bold__ | No | No | No | No | Yes | No | No | No | No | No | No | No | No | No | No | No |
''bold'' | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | No | No |
'''bold''' | No | No | No | No | No | Yes | No | Yes | No | No | No | No | No | No | No | No |
In HTML, removed or deleted and inserted text is marked up with the <del>
and <ins>
element types, respectively. However, legacy element types <s>
or <strike>
and <u>
are still also available for stricken and underlined spans of text.
Code | Jira | Markdown | Org-mode | Setext | TiddlyWiki | txt2tags |
---|---|---|---|---|---|---|
_underline_ | No | Optional | Yes | Yes | No | No |
__underline__ | No | Optional | No | No | Yes | Yes |
+underline+ | Yes | No | No | No | No | No |
AsciiDoc, ATX, Creole, MediaWiki, PmWiki, reST, Slack, Textile, Texy! and WhatsApp do not support dedicated markup for underlining text. Textile does, however, support insertion via the +inserted+
syntax.
Code | Jira | Markdown | Org-mode | Slack | Textile | TiddlyWiki | txt2tags | |
---|---|---|---|---|---|---|---|---|
~stricken~ | No | No | No | Yes | No | No | No | Yes |
~~stricken~~ | No | GFM | No | No | No | Yes | No | No |
+stricken+ | No | No | Yes | No | No | No | No | No |
-stricken- | Yes | No | No | No | Yes | No | No | No |
--stricken-- | No | No | No | No | No | No | Yes | No |
AsciiDoc, ATX, Creole, MediaWiki, PmWiki, reST, Setext and Texy! do not support dedicated markup for striking through text.
Quoted computer code is traditionally presented in typewriter-like fonts where each character occupies the same fixed width. HTML offers the semantic <code>
and the deprecated, presentational <tt>
element types for this task.
Code | AsciiDoc | ATX | Creole | Gemtext | Jira | Markdown | Org-mode | PmWiki | reST | Slack | Textile | Texy! | TiddlyWiki | txt2tags | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@code@ | No | No | No | No | No | No | No | No | No | No | Yes | No | No | No | No |
@@code@@ | No | No | No | No | No | No | No | Yes | No | No | No | No | No | No | No |
`code` | Yes | No | No | No | No | Yes | No | No | No | Yes | No | Yes | Yes | No | No |
``code`` | Yes | No | No | No | No | Yes | No | No | Yes | No | No | No | Yes | Yes | No |
```code``` | No | No | No | Yes | No | Yes | No | No | No | Yes/No | No | No | Yes | No | Yes |
=code= | No | No | No | No | No | No | Yes | No | No | No | No | No | No | No | No |
~code~ | No | No | No | No | No | No | Yes | No | No | No | No | No | No | No | No |
+code+ | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
++code++ | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
{{code}} | No | No | No | No | Yes | No | No | No | No | No | No | No | No | No | No |
{{{code}}} | No | No | Yes | No | No | No | No | No | No | No | No | No | No | No | No |
|code| | No | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No |
;;code;; |
Mediawiki and Gemtext do not provide lightweight markup for inline code spans.
Headings are usually available in up to six levels, but the top one is often reserved to contain the same as the document title, which may be set externally. Some documentation may associate levels with divisional types, e.g. part, chapter, section, article or paragraph.
Most LMLs follow one of two styles for headings, either Setext-like underlines or atx-like [47] line markers, or they support both.
Level 1 Heading =============== Level 2 Heading --------------- Level 3 Heading ~~~~~~~~~~~~~~~
The first style uses underlines, i.e. repeated characters (e.g. equals =
, hyphen -
or tilde ~
, usually at least two or four times) in the line below the heading text.
Chars: | = | - | ~ | * | # | + | ^ | _ | : | " | ' | ` | . | min length |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Markdown | 1 | 2 | No | No | No | No | No | No | No | No | No | No | No | 1 |
Setext | 1 | 2 | No | No | No | No | No | No | No | No | No | No | No | ? |
AsciiDoc | 1 | 2 | 3 | No | No | No | No | No | No | No | No | No | No | 2 |
Texy! | 3 | 4 | No | 2 | 1 | No | No | No | No | No | No | No | No | 3 |
reStructuredText | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | heading width |
RST determines heading levels dynamically, which makes authoring more individual on the one hand, but complicates merges from external sources on the other hand.
# Level 1 Heading ## Level 2 Heading ## ### Level 3 Heading ###
The second style is based on repeated markers (e.g. hash #
, equals =
or asterisk *
) at the start of the heading itself, where the number of repetitions indicates the (sometimes inverse) heading level. Most languages also support the reduplication of the markers at the end of the line, but whereas some make them mandatory, others do not even expect their numbers to match.
Character: | = | # | * | ! | + | Suffix | Levels | Indentation |
---|---|---|---|---|---|---|---|---|
AsciiDoc | Yes | No | No | No | No | Optional | 1–6 | No |
Creole | Yes | No | No | No | No | Optional | 1–6 | No |
Gemtext | No | Yes | No | No | No | ? | 1–3 | No |
MediaWiki | Yes | No | No | No | No | Yes | 1–6 | No |
TiddlyWiki | No | No | No | Yes | No | No | 1–6 | No |
txt2tags | Yes | No | No | No | Yes | Yes | 1–6 | No |
Markdown | No | Yes | No | No | No | Optional | 1–6 | No |
Texy! | Yes | Yes | No | No | No | Optional | 6–1, dynamic | No |
Org-mode | No | No | Yes | No | No | No | 1– +∞ | alternative [48] [49] [50] |
PmWiki | No | No | No | Yes | No | Optional | 1–6 | No |
Org-mode supports indentation as a means of indicating the level.
BBCode does not support section headings at all.
POD and Textile choose the HTML convention of numbered heading levels instead.
Language | Format |
---|---|
POD | =head1 Level 1 Heading =head2 Level 2 Heading |
Textile, [46] Jira [5] | h1. Level 1 Heading h2. Level 2 Heading h3. Level 3 Heading h4. Level 4 Heading h5. Level 5 Heading h6. Level 6 Heading |
Microsoft Word supports auto-formatting paragraphs as headings if they do not contain more than a handful of words, no period at the end and the user hits the enter key twice. For lower levels, the user may press the tabulator key the according number of times before entering the text, i.e. one through eight tabs for heading levels two through nine.
Hyperlinks can either be added inline, which may clutter the code because of long URLs, or with named alias
or numbered id
references to lines containing nothing but the address and related attributes and often may be located anywhere in the document. Most languages allow the author to specify text Text
to be displayed instead of the plain address http://example.com
and some also provide methods to set a different link title Title
which may contain more information about the destination.
LMLs that are tailored for special setups, e.g. wikis or code documentation, may automatically generate named anchors (for headings, functions etc.) inside the document, link to related pages (possibly in a different namespace) or provide a textual search for linked keywords.
Most languages employ (double) square or angular brackets to surround links, but hardly any two languages are completely compatible. Many can automatically recognize and parse absolute URLs inside the text without further markup.
Languages | Basic syntax | Text syntax | Title syntax |
---|---|---|---|
BBCode, Creole, MediaWiki, PmWiki | http://example.com | ||
Textile | "Text":http://example.com | "Text (Title)":http://example.com | |
Texy! | "Text .(Title)":http://example.com | ||
AsciiDoc | http://example.com[Text] | ||
Slack | <http://example.com|Text> | ||
TiddlyWiki | [[Text|http://example.com]] | ||
Jira | [http://example.com] | [Text|http://example.com] | |
txt2tags | [Text http://example.com] | ||
MediaWiki | [http://example.com Text] | ||
Creole, MediaWiki, PmWiki | [[Name]] | [[Name|Text]] | |
Org-mode | [[Name][Text]] | ||
TiddlyWiki | [[Text|Name]] | ||
Creole | [[Namespace:Name]] | [[Namespace:Name|Text]] | |
Org-mode | [[Namespace:Name][Text]] | ||
Creole, PmWiki | [[http://example.com]] | [[http://example.com|Text]] | |
BBCode | [url]http://example.com[/url] | [url=http://example.com]Text[/url] | |
Markdown | <http://example.com> | [Text](http://example.com) | [Text](http://example.com "Title") |
reStructuredText | `Text <http://example.com/>`_ | ||
setext | ^.. _Link_name URL | ||
POD | L<http://example.com/> | L</Name> | |
Gemtext | => gemini://example.com | => gemini://example.com Text | |
Gemtext and setext links must be on a line by themselves, they cannot be used inline.
Languages | Text syntax | Title syntax |
---|---|---|
AsciiDoc | … [[id]] … <<id>> | … [[id]] … <<id,Text>> |
… anchor:id … xref:id | … anchor:id … xref:id[Text] | |
Markdown | … [Text][id] … [id]: http://example.com | … [Text][id] … [id]: http://example.com "Title" |
… [Text][] … [Text]: http://example.com | … [Text][] … [Text]: http://example.com "Title" | |
… [Text] … [Text]: http://example.com | … [Text] … [Text]: http://example.com "Title" | |
reStructuredText | … Name_ … .._Name: http://example.com | |
setext | … Link_name_ … ^.. _Link_name URL | |
Textile | … "Text":alias … [alias]http://example.com | … "Text":alias … [alias (Title)]http://example.com |
Texy! | … "Text":alias … [alias]: http://example.com | … "Text":alias … [alias]: http://example.com .(Title) |
Org-mode's normal link syntax does a text search of the file. You can also put in dedicated targets with <<id>>
.
HTML requires an explicit element for the list, specifying its type, and one for each list item, but most lightweight markup languages need only different line prefixes for the bullet points or enumerated items. Some languages rely on indentation for nested lists, others use repeated parent list markers.
Characters: | * | - | + | # | . | · | • | _ | : | – | — | indent | skip | nest |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Markdown | Yes | Yes | Yes | No | No | No | No | No | No | No | No | 0–3 | 1–3 | indent |
MediaWiki, TiddlyWiki | Yes | No | No | No | No | No | No | No | No | No | No | 0 | 1+ | repeat |
Org-mode | Yes [51] | Yes | Yes | No | No | No | No | No | No | No | No | 0+ | indent | |
Jira | Yes | Yes | No | No | No | No | No | No | No | No | No | 0 | 1+ | repeat |
Gemtext | Yes | No | No | No | No | No | No | No | No | No | No | 0 | 1+ | No |
Textile | Yes | No | No | No | No | No | No | No | No | No | No | 0 | 1+ | repeat |
Microsoft Word automatically converts paragraphs that start with an asterisk *
, hyphen-minus -
or greater-than bracket >
followed by a space or horizontal tabulator as bullet list items. It will also start an enumerated list for the digit 1 and the case-insensitive letters a (for alphabetic lists) or i (for roman numerals), if they are followed by a period .
, a closing round parenthesis )
, a greater-than sign >
or a hyphen-minus -
and a space or tab; in case of the round parenthesis an optional opening one (
before the list marker is also supported.
Languages differ on whether they support optional or mandatory digits in numbered list items, which kinds of enumerators they understand (e.g. decimal digit 1, roman numerals i or I, alphabetic letters a or A) and whether they support to keep explicit values in the output format. Some Markdown dialects, for instance, will respect a start value other than 1, but ignore any other explicit value.
Chars: | + | # | #1 | 1. | 1) | 1] | 1} | (1) | [1] | {1} | a. | A. | i. | I. | indent | skip | nest |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Markdown | No | No | No | Yes | Yes | No | No | No | No | No | No | No | No | No | 0–3 | 1–3 | indent |
MediaWiki, TiddlyWiki | No | Yes | No | No | No | No | No | No | No | No | No | No | No | No | 0 | 1+ | repeat |
Org-mode | No | No | No | Yes | Yes | No | No | No | No | No | Optional | No | No | 0+ | indent | ||
Jira, Textile | No | Yes | No | No | No | No | No | No | No | No | No | No | No | No | 0 | 1+ | repeat |
Slack assists the user in entering enumerated and bullet lists, but does not actually format them as such, i.e. it just includes a leading digit followed by a period and a space or a bullet character •
in front of a line.
Languages | Term being defined | Definition of the term |
---|---|---|
MediaWiki | ; Term | : Definition |
Textile | ||
TiddlyWiki | ||
Org-mode | - Term :: Definition | |
The following lightweight markup languages, while similar to some of those already mentioned, have not yet been added to the comparison tables in this article:
Hypertext Markup Language (HTML) is the standard markup language for documents designed to be displayed in a web browser. It defines the content and structure of web content. It is often assisted by technologies such as Cascading Style Sheets (CSS) and scripting languages such as JavaScript.
A markuplanguage is a text-encoding system which specifies the structure and formatting of a document and potentially the relationship between its parts. Markup can control the display of a document or enrich its content to facilitate automated processing.
The Standard Generalized Markup Language is a standard for defining generalized markup languages for documents. ISO 8879 Annex A.1 states that generalized markup is "based on two postulates":
BBCode is a lightweight markup language used to format messages in many Internet forum software. It was first introduced in 1998. The available "tags" of BBCode are usually indicated by square brackets surrounding a keyword, and are parsed before being translated into HTML.
DokuWiki is an open source wiki application licensed under GPLv2 and written in the PHP programming language. It works on plain text files and thus does not need a database. Its syntax is similar to the one used by MediaWiki. It is often recommended as a more lightweight, easier to customize alternative to MediaWiki. The 'Doku' in DokuWiki is short for Dokumentation which in German means documentation.
Plain Old Documentation (pod) is a lightweight markup language used to document the Perl programming language as well as Perl modules and programs.
Textile is a lightweight markup language that uses a text formatting syntax to convert plain text into structured HTML markup. Textile is used for writing articles, forum posts, readme documentation, and any other type of written content published online.
Markdown is a lightweight markup language for creating formatted text using a plain-text editor. John Gruber created Markdown in 2004, in collaboration with Aaron Swartz, as a markup language that is intended to be easy to read in its source code form. Markdown is widely used for blogging and instant messaging, and also used elsewhere in online forums, collaborative software, documentation pages, and readme files.
AsciiDoc is a human-readable document format, semantically equivalent to DocBook XML, but using plain-text mark-up conventions. AsciiDoc documents can be created using any text editor and read “as-is”, or rendered to HTML or any other format supported by a DocBook tool-chain, i.e. PDF, TeX, Unix manpages, e-books, slide presentations, etc. Common file extensions for AsciiDoc files are txt
and adoc
.
Texy is a lightweight markup language as well as converter of this format to XHTML, in a form of a library written in the PHP scripting language. It allows the user to write structured documents without knowledge or using of HTML language. Users write documents in human-readable text format and Texy converts it to structurally valid and well-formed XHTML code.
txt2tags is a document generator software that uses a lightweight markup language. txt2tags is free software under GNU General Public License.
Extensible HyperText Markup Language (XHTML) is part of the family of XML markup languages which mirrors or extends versions of the widely used HyperText Markup Language (HTML), the language in which Web pages are formulated.
Doxia is a content generation framework that provides its users with powerful techniques for generating static and dynamic content. Doxia can be used in web-based publishing context to generate static sites, in addition to being incorporated into dynamic content generation systems like blogs, wikis and content management systems. Doxia is now a subproject of Apache Maven which uses it to convert APT markup documentation into HTML or other formats.
Org Mode is a mode for document editing, formatting, and organizing within the free software text editor GNU Emacs and its derivatives, designed for notes, planning, and authoring. The name is used to encompass plain text files that include simple marks to indicate levels of a hierarchy, and an editor with functions that can read the markup and manipulate hierarchy elements.
Setext is a lightweight markup language used to format plain text documents such as e-newsletters, Usenet postings, and e-mails. In contrast to some other markup languages, the markup is easily readable without any parsing or special software.
MultiMarkdown is a lightweight markup language created by Fletcher T. Penney as an extension of the Markdown format. It supports additional features not available in plain Markdown syntax.
Pandoc is a free-software document converter, widely used as a writing tool and as a basis for publishing workflows. It was created by John MacFarlane, a philosophy professor at the University of California, Berkeley.
Gemini is an application-layer internet communication protocol for accessing remote documents, similar to HTTP and Gopher. It comes with a special document format, commonly referred to as "gemtext", which allows linking to other documents. Started by a pseudonymous person known as Solderpunk, the protocol is being finalized collaboratively and as of October 2022, has not been submitted to the IETF organization for standardization.
Djot is a lightweight markup language that aims to improve on CommonMark's syntax where it is complex and difficult to parse efficiently. It was created in 2022 by John MacFarlane, the author of Pandoc and a member of the CommonMark standardization group.