plain text markup. write docs and pages with one syntax.
no tag soup. no markdown traps. formatting is opt-in.
marktxt is a plain-text markup language.
semicolon trigger, dot closer. plain text stays plain.
.mt replaces both .md and .html.txt files are fully supported — write marktxt syntax in any .txt file and the engine parses it. index.txt works just like index.mt (.mt takes priority when both exist)marktxt gives you two styles in one format. use whichever fits.
just write. single enter = line break. double enter = new paragraph.
no operators needed for basic text — it just works.
the old keeper climbed the stairs.
one hundred and twelve steps.
each one worn smooth by decades of boots.
at the top, the lamp waited.
a brass beast with a glass heart.
the text above renders with natural line breaks and paragraphs.
no ;! or ;~ needed — plain text behaves like you'd expect.
see it in action: the lighthouse keeper — a short story written in plain text mode.
when you need structure — headings, lists, bold, links — use ; operators.
every operator follows the same pattern: ;{op} content ;.
;==== HEADING ;. headings (6 levels)
;^ bold ;. bold text
;% italic ;. italic text
;` code ;. inline code
;- bullet item ;. lists
;] link text ;. ;} url ;. links
;< quote ;. blockquotes
both styles mix freely. write plain text, drop in an operator when you need formatting.
![]()
images use the ;{ alt url ;. pattern. simple.
bold text and italic text and inline code — all inline.
;==== PAGE TITLE ;.
;===- section heading ;.
;- bullet one ;.
;- bullet two ;.
;^ bold ;. and ;% italic ;. and ;` code ;. inline.
;] click here ;. ;} https://example.com ;.
_underscores_ trigger italic — breaks variable_names**stars** trigger bold — breaks shell globs# triggers headings — breaks comments> triggers blockquote — breaks shell redirectsthe default is reversed: plain is safe, formatting is opt-in.
every marktxt operator follows one pattern:
;{operator} content ;.
; opens. the operator determines what it is.
;. closes inline content. ;| closes blocks. ;" closes attributes.
;t. closes table cells. ;q. closes raw passthrough.
the engine resolves files in priority order: .mt first, then .txt.
both are parsed identically. if about.mt exists, about.txt is ignored.
;==== H1 (heaviest) through ;=-.. H6 (lightest).
all heading operators are exactly 4 chars. fixed width. deterministic.
;^ bold ;. -> bold
;% italic ;. -> italic
;` code ;. -> code
;\st strike ;. -> strikethrough
renders as: bold and italic and code and strike
single enter = line break (<br>)
double enter = new paragraph (<p>)
no operators needed. just type naturally.
the parser wraps consecutive lines in a paragraph with line breaks between them.
plain url: https://example.com
linked text: marktxt on github
mt.php and .htaccess.mt or .txt filesno npm. no build step. no framework. just php + apache.
github · © 2026 digiopsys. powered by marktxt.