iamgio/quarkdownPublic

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

AI summary: A fast, extensible Markdown parser and HTML generator written entirely in modern Java.

Stars
16.2K
+13 today
Forks
511
Watchers
42
Open issues
18
Open PRs
3
Contributors
~29
Commits
3.8K
Branches
14

KotlinGPL-3.0Created Jan 30, 2024Last push 2d agoLatest release v2.6.2+35 stars this week+182 this month

Quick answers

What is quarkdown?
A fast, extensible Markdown parser and HTML generator written entirely in modern Java.
What does quarkdown do?
Quarkdown is a Java-based parser that reads standard Markdown text and robustly converts it into clean, semantic HTML. It focuses on high execution speed and a flexible, object-oriented API that allows developers to deeply customize the parsing process. Instead of rigidly outputting fixed HTML strings, it builds an abstract syntax tree (AST) of the document, enabling users to intercept, modify, or completely swap out the rendering logic for specific Markdown elements. This makes it particularly useful for Java applications that need to dynamically inject custom components or apply specific styling classes during the Markdown-to-HTML conversion phase.
Who is quarkdown for?
Quarkdown is aimed squarely at Java developers needing a lightweight, customizable Markdown parser for web or desktop applications. It assumes strong familiarity with the JVM and object-oriented design patterns.
How do I get started with quarkdown?
git clone https://github.com/iamgio/quarkdown.git
How popular is quarkdown on GitHub?
iamgio/quarkdown has 16,244 stars and 511 forks on GitHub, and gained 35 stars in the last 7 days.
What license does quarkdown use?
iamgio/quarkdown is released under the GPL-3.0 license.

Star history

since Jul 29, 2026
05K10K15KJul 2026Aug 2026Sep 2026Oct 2026
16.2K stars as of Oct 2, 2026. Measured daily since Jul 29, 2026; GitHub no longer exposes earlier star timestamps.

Contribution activity

commits per day, last 52 weeks
SepOctNovDecJanFebMarAprMayJunJulAugSepMonWedFri2025-09-28: 0 commits2025-09-29: 2 commits2025-09-30: 2 commits2025-10-01: 4 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 1 commit2025-10-09: 4 commits2025-10-10: 16 commits2025-10-11: 11 commits2025-10-12: 10 commits2025-10-13: 5 commits2025-10-14: 8 commits2025-10-15: 1 commit2025-10-16: 13 commits2025-10-17: 1 commit2025-10-18: 5 commits2025-10-19: 3 commits2025-10-20: 4 commits2025-10-21: 0 commits2025-10-22: 3 commits2025-10-23: 4 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 2 commits2025-10-27: 6 commits2025-10-28: 1 commit2025-10-29: 3 commits2025-10-30: 6 commits2025-10-31: 4 commits2025-11-01: 5 commits2025-11-02: 0 commits2025-11-03: 9 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-08: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 2 commits2025-11-20: 1 commit2025-11-21: 1 commit2025-11-22: 4 commits2025-11-23: 10 commits2025-11-24: 1 commit2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 5 commits2025-11-28: 10 commits2025-11-29: 5 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 2 commits2025-12-03: 4 commits2025-12-04: 4 commits2025-12-05: 0 commits2025-12-06: 2 commits2025-12-07: 7 commits2025-12-08: 3 commits2025-12-09: 0 commits2025-12-10: 1 commit2025-12-11: 0 commits2025-12-12: 10 commits2025-12-13: 7 commits2025-12-14: 4 commits2025-12-15: 7 commits2025-12-16: 2 commits2025-12-17: 1 commit2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 5 commits2025-12-28: 4 commits2025-12-29: 0 commits2025-12-30: 2 commits2025-12-31: 1 commit2026-01-01: 21 commits2026-01-02: 13 commits2026-01-03: 11 commits2026-01-04: 20 commits2026-01-05: 10 commits2026-01-06: 5 commits2026-01-07: 7 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 16 commits2026-01-11: 17 commits2026-01-12: 7 commits2026-01-13: 2 commits2026-01-14: 0 commits2026-01-15: 7 commits2026-01-16: 0 commits2026-01-17: 6 commits2026-01-18: 10 commits2026-01-19: 5 commits2026-01-20: 3 commits2026-01-21: 4 commits2026-01-22: 5 commits2026-01-23: 1 commit2026-01-24: 6 commits2026-01-25: 5 commits2026-01-26: 7 commits2026-01-27: 5 commits2026-01-28: 6 commits2026-01-29: 2 commits2026-01-30: 2 commits2026-01-31: 5 commits2026-02-01: 16 commits2026-02-02: 3 commits2026-02-03: 0 commits2026-02-04: 6 commits2026-02-05: 4 commits2026-02-06: 3 commits2026-02-07: 20 commits2026-02-08: 0 commits2026-02-09: 10 commits2026-02-10: 0 commits2026-02-11: 3 commits2026-02-12: 5 commits2026-02-13: 4 commits2026-02-14: 25 commits2026-02-15: 14 commits2026-02-16: 12 commits2026-02-17: 7 commits2026-02-18: 2 commits2026-02-19: 1 commit2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 9 commits2026-03-01: 6 commits2026-03-02: 2 commits2026-03-03: 0 commits2026-03-04: 6 commits2026-03-05: 2 commits2026-03-06: 8 commits2026-03-07: 5 commits2026-03-08: 8 commits2026-03-09: 0 commits2026-03-10: 11 commits2026-03-11: 4 commits2026-03-12: 7 commits2026-03-13: 3 commits2026-03-14: 6 commits2026-03-15: 3 commits2026-03-16: 1 commit2026-03-17: 7 commits2026-03-18: 0 commits2026-03-19: 3 commits2026-03-20: 2 commits2026-03-21: 2 commits2026-03-22: 3 commits2026-03-23: 0 commits2026-03-24: 5 commits2026-03-25: 2 commits2026-03-26: 1 commit2026-03-27: 9 commits2026-03-28: 0 commits2026-03-29: 12 commits2026-03-30: 6 commits2026-03-31: 3 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 5 commits2026-04-05: 0 commits2026-04-06: 2 commits2026-04-07: 0 commits2026-04-08: 0 commits2026-04-09: 3 commits2026-04-10: 7 commits2026-04-11: 9 commits2026-04-12: 8 commits2026-04-13: 1 commit2026-04-14: 2 commits2026-04-15: 0 commits2026-04-16: 4 commits2026-04-17: 5 commits2026-04-18: 4 commits2026-04-19: 3 commits2026-04-20: 2 commits2026-04-21: 0 commits2026-04-22: 1 commit2026-04-23: 1 commit2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 13 commits2026-04-27: 4 commits2026-04-28: 19 commits2026-04-29: 7 commits2026-04-30: 0 commits2026-05-01: 2 commits2026-05-02: 1 commit2026-05-03: 5 commits2026-05-04: 2 commits2026-05-05: 2 commits2026-05-06: 1 commit2026-05-07: 0 commits2026-05-08: 0 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 1 commit2026-05-18: 0 commits2026-05-19: 3 commits2026-05-20: 7 commits2026-05-21: 4 commits2026-05-22: 3 commits2026-05-23: 9 commits2026-05-24: 5 commits2026-05-25: 2 commits2026-05-26: 0 commits2026-05-27: 0 commits2026-05-28: 0 commits2026-05-29: 1 commit2026-05-30: 5 commits2026-05-31: 6 commits2026-06-01: 2 commits2026-06-02: 5 commits2026-06-03: 1 commit2026-06-04: 1 commit2026-06-05: 2 commits2026-06-06: 0 commits2026-06-07: 5 commits2026-06-08: 3 commits2026-06-09: 0 commits2026-06-10: 2 commits2026-06-11: 4 commits2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 8 commits2026-06-15: 3 commits2026-06-16: 3 commits2026-06-17: 0 commits2026-06-18: 1 commit2026-06-19: 0 commits2026-06-20: 6 commits2026-06-21: 4 commits2026-06-22: 9 commits2026-06-23: 5 commits2026-06-24: 0 commits2026-06-25: 0 commits2026-06-26: 0 commits2026-06-27: 2 commits2026-06-28: 0 commits2026-06-29: 0 commits2026-06-30: 0 commits2026-07-01: 2 commits2026-07-02: 7 commits2026-07-03: 1 commit2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 0 commits2026-07-07: 2 commits2026-07-08: 1 commit2026-07-09: 3 commits2026-07-10: 3 commits2026-07-11: 8 commits2026-07-12: 7 commits2026-07-13: 1 commit2026-07-14: 1 commit2026-07-15: 0 commits2026-07-16: 1 commit2026-07-17: 1 commit2026-07-18: 0 commits2026-07-19: 1 commit2026-07-20: 1 commit2026-07-21: 0 commits2026-07-22: 0 commits2026-07-23: 0 commits2026-07-24: 0 commits2026-07-25: 3 commits2026-07-26: 7 commits2026-07-27: 0 commits2026-07-28: 1 commit2026-07-29: 0 commits2026-07-30: 2 commits2026-07-31: 0 commits2026-08-01: 4 commits2026-08-02: 8 commits2026-08-03: 4 commits2026-08-04: 1 commit2026-08-05: 0 commits2026-08-06: 0 commits2026-08-07: 0 commits2026-08-08: 1 commit2026-08-09: 1 commit2026-08-10: 1 commit2026-08-11: 3 commits2026-08-12: 2 commits2026-08-13: 0 commits2026-08-14: 0 commits2026-08-15: 3 commits2026-08-16: 0 commits2026-08-17: 0 commits2026-08-18: 0 commits2026-08-19: 0 commits2026-08-20: 0 commits2026-08-21: 0 commits2026-08-22: 1 commit2026-08-23: 0 commits2026-08-24: 3 commits2026-08-25: 3 commits2026-08-26: 4 commits2026-08-27: 3 commits2026-08-28: 1 commit2026-08-29: 5 commits2026-08-30: 0 commits2026-08-31: 0 commits2026-09-01: 0 commits2026-09-02: 0 commits2026-09-03: 1 commit2026-09-04: 0 commits2026-09-05: 0 commits2026-09-06: 7 commits2026-09-07: 8 commits2026-09-08: 2 commits2026-09-09: 3 commits2026-09-10: 0 commits2026-09-11: 0 commits2026-09-12: 6 commits2026-09-13: 9 commits2026-09-14: 3 commits2026-09-15: 3 commits2026-09-16: 3 commits2026-09-17: 0 commits2026-09-18: 3 commits2026-09-19: 1 commit2026-09-20: 0 commits2026-09-21: 3 commits2026-09-22: 4 commits2026-09-23: 1 commit2026-09-24: 2 commits2026-09-25: 1 commit2026-09-26: 0 commits
1,103 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Widely adopted

    16,244 stars

  • Very active

    1,103 commits in 52 weeks

  • Continuous integration

    Automated checks passing

What quarkdown does

Quarkdown is a Java-based parser that reads standard Markdown text and robustly converts it into clean, semantic HTML. It focuses on high execution speed and a flexible, object-oriented API that allows developers to deeply customize the parsing process. Instead of rigidly outputting fixed HTML strings, it builds an abstract syntax tree (AST) of the document, enabling users to intercept, modify, or completely swap out the rendering logic for specific Markdown elements. This makes it particularly useful for Java applications that need to dynamically inject custom components or apply specific styling classes during the Markdown-to-HTML conversion phase.

Quarkdown is aimed squarely at Java developers needing a lightweight, customizable Markdown parser for web or desktop applications. It assumes strong familiarity with the JVM and object-oriented design patterns.

  • Abstract syntax tree generation: Parses Markdown into a structured AST, allowing for programmatic inspection and modification of the document.
  • Customizable rendering engine: Provides hooks to override the HTML output for any specific Markdown node, like tables or code blocks.
  • Pure Java implementation: Runs natively in the JVM without relying on external native binaries or complex JNI bindings.
  • Extensible parsing rules: Allows developers to define entirely new Markdown syntax rules and attach custom rendering logic.
  • High-performance execution: Optimized for rapid parsing of large documents, suitable for real-time web applications.

Where teams use it

Java Blog Engines

Content management systems built in Spring Boot dynamically render author posts written in Markdown into styled HTML pages.

Custom Documentation Sites

Developer portals parse Markdown documentation and inject custom interactive Java/HTML components specifically for code examples.

In-App Markdown Preview

Desktop Java applications (like JavaFX editors) use the parser to provide real-time visual previews of user-entered Markdown text.

Automated Report Generation

Enterprise backend services convert Markdown-formatted data summaries into HTML for automated email dispatch.

Getting started: git clone https://github.com/iamgio/quarkdown.git

README

main branch

Quarkdown banner
Wiki Docs Release Visual Studio Code Extension Version FMT: Ktlint CodeFactor

iamgio%2Fquarkdown | Trendshift iamgio%2Fquarkdown | Trendshift
Quarkdown - Markdown with superpowers: from ideas to stunning documents. | Product Hunt

Releases
Latest   |   Stable 


Table of contents

  1. About
  2. Demo
  3. Editor extensions
  4. Targets
  5. Comparison
  6. Getting started
    1. Installation
    2. Quickstart
    3. Creating a project
    4. Compiling
  7. Mock document
  8. Contributing
  9. Sponsors
  10. Concept
  11. License

 

About

Quarkdown is a modern Markdown-based typesetting system designed for versatility. It allows a single project to compile seamlessly into a print-ready book, academic paper, knowledge base, or interactive presentation. All through an incredibly powerful Turing-complete extension of Markdown, ensuring your ideas flow automatically into paper.

 

Paper demo

Original credits: Attention Is All You Need


Born as an extension of CommonMark and GFM, the Quarkdown Flavor brings functions to Markdown, along with many other syntax extensions.


This is a function call:

.somefunction {arg1} {arg2}
    Body argument

Possibilities are unlimited thanks to an ever-expanding standard library, which offers layout builders, I/O, math, conditional statements and loops.

Not enough? You can still define your own functions and variables, all within Markdown. You can even create awesome libraries for everyone to use.


.function {greet}
    to from:
    **Hello, .to** from .from!

.greet {world} from:{iamgio}

Result: Hello, world from iamgio!


This out-of-the-box scripting support opens doors to complex and dynamic content that would be otherwise impossible to achieve with vanilla Markdown.

Combined with live preview, ⚡ fast compilation speed and great editor support, Quarkdown simply gets the work done, whether it's an academic paper, book, knowledge base or interactive presentation.

 

Live preview

 

In a nutshell, Quarkdown is...

  • Familiar: built on the well-known Markdown syntax, for a flat learning curve
  • Elegant: produces output that matches the quality of industry-leading tools
  • Agent-friendly: comes with a built-in skill for idiomatic fluency of your coding agents (read the eval)
  • Customizable: full control over document layout, aesthetics, and properties
  • Secure by default: a restrictive permission system limits access to system resources
  • Versatile: a single source compiles to multiple targets
  • Reactive: low-latency live previews for rapid iteration. The official wiki (100+ subdocuments) compiles in ~2 seconds
  • Reusable: repeated content can be turned into one-line function calls
  • Easily deployable: set a CD workflow up in under 3 minutes (example)

 


