Markers is a lightweight markup language that you can use to add formatting elements to plaintext text documents. It also features its own Parser with support for interpretation to various other markup languages and academic formats. It was created by Miguel Aguiar in 2024 and finally came to fruition in 2025.
Markers can be used to write:
Technical documentations
Academic papers
Blog posts
Forum posts
Other types of content that require rich formatting
Any other structured text documents
The language is designed to be easy to read and write, and its syntax is simple and straightforward. It has support for customization of documents, parsing to other markup languages and formats - also featuring a easy tag system to add formatting elements to plaintext text documents. Markers is particularly well-suited for writing technical documentation, academic papers, and other types of structured text.
The aim is to create an easy markup language that is both powerful and flexible, while also being easy to learn and use. Markers is still in active development, and new features and improvements are being added regularly. The language is free to use and is released under the MIT License, so you can use it for any purpose, commercial or non-commercial.
Example of Use
Here is an simple example of a Markers file:
(title)The Markers Language(/title)
The (b)Markers Markup Language(/b) is very simple to read and understand!
It is a great way to create (u)academic papers and documentation(/u).
Installing and Using Markers
You can download the latest version of the Markers Language Parser in the official repository. The parser is currently available for Windows and Linux. No super technical knowledge is needed.
It is recommended you also install the Markers Language Extension for VSCode, so you can have syntax highlighting and autocompletion. The extension is available in the VSCode Marketplace.
Using the Parser
To install the parser, simply download the latest version from the Github repository and run the executable.
Note that for now the parser does not have an installer. You will need to run it from the command line and if needed, add it to your PATH Variable.
After running the parser, you can use it to convert your Markers files to HTML. It's usage is as follows:
mks [-html | -legacy | -abnt | -help | -h]
The parser will then convert your file to the desired format. Those being:
-html: Converts the file to HTML.
-legacy: Converts the file to a styled legacy version of the HTML.
-abnt: Converts the file to the Brazillian ABNT Format.
For new users, we recommend using the Markers Editor called Miragem. It is a simple and easy to use editor that allows you to write Markers documents with syntax highlighting and autocompletion. Miragem always uses the cutting-edge version of the Markers Parser via our API, so you can always be sure you are using the latest version of the language.
Miragem is highly advisable for those who want to use Markers for ABNT formatting!
I. Main Structure
Markers follows a simple and intuitive structure, to declare a markers file, first you need to define a (title)Title Tag(/title) followed by any content.
(title)Title of the Document(/title)
This is the (b)content(/b) of the document.
The (title) tag is used to define the title of the document. It is a required tag and must be the first tag in the document. An Markers file must also end with the .mks extension while editing. This is important for the parser to recognize the file.
II. Text Tags
Markers has the following text tags:
(c) and (/c): Strikethrough Text. For example, This is a strikethrough text
(u) and (/u): Underlined Text. For example, This is an underlined text
(b) and (/b): Bold Text. For example, This is a bold text
(i) and (/i): Italic Text. For example, This is an italic text
(k): Inline Code. For example, This is an inline code
All these tags can be used in sequence. As of the version 2 of Markers and various feedback, these tags can now be nested together. This enables for even more customization from the user and less restriction, something we are aiming torwards now.
There is also the color tag, which colors a given text with an hexadecimal color or a HTML type color.
(color | hex) and (/color): Text with color. For example, (color | pink)this is a colored text(/color).
Note that here - for the sake of simplicity - we say that the text tags of Markers follow the cubik rule. That is - cubik as a mnemonic.
III. Main Tags
Markers also has some main tags, which are useful for various purposes. Some of these tags are inspired by the ABNT standard, while others were created for better simplicity and universality of the language.
III.I. Common Tags
Common tags are tags that are not recursive by nature. Some examples are the tags (/link), (/img), (/ref), and (/code). Let's see what each of these tags does:
Comments
A user can add comments to the document using the (-- --) tag. The comment is not rendered in the final document, but it is useful for the writer to add notes and reminders.
(-- This is a comment --)
Associating a link to the text.
The tag (link) is a tag that allows the redirection of a URL . Its usage is as follows:
(link | https://en.wikipedia.org/wiki/URL)Internet URL(/link) -> Internet URL.
Inserting an image.
We can add an image to the document with the (img) tag. Its usage is given by the start of the tag, followed by the URL, and a description of the image:
(img | cat.jpg)lolcat.(/img) will return the following image:
Image of a Cat.
?
Creating a code block.
We can create a code block - different from inline code - using the (code) tag:
(title)Markers Test File(/title)
This is a (b)test(/b) Markers file that aims to test all the language's tags.
Shall we begin? Look at the following texts. They have tags:
(c)crossed(/c)
(u)underline(/u)
(b)bold(/b)
(i)italic(/i)
(k)inline code(/k)
Creating a table.
We can create a table using the (table) tag. Its usage is as follows:
We can create various types of lists using different tags. These have different structures each. Markers has support for bullet lists, numbered lists and alphabetic lists.
Creating a Bullet List
We can create a bullet list using the (bl) tag. Its usage is as follows:
(bl)
- Item 1
- Item 2
- Item 3
(/bl)
This will result in the following bullet list:
Item 1
Item 2
Item 3
Creating a Numbered List
We can create a numbered list using the (nl) tag. Its usage is as follows:
(nl)
1. Item 1
2. Item 2
3. Item 3
(/nl)
This will result in the following numbered list:
Item 1
Item 2
Item 3
Creating an Alphabetic List
We can create an alphabetic list using the (ll) tag. Its usage is as follows:
(ll)
- Item 1
- Item 2
- Item 3
(/ll)
This will result in the following alphabetic list:
Item 1
Item 2
Item 3
Adding an separator
We can add a separator to the document with the (hr) tag. In some academic formats, this tag is also used as a page-break. Its usage is as follows:
(hr) will result in:
Creating a Reference
We can create a reference to a text using the (ref) tag. It is recommended the use of the (ref) tag to create references to academic papers, books, and other sources. The tag allows you to add a reference to a text, which can be used to cite the source of the information.
Its usage is as follows: (ref | url | name-of-the-author | year | date-of-access)This is a reference(/ref)
An important note is that these tags do not support nesting, as they are not recursive by nature. In other words, you are forbidden from adding a list inside the description of a link, for example.
This is intentional, aiming to keep the focus on writing and the language. There should be no need to nest these tags.
III.II. Recursive Tags
Markers also has recursive tags, which are tags that can be nested within themselves. Some examples are the tags (/chap) and (/>>) (for arrow lists). Let's see what each of these tags do:
Creating a chapter.
The (chap) tag is used to create a chapter in the document. Its usage is as follows:
(chap | Title of the Chapter)
Content of the Chapter
(/chap)
Due to its recursive nature, you can nest chapters within chapters, creating a hierarchy of chapters. This is useful for organizing the document and making it easier to read.
(chap | Title of the Chapter)
Content of the Chapter
(chap | Another Chapter)
Content of the Chapter
(/chap)
(/chap)
Creating an arrow list.
The (>>) tag is used to create an arrow list in the document. Its usage is as follows:
(>> | Title of the Arrow List)
Content of the Arrow List
(/>>)
Due to its recursive nature, you can nest arrow lists within arrow lists, creating a hierarchy of arrow lists. This is useful for organizing the document and making it easier to read.
(>> | Title of the Arrow List)
Content of the Arrow List
(>> | Another Arrow List)
Content of the Arrow List
(/>>)
(/>>)
IV. Special and Formatting Tags
Markers also has special tags that are used for formatting the structure of a document. These are specially useful for academic papers and technical documents. We shall explain every single one of them here.
IV.I. Special Tags
These special tags allow for the insertion of direct HTML elements and are not used in some academic formats, although completely supported on the default export format. These tags are (video), (audio) and (align-)
The (video) tag can be used to add a video file to the document. Its usage is as follows:
(video | test.mp4) Test Video. (/video)
The (audio) tag is used to add an audio file to the document. Its usage is as follows:
(audio | song.mp3) Test Song. (/audio)
The (align-center) and (align-right) tags aligns text to the center or the right of the document respectively.
IV.II. Meta Tags
The (meta) tag is used to add metadata to the document. This tag is used to add information about the document, such as the author, date, and other relevant information. It has parameter tags used to configure said metadata.
The following is an example of a (meta) tag:
(meta)
(institution)NAME OF THE INSTITUTION (/institution)
(author)NAME OF THE AUTHOR (/author)
(subtitle)SUBTITLE OF THE PAPER (/subtitle)
(location)CITY, STATE (/location)
(year)2025 (/year)
(description)DESCRIPTION OF THE DOCUMENT(/description)
(mentor)TEACHER OR PROFESSOR (/mentor)
(/meta)
The sub-tags of the (meta) tag are self-explanatory. Although they do not appear in the final document while using export methods such as HTML, Markdown or Raw in the Parser, they are used to generate the document in ABNT format or other academic formats.
It is recommended that these tags be used in the order presented above, as they are the standard for the ABNT format. Using them in a different order may result in the parser placing the information incorrectly.
IV.III. Preferences
The (preferences) tag is used to configure certain aspects of the document. This tag is used to add information about the document, such as the font size, font family, and other relevant information. It has parameter tags used to configure said preferences.
Language
The (language) tag is used to configure the language of the document.
You can use the (page) tag inside the (preferences) tag to configure the page of the document. This tag is used to add information about the page, such as the size, margins, and other relevant information. It has parameter tags used to configure said preferences.
The (size) tag is used to configure the size of the page. It has the following options:
A4
A3
Letter
Legal
This is currently a work in progress, as we are testing customization. For the default parsing method -html, the file automatically infers the style of A4 which adds a container for better reading.
For full customization and implementation on websites, it is recommended to change the (size) to any other value other than A4.
Background and Text color
These tags are used to define a background and common text color for the document. This is still a work in progress. By default, these assume the values of white and black, but can be changed to any hex or written value.
The (page-number-size) tag is used to configure the size of the page number.
Margin
The (margin) tag is used to configure the margins of the page.
Configuring Content
The (content) tag is used to configure the content of the document. This tag is used to add information about the content, such as the font size, font family, and other relevant information. It has parameter tags used to configure said preferences.
The user can select between two font families: (font-arial) and (font-times). Times New Roman is the default font family, but Arial can be used for a more modern look. There is also support for (font-other)[...](/font-other) to use any other font family, although this is not recommended for academic papers.
Bold Section Titles
This is a toggle tag that allows the user to choose whether to use bold section titles or not. It is recommended to use this tag for academic papers, as it makes the document more readable and organized.
Title Size
The (title-size) tag is used to configure the size of the title of the document. It is recommended to use a size between 12 and 16, depending on the font family used.
Chapter Size
The (chap-size) tag is used to configure the size of the chapter titles of the document. It is recommended to use a size between 14 and 18, depending on the font family used.
Text Size
The (text-size) tag is used to configure the size of the text of the document. It is recommended to use a size between 10 and 12, depending on the font family used.
Line Height
The (line-height) tag is used to configure the line height of the text of the document. It is recommended to use a line height between 1.2 and 1.5, depending on the font family used.
Image Size
The (image-size) tag is used to configure the size of the images of the document. It is recommended to use a size between 80 and 100.
Configuring Summary
The (summary) tag is used to configure the summary of the document. This tag is used to add or change information about the summary.
The user can select between two title alignments: (title-align-left) and (title-align-center). The default alignment is center.
Title Size
The (title-size) tag is used to configure the size of the title of the summary. It is recommended to use a size between 14 and 16, depending on the font family used.
Summary Appearance
For ABNT papers, there are selectable tags to change the appearance of the summary. The (bold-whole-number) tag is used to make the listings and titles of chapters that are whole numbered bold. There is also (bold-number) to make the numbers bold, but not the titles, as well as (chap-bold) to make the chapter titles bold, but not the numbers.
The user can nest these tags to tailor the summary to their needs.
Donations
Markers is a free and open-source project, and it will always be. However, if you would like to support me and the project, you can donate via PIX to the following QR Code: