Library / SDK
iamgio/quarkdown avatar
iamgio/quarkdown

Quarkdown: Markdown as a Turing-complete typesetting system

Markdown with superpowers: from ideas to papers, presentations, websites, books, and knowledge bases.

16,382 stars525 forksKotlinGPL-3.0

At a glance

What is it?
Quarkdown extends CommonMark and GFM with functions, conditionals, and loops, letting one source compile to HTML, PDF, slides, or docs. It targets writers who want Markdown's simplicity but need the control of LaTeX or Typst.
Who is it for?
Adopt Quarkdown if you want one Markdown source for multiple output types, and you are comfortable with a GPL-3.0 license and a project still in active development. Do not adopt it if you need a stable, long-term tool with a mature ecosystem, since releases arrive frequently, most recently v2.7.0, and the API may change.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 3 days ago.
What is it written in?
Mainly Kotlin, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • iamgio/quarkdown16,382 ★ · +539
Star history
Repository2026-07-312026-11-14
iamgio/quarkdown15.8k16.4k

539 Stars in the last 106 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

What Quarkdown actually is

Quarkdown is a Markdown-based typesetting system written in Kotlin. It does not just render Markdown to HTML. It extends CommonMark and GFM with a function system that is Turing-complete, meaning you can define variables, write loops, and create conditional content directly in the source. The README gives an example: a function called greet takes arguments and produces formatted text. This is not a template engine bolted on after the fact. The function calls are part of the language itself. The project targets people who want the readability of Markdown but also need the structural control that usually forces them into LaTeX or Typst. It is aimed at academic papers, books, websites, presentations, and knowledge bases, all from a single source file or project.

The mechanism: functions, standard library, and document types

The core mechanism is the Quarkdown Flavor, a superset of CommonMark and GFM. You call a function with a dot prefix, like .somefunction {arg1} {arg2}. The body of the function is indented underneath. The README shows a custom function definition using .function, with named arguments like to and from. There is also a standard library, located in the repository under quarkdown-stdlib. Because the language is Turing-complete, you can generate complex content that plain Markdown cannot express. Document type is set inside the source with the .doctype function: plain, paged, slides, or docs. The paged target uses paged.js, and slides use reveal.js. This means the same Markdown can be compiled to a continuous web page, a print-ready PDF, an interactive presentation, or a documentation site.

Getting started: installation and quickstart

The README's table of contents lists Installation, Quickstart, Creating a project and Compiling under Getting started, and its header links to the latest and stable releases and to the wiki. The quickstart involves creating a project and compiling it. The README lists a VS Code extension plus unofficial IntelliJ IDEA and Vim plugins. For deployment, there is an example GitHub Actions workflow at iamgio/iamgio.github.io that builds the site. The README claims you can set up a CD workflow in under three minutes.

The permission system: secure by default, but with limits

One notable design choice is the restrictive permission system. The README says Quarkdown is secure by default, limiting access to system resources. This is important because the language is Turing-complete. Without restrictions, a malicious document could read files or make network calls. The permission system is a real feature, not an afterthought. However, it also means you must configure permissions for any document that needs file access or other system interactions. For a user who wants to write a script that reads a CSV file, this adds a configuration step. It is a trade-off: safety versus convenience. The project clearly chooses safety, which is reasonable for a tool that compiles untrusted documents.

Performance claims and live preview

The README claims low-latency live previews and states that the official wiki, which has over 100 subdocuments, compiles in about two seconds. That is a concrete performance figure from the project itself. The project uses Kotlin, which compiles to native or JVM bytecode, so fast compilation is plausible. Live preview is a feature that many Markdown tools offer; the README lists it under Reactive. For a large knowledge base, two seconds is good, but it is the project's own figure, and you should test it with your own content before relying on it.

Genuine limitations and wrong-tool cases