Looking for something?

Check out the wiki to get started and learn more about the language and its features!


 

As simple as you expect...

Paper code demo

Inspired by: X-ray flashes from a nearby supermassive black hole accelerate mysteriously

 

...as complex as you need.

Chart code demo

Editor extensions

 

Targets

  • HTML

    • Plain
      Continuous flow like Notion/Obsidian, perfect for static websites and knowledge management - check out the author's personal website.

    • Paged via paged.js
      Perfect for papers, articles and books - check out the demo document.

    • Slides via reveal.js
      Perfect for interactive presentations.

    • Docs
      Perfect for wikis, technical documentation and large knowledge bases - check out Quarkdown's wiki.

  • PDF

    • All document types and features supported by HTML are also supported when exporting to PDF.
  • Markdown

    • GFM export.
  • Plain text

The desired document type can be set by calling the .doctype function within the source itself:

  • .doctype {plain} (default)
  • .doctype {paged}
  • .doctype {slides}
  • .doctype {docs}

 

Comparison

Quarkdown LaTeX Typst AsciiDoc MDX
Concise and readable ✅ ❌ ✅ ✅ ✅
Full document control1 ✅ ✅ ✅ ❌ ❌
Scripting ✅ Partial ✅ ❌ ✅
Book/article export ✅ ✅ ✅ ✅ Third-party
Presentation export ✅ ✅ ✅ ✅ Third-party
Static site export ✅ ❌ Experimental ✅ ✅
Docs/wiki export ✅ ❌ ❌ ✅ ✅
Learning curve 🟢 🔴 🟠 🟢 🟢
Targets HTML, PDF, MD, TXT PDF, PostScript HTML, PDF HTML, PDF, ePub HTML
LaTeX Quarkdown
\tableofcontents

\section{Section}

\subsection{Subsection}

\begin{enumerate}
    \item \textbf{First} item
    \item \textbf{Second} item
\end{itemize}

\begin{center}
    This text is \textit{centered}.
\end{center}

\begin{figure}[!h]
    \centering
    \begin{subfigure}[b]
        \includegraphics[width=0.3\linewidth]{img1.png}
    \end{subfigure}
    \begin{subfigure}[b]
        \includegraphics[width=0.3\linewidth]{img2.png}
    \end{subfigure}
    \begin{subfigure}[b]
        \includegraphics[width=0.3\linewidth]{img3.png}
    \end{subfigure}
\end{figure}
.tableofcontents

# Section

## Subsection

1. **First** item
2. **Second** item

.center
    This text is _centered_.

.row alignment:{spacebetween}
    ![Image 1](img1.png)

    ![Image 2](img2.png)
    
    ![Image 3](img3.png)

 

Getting started

Installation

Install script (Linux/macOS)

curl -fsSL https://raw.githubusercontent.com/quarkdown-labs/get-quarkdown/refs/heads/main/install.sh | sudo env "PATH=$PATH" bash

Root privileges let the script install Quarkdown into /opt/quarkdown and its wrapper script into /usr/local/bin/quarkdown.
The browser required for PDF export is installed automatically.

For more installation options, check out get-quarkdown.

Homebrew (Linux/macOS)

brew install quarkdown-labs/quarkdown/quarkdown

Install script (Windows)

irm https://raw.githubusercontent.com/quarkdown-labs/get-quarkdown/refs/heads/main/install.ps1 | iex

Scoop (Windows)

scoop bucket add quarkdown https://github.com/quarkdown-labs/scoop-quarkdown; scoop install quarkdown

GitHub Actions

See setup-quarkdown to easily integrate Quarkdown into your GitHub Actions workflows.

Manual installation

Instructions for manual installation

Download quarkdown.zip from the latest stable release and unzip it, or build it with gradlew installDist.

Optionally, adding <install_dir>/bin to your PATH allows you easier access Quarkdown.

Requirements:

  • (Only for PDF export) A Chromium-family browser, such as chrome-headless-shell. See PDF export for details.

 

Quickstart

New user? You'll find everything you need in the Quickstart guide to bring your first document to life!

 

Creating a project

quarkdown create [directory] will launch the prompt-based project wizard, making it quicker than ever to set up a new Quarkdown project, with all metadata and initial content already present.

 

Compiling

Running quarkdown c file.qd will compile the given file and save the output to file.

If the project is composed by multiple source files, the target file must be the root one, i.e. the one that includes the other files.

If you would like to familiarize yourself with Quarkdown instead, quarkdown repl lets you play with an interactive REPL mode.

Options

The most commonly used options are:

  • -p or --preview: enables automatic content reloading after compiling.

  • -w or --watch: recompiles the source every time a file from the source directory is changed.

Tip

Combine -p -w to achieve live preview!

  • --pdf: produces a PDF file. Learn more in the wiki's PDF export page.

For the full list of options, check out the CLI options wiki page.

 


 

Mock document

 

Mock document demo

