commonmark-ext-gfm-alerts

June 7, 2026 ยท View on GitHub

Extension for commonmark-java that adds support for GitHub Flavored Markdown alerts.

Enables highlighting important information using blockquote syntax with five standard alert types: NOTE, TIP, IMPORTANT, WARNING, and CAUTION.

Usage

Markdown Syntax

> [!NOTE]
> Useful information

> [!WARNING]
> Critical information

Standard GFM Types

var extension = AlertsExtension.create();
var parser = Parser.builder().extensions(List.of(extension)).build();
var renderer = HtmlRenderer.builder().extensions(List.of(extension)).build();

Custom Alert Types

Add custom types beyond the five standard GFM types:

var extension = AlertsExtension.builder()
        .addCustomType("BUG", "Known Bug")
        .build();

Custom types must be UPPERCASE. Standard type titles can also be overridden for localization.

The allowed types (including the five standard GFM types) can also be completely overwritten:

var extension = AlertsExtension.builder()
        .setAllowedTypes(Map.ofEntries(
                Map.entry("IMPORTANT", "Important"),
                Map.entry("WARNING", "Warning")
                Map.entry("BUG", "Known Bug")
        ))
        .build();

Custom Alert Titles

Allow authors to provide custom titles per alert by adding text after the alert marker on the same line:

var extension = AlertsExtension.builder().allowCustomTitles(true).build();
> [!NOTE] Keep in mind <!-- Overrides default title of "Note" -->
> Useful information

> [!WARNING] Be **very** careful <!-- Inline formatting is supported -->
> Critical information

Nesting Alerts

By default, alerts cannot be nested within other blocks. Alerts within other blocks are parsed as regular block quotes.

<!-- Allowed -->
> [!NOTE]
> Useful information

<!-- Not allowed -->
- > [!NOTE]
  > Useful information

This behavior can be changed to allow nested alerts:

var extension = AlertsExtension.builder().allowNestedAlerts(true).build();

Styling

Alerts render as <div> elements with CSS classes:

<div class="markdown-alert markdown-alert-note" data-alert-type="note">
  <p class="markdown-alert-title">Note</p>
  <p>Content</p>
</div>

Basic CSS example:

.markdown-alert {
  padding: 0.5rem 1rem;
  margin-bottom: 1rem;
  border-left: 4px solid;
}

.markdown-alert-note { border-color: #0969da; background-color: #ddf4ff; }
.markdown-alert-tip { border-color: #1a7f37; background-color: #dcffe4; }
.markdown-alert-important { border-color: #8250df; background-color: #f6f0ff; }
.markdown-alert-warning { border-color: #9a6700; background-color: #fff8c5; }
.markdown-alert-caution { border-color: #cf222e; background-color: #ffebe9; }

Alerts

Icons can be added using GitHub's Octicons:

Alerts with icons

License

See the main commonmark-java project for license information.