The first limitation is the license. Quarkdown is GPL-3.0, which means if you embed it in a proprietary tool, you may have to open-source your code. That is a dealbreaker for some commercial projects. Second, the project is under active development, with a rolling development build tagged latest alongside stable releases v2.6.4 from 2026-10-09 and v2.7.0 from 2026-10-29. The version numbers suggest the project is moving fast, but that also means APIs can change between releases. Third, the README says all HTML document types and features carry over to PDF, and the Dockerfile shows PDF export runs through a headless Chrome bundle (chromedp/headless-shell). If you need precise PDF typography, you may be better off with LaTeX or Typst. Quarkdown is the wrong tool if you need a stable, frozen specification or if you want to avoid GPL obligations.

Alternatives: LaTeX, Typst, AsciiDoc, and MDX

The README itself includes a comparison table. LaTeX gives full document control and produces high-quality PDFs, but the source is verbose and hard to read. Typst is a modern alternative with a concise syntax and scripting, but it is not Markdown. AsciiDoc is another readable markup language in the comparison. MDX lets you use JSX in Markdown, which is powerful for React-based sites, but it is tied to the JavaScript ecosystem. Quarkdown's difference is that it stays in Markdown syntax and adds a function system that is Turing-complete. Typst has its own scripting language, but you have to learn it. Quarkdown lets you use familiar Markdown and then add functions only where you need them. The trade-off is that Quarkdown is newer and less established than LaTeX or AsciiDoc.

Maintenance, upgrade cost, and ecosystem

The repository is not archived and has recent pushes, so it is actively maintained. The release cadence shows a development build and two stable releases in 2026, which indicates ongoing work. Upgrade cost is a concern because the project moves quickly: the latest stable is v2.7.0, released 2026-10-29, twenty days after v2.6.4. You should pin your version and read the CHANGELOG.md before upgrading. The standard library is open source, so you can read the code to understand what functions are available. The license is GPL-3.0, which grants you the right to modify and redistribute, but any derivative work must also be GPL. This is fine for open-source projects but a constraint for proprietary use. The ecosystem includes a VS Code extension plus unofficial IntelliJ IDEA and Vim plugins, so support may vary.

Editorial conclusion

Adopt Quarkdown if you want one Markdown source for multiple output types, and you are comfortable with a GPL-3.0 license and a project still in active development. Do not adopt it if you need a stable, long-term tool with a mature ecosystem, since releases arrive frequently, most recently v2.7.0, and the API may change. Before committing, verify that the function syntax and standard library cover your document needs, and test the PDF export with your own content, since the Dockerfile shows PDF export depends on a bundled headless Chrome.

Frequently asked questions

What is an alternative to Quarkdown?

The project's own comparison table sets Quarkdown against LaTeX, Typst and AsciiDoc, among others. Typst and LaTeX are separate typesetting languages, while Quarkdown keeps Markdown as its host syntax and reaches four document types from one source through the .doctype call.

What does Quarkdown add to CommonMark and GFM?

Functions. A call is written as a dot-prefixed name with brace-delimited arguments and an indented body argument, and you can define your own functions and variables inside the Markdown itself. The README also points to a standard library and a repository of packages and templates.

Which output formats does Quarkdown support?

Four document types are selected by the .doctype call: plain, which is the default, paged via paged.js, slides via reveal.js, and docs. PDF export carries every document type and feature HTML supports, and Markdown export emits GFM.

How does Quarkdown handle PDF export in Docker?

The runner stage is built on docker.io/chromedp/headless-shell with the version pinned by HEADLESS_SHELL_VERSION, currently 156.0.8078.12. It sets QD_CHROME_PATH to /headless-shell/headless-shell and QD_NO_SANDBOX to true, runs as an unprivileged quarkdown user, and installs ca-certificates, fontconfig and fonts-liberation.

Is Quarkdown open source and what licence does it use?

Quarkdown is released under GPL-3.0, and the build is a Gradle multi-module Kotlin project with a version.txt and a CHANGELOG.md at the top level.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Community

Where developers are discussing it

Posts on Hacker News, dev.to and Lobsters that link to this repository, found by our scan of those communities. 0 in the last 30 days; newest first.

Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/iamgio-quarkdown.svg)](https://hysenlabs.com/projects/iamgio-quarkdown)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/iamgio-quarkdown.svg)](https://hysenlabs.com/projects/iamgio-quarkdown)

Was this useful?