Mock, written in Quarkdown, is a comprehensive collection of visual elements offered by the language, making it ideal for exploring and understanding its key features — all while playing and experimenting hands-on with a concrete outcome in the form of pages or slides.

  • The document's source files are available in the mock directory, and can be compiled via quarkdown c mock/main.qd -p.
  • The PDF artifacts generated for all possible theme combinations are available and can be viewed in the generated repo.

Contributing

Contributions are welcome! Please check CONTRIBUTING.md to know how contribute via issues or pull requests.

Sponsors

A special thanks to all the sponsors who supported this project!

Falconer

RayOffiah

vitto4 aaditkamat

LunaBluee  dcopia Pallandos imogenxingren serkonda7

Concept

The logo resembles the original Markdown icon, with focus on Quarkdown's completeness, richness of features and customization options, emphasized by the revolving arrow all around the sphere.

Quarkdown icon

What could be mistaken for a planet is actually a quark or, more specifically, a down quark, an elementary particle that is a major constituent of matter: they give life to every complex structure we know of, while also being one of the lightest objects in existence.

This is, indeed, the concept Quarkdown is built upon.

License

By default, Quarkdown and its modules are licensed under GNU GPLv3, except for modules that include their own LICENSE file: the CLI (quarkdown-cli) and Language Server (quarkdown-lsp) modules and binaries are licensed under GNU AGPLv3.

Footnotes

Footnotes

  1. The ability to customize the properties of the document and of its output artifact through the language itself. ↩

View on GitHub

Recent activity

commits and pull requests

Recent open issues

view all

Discussions

all 52

Releases and announcements

47 total
  1. Development buildlatestMay 13, 2025pre-release5 downloads

    **Full Changelog**: https://github.com/iamgio/quarkdown/commits/latest

  2. v2.6.2v2.6.2Sep 22, 2026557 downloads

    ### Fixed &nbsp; #### Lines of trailing whitespace no longer produce empty code blocks A line consisting of 4 or more spaces, immediately after content, is no longer tokenized as an indented code block. &nbsp; #### Empty code blocks no longer error out on the browser Empty code blocks used to throw a runtime error, which also caused `paged` documents to break. &nbsp; #### [Security] [Prevent path traversal (CWE-22)](<https://github.com/iamgio/quarkdown/security/advisories/GHSA-w88j-cr92-phcq>) > [!NOTE] > The vulnerability was already unexploitable due to existing Ktor (Quarkdown's server library) security measures, and purely theoretical. This patch prevents any future regressions. Prevented path traversal vulnerabilities that could allow attackers to access files outside the intended directory from the live preview endpoint (`/live/`). Thanks to the GitLab Security team for reporting! * * * ### Sponsors Thanks to our sponsors! 🎉 @vitto4 <a href="https://falconer.com"><img src="https://raw.githubusercontent.com/iamgio/quarkdown/project-files/images/sponsors/falconer.jpeg" alt="Falconer" width="350"></a>

  3. v2.6.1v2.6.1Sep 18, 2026592 downloads

    ### Changed &nbsp; #### Tables split across pages repeat their header row In `paged` documents, when a table is split across two or more pages, each page now repeats the header row. &nbsp; #### [Log level via `--log-level`](https://quarkdown.com/wiki/cli-options) The log level is now set through the new `--log-level` option (`debug`, `info`, `warn`, `error`, or `none`) or the `QD_LOG_LEVEL` environment variable, with the option taking precedence. The old `-Dloglevel` JVM property is no longer read. ```shell quarkdown --log-level debug c main.qd ``` &nbsp; #### PDF compilation hint in `quarkdown create` After creating a new project via [`quarkdown create`](https://quarkdown.com/wiki/creating-a-project), the summary now also suggests the command to compile the document to PDF. &nbsp; #### [dev] Bibliography management delegated to `kotlin-bibliographer` The _Citation Style Language_ processor, bibliography management and style catalog were extracted and offloaded to the new [`kotlin-bibliographer`](https://github.com/quarkdown-labs/kotlin-bibliographer), Quarkdown's own Kotlin Multiplatform open source library. &nbsp; ### Fixed &nbsp; #### Very long delimited content

  4. v2.6.0v2.6.0Sep 8, 20261.2K downloads

    The highlights of this release include significant performance improvements, better portability thanks to reduced binary size and less external dependencies, and enhanced `slides` artifacts. &nbsp; ### Added &nbsp; #### [New layout theme: `focus`](https://quarkdown.com/wiki/themes) The new `focus` layout theme is an adaptation of the [Focus Beamer theme](https://www.overleaf.com/latex/templates/focus-a-minimalist-beamer-theme/bytzgdfmdpjq). It’s a simple and clean theme well-suited for slides and articles. Recommended combination: ```text .theme {paperwhite} layout:{focus} ``` &nbsp; #### [Code block callouts](https://quarkdown.com/wiki/code#callouts) The new `callouts` argument of the `.code` function attaches numbered markers to specific lines of a code block, each paired with a description displayed right below the block. ```markdown .code callouts:{ - 2: Defines the horizontal coordinate. - 5: Takes the two coordinates. - 6: Assigns the horizontal coordinate. } .read {point.ts} ``` <img width="660" alt="Callout" src="https://github.com/user-attachments/assets/99521edd-4ef0-4566-b114-3027c4fb5c91" /> &nbsp; ####

  5. v2.5.1v2.5.1Aug 12, 20262.3K downloads

    ### Changed &nbsp; #### [dev] Embedding-friendly pipeline error handling The programmatic pipeline entry point `runQuarkdown` no longer terminates the host JVM on pipeline errors, in favor of propagation to the caller. &nbsp; ### Fixed &nbsp; #### Unbalanced parentheses in links An inline link `[text](url)` followed immediately by a closing parenthesis no longer swallows the trailing `)`. Plain link destinations now require parentheses to be either backslash-escaped or balanced, matching the CommonMark spec. &nbsp; #### Deeply nested lists with 4-space indentation Nested lists that use 4 spaces of indentation at every level now render correctly at three or more levels. &nbsp; #### Subdocument links missing a trailing slash Links to subdocuments in HTML output now end with a trailing slash, to minimize 404s on hosts that do not redirect to the trailing-slash form. The `<link rel="canonical">` tag, `sitemap.xml`, and the client-side search index now use the same form too. &nbsp; #### [lsp] Completion crash on out-of-bounds cursor position The language server no longer crashes when a completion request arrives with a cursor position outside the document bounds. * * *

