An implementation of the Markdown text-to-html markup system in pure Lua.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Build Status Coverage Status

This is an implementation of the popular text markup language Markdown in pure Lua. Markdown can convert documents written in a simple and easy to read text format to well-formatted HTML. For a more thorough description of Markdown and the Markdown syntax, see

The original Markdown source is written in Perl and makes heavy use of advanced regular expression techniques (such as negative look-ahead, etc) which are not available in Lua's simple regex engine. Therefore this Lua port has been rewritten from the ground up. It is probably not completely bug free. If you notice any bugs, please report them using GitHub issues. A unit test that exposes the error is helpful.

markdown.lua has been written by Niklas Frykholm (original). This version has been updated to run under Lua 5.2 and Lua 5.3 in addition to Lua 5.1.


local markdown = require "markdown"

markdown module returns a single function which applies the Markdown transformation to the specified string. For compatibility it is also set as a global.

markdown.lua can also be used directly from the command line:

lua markdown.lua

Creates a file test.html with the converted content of Run:

lua markdown.lua -h

For a description of the command-line options.


Simply copy markdown.lua into your directory for Lua libraries. Alternatively, use LuaRocks and run [sudo] luarocks install markdown.


markdown.lua uses the same license as Lua, the MIT license.

An alternative Markdown implementation is lua-discount. It is faster than markdown.lua, at the cost of being written in C.