Code frequency

additions and deletions
+60.2K-60.2KWeek of 2025-09-28: +215 linesWeek of 2025-09-28: -151 linesWeek of 2025-10-05: +4,691 linesWeek of 2025-10-05: -521 linesWeek of 2025-10-12: +3,901 linesWeek of 2025-10-12: -2,111 linesWeek of 2025-10-19: +429 linesWeek of 2025-10-19: -300 linesWeek of 2025-10-26: +1,607 linesWeek of 2025-10-26: -815 linesWeek of 2025-11-02: +374 linesWeek of 2025-11-02: -178 linesWeek of 2025-11-09: +0 linesWeek of 2025-11-09: -0 linesWeek of 2025-11-16: +153 linesWeek of 2025-11-16: -36 linesWeek of 2025-11-23: +1,045 linesWeek of 2025-11-23: -161 linesWeek of 2025-11-30: +970 linesWeek of 2025-11-30: -267 linesWeek of 2025-12-07: +1,555 linesWeek of 2025-12-07: -643 linesWeek of 2025-12-14: +501 linesWeek of 2025-12-14: -243 linesWeek of 2025-12-21: +122 linesWeek of 2025-12-21: -10 linesWeek of 2025-12-28: +2,899 linesWeek of 2025-12-28: -322 linesWeek of 2026-01-04: +3,232 linesWeek of 2026-01-04: -786 linesWeek of 2026-01-11: +4,208 linesWeek of 2026-01-11: -1,337 linesWeek of 2026-01-18: +6,619 linesWeek of 2026-01-18: -4,838 linesWeek of 2026-01-25: +9,251 linesWeek of 2026-01-25: -3,117 linesWeek of 2026-02-01: +2,901 linesWeek of 2026-02-01: -1,818 linesWeek of 2026-02-08: +4,641 linesWeek of 2026-02-08: -3,014 linesWeek of 2026-02-15: +6,767 linesWeek of 2026-02-15: -5,906 linesWeek of 2026-02-22: +223 linesWeek of 2026-02-22: -35 linesWeek of 2026-03-01: +1,395 linesWeek of 2026-03-01: -477 linesWeek of 2026-03-08: +4,376 linesWeek of 2026-03-08: -3,205 linesWeek of 2026-03-15: +2,617 linesWeek of 2026-03-15: -760 linesWeek of 2026-03-22: +1,786 linesWeek of 2026-03-22: -310 linesWeek of 2026-03-29: +3,528 linesWeek of 2026-03-29: -1,973 linesWeek of 2026-04-05: +2,392 linesWeek of 2026-04-05: -994 linesWeek of 2026-04-12: +3,216 linesWeek of 2026-04-12: -632 linesWeek of 2026-04-19: +617 linesWeek of 2026-04-19: -194 linesWeek of 2026-04-26: +745 linesWeek of 2026-04-26: -302 linesWeek of 2026-05-03: +558 linesWeek of 2026-05-03: -69 linesWeek of 2026-05-10: +0 linesWeek of 2026-05-10: -0 linesWeek of 2026-05-17: +2,767 linesWeek of 2026-05-17: -1,556 linesWeek of 2026-05-24: +2,446 linesWeek of 2026-05-24: -983 linesWeek of 2026-05-31: +1,366 linesWeek of 2026-05-31: -474 linesWeek of 2026-06-07: +1,512 linesWeek of 2026-06-07: -1,016 linesWeek of 2026-06-14: +1,857 linesWeek of 2026-06-14: -677 linesWeek of 2026-06-21: +2,197 linesWeek of 2026-06-21: -399 linesWeek of 2026-06-28: +3,373 linesWeek of 2026-06-28: -1,209 linesWeek of 2026-07-05: +2,781 linesWeek of 2026-07-05: -1,145 linesWeek of 2026-07-12: +767 linesWeek of 2026-07-12: -190 linesWeek of 2026-07-19: +462 linesWeek of 2026-07-19: -64 linesWeek of 2026-07-26: +3,251 linesWeek of 2026-07-26: -685 linesWeek of 2026-08-02: +1,098 linesWeek of 2026-08-02: -120 linesWeek of 2026-08-09: +404 linesWeek of 2026-08-09: -146 linesWeek of 2026-08-16: +1,790 linesWeek of 2026-08-16: -756 linesWeek of 2026-08-23: +6,418 linesWeek of 2026-08-23: -3,717 linesWeek of 2026-08-30: +1,076 linesWeek of 2026-08-30: -743 linesWeek of 2026-09-06: +3,135 linesWeek of 2026-09-06: -1,522 linesWeek of 2026-09-13: +2,488 linesWeek of 2026-09-13: -817 linesWeek of 2026-09-20: +60,150 linesWeek of 2026-09-20: -58,706 linesSep 28, 2025Sep 20, 2026
+176.9K lines added, -110.5K removed over the last year.

Commits per week

last 52 weeks
580Week of 2025-09-28: 8 commitsWeek of 2025-10-05: 32 commitsWeek of 2025-10-12: 43 commitsWeek of 2025-10-19: 14 commitsWeek of 2025-10-26: 27 commitsWeek of 2025-11-02: 9 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 8 commitsWeek of 2025-11-23: 31 commitsWeek of 2025-11-30: 12 commitsWeek of 2025-12-07: 28 commitsWeek of 2025-12-14: 14 commitsWeek of 2025-12-21: 5 commitsWeek of 2025-12-28: 52 commitsWeek of 2026-01-04: 58 commitsWeek of 2026-01-11: 39 commitsWeek of 2026-01-18: 34 commitsWeek of 2026-01-25: 32 commitsWeek of 2026-02-01: 52 commitsWeek of 2026-02-08: 47 commitsWeek of 2026-02-15: 36 commitsWeek of 2026-02-22: 9 commitsWeek of 2026-03-01: 29 commitsWeek of 2026-03-08: 39 commitsWeek of 2026-03-15: 18 commitsWeek of 2026-03-22: 20 commitsWeek of 2026-03-29: 26 commitsWeek of 2026-04-05: 21 commitsWeek of 2026-04-12: 24 commitsWeek of 2026-04-19: 7 commitsWeek of 2026-04-26: 46 commitsWeek of 2026-05-03: 10 commitsWeek of 2026-05-10: 0 commitsWeek of 2026-05-17: 27 commitsWeek of 2026-05-24: 13 commitsWeek of 2026-05-31: 17 commitsWeek of 2026-06-07: 14 commitsWeek of 2026-06-14: 21 commitsWeek of 2026-06-21: 20 commitsWeek of 2026-06-28: 10 commitsWeek of 2026-07-05: 17 commitsWeek of 2026-07-12: 11 commitsWeek of 2026-07-19: 5 commitsWeek of 2026-07-26: 14 commitsWeek of 2026-08-02: 14 commitsWeek of 2026-08-09: 10 commitsWeek of 2026-08-16: 1 commitsWeek of 2026-08-23: 19 commitsWeek of 2026-08-30: 1 commitsWeek of 2026-09-06: 26 commitsWeek of 2026-09-13: 22 commitsWeek of 2026-09-20: 11 commitsSep 28, 2025Sep 20, 2026
1.1K commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 37 commitsSun 1:00 — 19 commitsSun 2:00 — 5 commitsSun 3:00 — 0 commitsSun 4:00 — 1 commitsSun 5:00 — 2 commitsSun 6:00 — 0 commitsSun 7:00 — 1 commitsSun 8:00 — 3 commitsSun 9:00 — 4 commitsSun 10:00 — 5 commitsSun 11:00 — 28 commitsSun 12:00 — 42 commitsSun 13:00 — 29 commitsSun 14:00 — 19 commitsSun 15:00 — 38 commitsSun 16:00 — 38 commitsSun 17:00 — 49 commitsSun 18:00 — 51 commitsSun 19:00 — 66 commitsSun 20:00 — 39 commitsSun 21:00 — 44 commitsSun 22:00 — 60 commitsSun 23:00 — 75 commitsMon 0:00 — 42 commitsMon 1:00 — 10 commitsMon 2:00 — 7 commitsMon 3:00 — 1 commitsMon 4:00 — 1 commitsMon 5:00 — 0 commitsMon 6:00 — 1 commitsMon 7:00 — 0 commitsMon 8:00 — 0 commitsMon 9:00 — 9 commitsMon 10:00 — 13 commitsMon 11:00 — 30 commitsMon 12:00 — 24 commitsMon 13:00 — 31 commitsMon 14:00 — 18 commitsMon 15:00 — 28 commitsMon 16:00 — 38 commitsMon 17:00 — 30 commitsMon 18:00 — 36 commitsMon 19:00 — 23 commitsMon 20:00 — 37 commitsMon 21:00 — 48 commitsMon 22:00 — 47 commitsMon 23:00 — 54 commitsTue 0:00 — 26 commitsTue 1:00 — 4 commitsTue 2:00 — 11 commitsTue 3:00 — 2 commitsTue 4:00 — 0 commitsTue 5:00 — 2 commitsTue 6:00 — 2 commitsTue 7:00 — 1 commitsTue 8:00 — 2 commitsTue 9:00 — 2 commitsTue 10:00 — 3 commitsTue 11:00 — 4 commitsTue 12:00 — 9 commitsTue 13:00 — 23 commitsTue 14:00 — 8 commitsTue 15:00 — 23 commitsTue 16:00 — 29 commitsTue 17:00 — 14 commitsTue 18:00 — 23 commitsTue 19:00 — 28 commitsTue 20:00 — 32 commitsTue 21:00 — 31 commitsTue 22:00 — 51 commitsTue 23:00 — 32 commitsWed 0:00 — 24 commitsWed 1:00 — 20 commitsWed 2:00 — 4 commitsWed 3:00 — 1 commitsWed 4:00 — 1 commitsWed 5:00 — 0 commitsWed 6:00 — 2 commitsWed 7:00 — 2 commitsWed 8:00 — 1 commitsWed 9:00 — 0 commitsWed 10:00 — 3 commitsWed 11:00 — 21 commitsWed 12:00 — 33 commitsWed 13:00 — 18 commitsWed 14:00 — 13 commitsWed 15:00 — 27 commitsWed 16:00 — 35 commitsWed 17:00 — 40 commitsWed 18:00 — 19 commitsWed 19:00 — 26 commitsWed 20:00 — 36 commitsWed 21:00 — 23 commitsWed 22:00 — 41 commitsWed 23:00 — 45 commitsThu 0:00 — 26 commitsThu 1:00 — 29 commitsThu 2:00 — 7 commitsThu 3:00 — 1 commitsThu 4:00 — 3 commitsThu 5:00 — 0 commitsThu 6:00 — 1 commitsThu 7:00 — 6 commitsThu 8:00 — 3 commitsThu 9:00 — 3 commitsThu 10:00 — 9 commitsThu 11:00 — 18 commitsThu 12:00 — 18 commitsThu 13:00 — 7 commitsThu 14:00 — 9 commitsThu 15:00 — 11 commitsThu 16:00 — 21 commitsThu 17:00 — 21 commitsThu 18:00 — 32 commitsThu 19:00 — 21 commitsThu 20:00 — 40 commitsThu 21:00 — 26 commitsThu 22:00 — 37 commitsThu 23:00 — 41 commitsFri 0:00 — 36 commitsFri 1:00 — 14 commitsFri 2:00 — 3 commitsFri 3:00 — 3 commitsFri 4:00 — 2 commitsFri 5:00 — 1 commitsFri 6:00 — 1 commitsFri 7:00 — 0 commitsFri 8:00 — 0 commitsFri 9:00 — 2 commitsFri 10:00 — 5 commitsFri 11:00 — 5 commitsFri 12:00 — 20 commitsFri 13:00 — 21 commitsFri 14:00 — 8 commitsFri 15:00 — 15 commitsFri 16:00 — 23 commitsFri 17:00 — 28 commitsFri 18:00 — 45 commitsFri 19:00 — 16 commitsFri 20:00 — 18 commitsFri 21:00 — 23 commitsFri 22:00 — 23 commitsFri 23:00 — 37 commitsSat 0:00 — 25 commitsSat 1:00 — 30 commitsSat 2:00 — 6 commitsSat 3:00 — 0 commitsSat 4:00 — 1 commitsSat 5:00 — 1 commitsSat 6:00 — 0 commitsSat 7:00 — 0 commitsSat 8:00 — 3 commitsSat 9:00 — 3 commitsSat 10:00 — 5 commitsSat 11:00 — 19 commitsSat 12:00 — 21 commitsSat 13:00 — 28 commitsSat 14:00 — 23 commitsSat 15:00 — 37 commitsSat 16:00 — 54 commitsSat 17:00 — 60 commitsSat 18:00 — 69 commitsSat 19:00 — 40 commitsSat 20:00 — 30 commitsSat 21:00 — 23 commitsSat 22:00 — 27 commitsSat 23:00 — 46 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.

Who is committing

last 52 weeks
Maintainer commits1,390 (91%)
Community commits139 (9%)

1,529 commits in total over the last year.

DateListRankStars gained
Apr 28, 2026daily#25+61
  • DigitalPlatDev/FreeDomain

    Free domain registration and practical DNS learning resources for everyone.

    202.5K stars · Markdown

  • firecrawl/firecrawl

    Supercharge your AI agents with data from the web and beyond. Building the library for superintelligence. 🔥

    188.6K stars · TypeScript

  • microsoft/markitdown

    Python tool for converting files and office documents to Markdown.

    188.4K stars · Python

  • vercel/next.js

    The React Framework

    143.2K stars · JavaScript

  • Stirling-Tools/Stirling-PDF

    #1 PDF Application on GitHub that lets you edit PDFs on any device anywhere

    93.6K stars · Java

  • opendatalab/MinerU

    Transforms complex documents like PDFs and Office docs into LLM-ready markdown/JSON for your Agentic workflows.

    81K stars · Python