PHPackages                             premier/markdown-builder - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Parsing &amp; Serialization](/categories/parsing)
4. /
5. premier/markdown-builder

ActiveLibrary[Parsing &amp; Serialization](/categories/parsing)

premier/markdown-builder
========================

Markdown Builder

0.8(5y ago)1034.9k↓23.2%MITPHPPHP &gt;=7.4

Since Aug 16Pushed 3y ago1 watchersCompare

[ Source](https://github.com/grachevko/markdown-builder)[ Packagist](https://packagist.org/packages/premier/markdown-builder)[ RSS](/packages/premier-markdown-builder/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (9)Dependencies (8)Versions (10)Used By (0)

[![Latest Stable Version](https://camo.githubusercontent.com/29f01441bf7cdfdc26c5d6e3d22f5f79d2001f6e5c9cc5f1ec71adce435792ae/68747470733a2f2f706f7365722e707567782e6f72672f7072656d6965722f6d61726b646f776e2d6275696c6465722f76)](//packagist.org/packages/premier/markdown-builder)[![Total Downloads](https://camo.githubusercontent.com/04f96dd2fd62d932718f3b4e8044f6a3ba8d114b385937bce9db000dd0055417/68747470733a2f2f706f7365722e707567782e6f72672f7072656d6965722f6d61726b646f776e2d6275696c6465722f646f776e6c6f616473)](//packagist.org/packages/premier/markdown-builder)[![Dependents](https://camo.githubusercontent.com/c78ca1c71aa74197b21e04b3a30ae744cbae8d18183252827d415c81c874091b/68747470733a2f2f706f7365722e707567782e6f72672f7072656d6965722f6d61726b646f776e2d6275696c6465722f646570656e64656e7473)](//packagist.org/packages/premier/markdown-builder)[![License](https://camo.githubusercontent.com/db23c189e7438d4a24371e71fcf4c6743c88aad354c62d01c6d6c83403447f29/68747470733a2f2f706f7365722e707567782e6f72672f7072656d6965722f6d61726b646f776e2d6275696c6465722f6c6963656e7365)](//packagist.org/packages/premier/markdown-builder)[![codecov](https://camo.githubusercontent.com/cadb020b8ddaa7d751ecdd3d95a8203a98ea8ad1542ff8e69143d51dc3c10448/68747470733a2f2f636f6465636f762e696f2f67682f677261636865766b6f2f6d61726b646f776e2d6275696c6465722f6272616e63682f6d61696e2f67726170682f62616467652e7376673f746f6b656e3d573546564a52464c3654)](https://codecov.io/gh/grachevko/markdown-builder)[![Mutation testing badge](https://camo.githubusercontent.com/aca86e38ac46463179a3b0cf360e3987b5568cf5d9eac1c2da0213b6d2cbfbc2/68747470733a2f2f696d672e736869656c64732e696f2f656e64706f696e743f7374796c653d666c61742675726c3d687474707325334125324625324662616467652d6170692e737472796b65722d6d757461746f722e696f2532466769746875622e636f6d253246677261636865766b6f2532466d61726b646f776e2d6275696c6465722532466d61696e)](https://dashboard.stryker-mutator.io/reports/github.com/grachevko/markdown-builder/main)

Markdown Builder
================

[](#markdown-builder)

A helper class to create markdown.

This README.md generated by this library, check [bin/readme.php](bin/readme.php) for details.

Installation
------------

[](#installation)

```
composer require premier/markdown-builder
```

Usage
-----

[](#usage)

```
Markdown::builder()
    ->h1('Markdown Builder')
    ->p('A helper class to create markdown.')
    ->h2('Install '.Markdown::bold('this').' powerfull library')
    ->code('composer require premier/markdown-builder', 'bash')
    ->h2('Todos')
    ->checklist([
        [true, 'write tests'],
        [true, Markdown::numberedList(['TableBuilder', 'ListBuilders', 'Checklist'])],
        [false, 'add more markdown features'],
        [true, 'Configure CI'],
        [false, 'CI readme check'],
    ])
    ->getMarkdown();
```

```
Markdown Builder
================

A helper class to create markdown.

Install **this** powerfull library
----------------------------------

```bash
composer require premier/markdown-builder
```

Todos
-----

- [X] write tests
- [X] 1. TableBuilder
      2. ListBuilders
      3. Checklist
- [ ] add more markdown features
- [X] Configure CI
- [ ] CI readme check
```

API
===

[](#api)

The markdown builder have two kinds of elements, block and inline elements. Block elements will be buffered and you can get the markdown if you call the method `getMarkdown()`. All inline Elements get instantly the markdown output.

### Block Elements

[](#block-elements)

#### h1

[](#h1)

```
Markdown::builder()->h1('Hello H1');
```

```
Hello H1
========
```

#### h2

[](#h2)

```
Markdown::builder()->h2('Hello H2');
```

```
Hello H2
--------
```

#### h3

[](#h3)

```
Markdown::builder()->h3('Hello H3');
```

```
### Hello H3
```

#### h4

[](#h4)

```
Markdown::builder()->h4('Hello H4');
```

```
#### Hello H4
```

#### h5

[](#h5)

```
Markdown::builder()->h5('Hello H5');
```

```
##### Hello H5
```

#### h6

[](#h6)

```
Markdown::builder()->h6('Hello H6');
```

```
###### Hello H6
```

#### p

[](#p)

```
Markdown::builder()->p('paragraph');
```

```
paragraph
```

#### Blockquote

[](#blockquote)

```
Markdown::builder()->blockquote("Foo\nBar\nBaz");
```

```
> Foo
> Bar
> Baz
```

#### hr

[](#hr)

```
Markdown::builder()->hr();
```

```
---------------------------------------
```

#### Code

[](#code)

```
Markdown::builder()->code('$var = "test";', 'php');
```

```
```php
$var = "test";
```
```

#### Badge

[](#badge)

```
Markdown::builder()->badge(
    'Latest Stable Version',
    'https://poser.pugx.org/premier/markdown-builder/v',
    '//packagist.org/packages/premier/markdown-builder',
);
```

```
[![Latest Stable Version](https://poser.pugx.org/premier/markdown-builder/v)](//packagist.org/packages/premier/markdown-builder)
```

#### Bulleted list

[](#bulleted-list)

```
Markdown::builder()->bulletedList(['Foo', 'Bar', 'Baz']);
```

```
* Foo
* Bar
* Baz
```

#### Bulleted list callable

[](#bulleted-list-callable)

```
Markdown::builder()->bulletedList(static function (BulletedListBuilder $builder): void {
    $builder
        ->addLine('Hallo')
        ->addLine('foo')
        ->addLine('bar');
});
```

```
* Hallo
* foo
* bar
```

#### Bulleted list callable sort

[](#bulleted-list-callable-sort)

```
Markdown::builder()->bulletedList(static function (BulletedListBuilder $builder): void {
    $builder
        ->addLine('C')
        ->addLine('A')
        ->addLine('B')
        ->addLine('D')
        ->sort(fn (string $left, string $right) => $left  $right);
});
```

```
* A
* B
* C
* D
```

#### Numbered list

[](#numbered-list)

```
Markdown::builder()->numberedList(['Foo', 'Bar', 'Baz']);
```

```
1. Foo
2. Bar
3. Baz
```

#### Numbered list callable

[](#numbered-list-callable)

```
Markdown::builder()->numberedList(static function (NumberedListBuilder $builder) {
    $builder
        ->addLine('Hallo')
        ->addLine('foo')
        ->addLine('bar');
});
```

```
1. Hallo
2. foo
3. bar
```

#### Numbered list callable sort

[](#numbered-list-callable-sort)

```
Markdown::builder()->numberedList(static function (NumberedListBuilder $builder) {
    $builder
        ->addLine('A')
        ->addLine('D')
        ->addLine('B')
        ->addLine('C')
        ->sort(fn (string $left, string $right) => $left  $right);
});
```

```
1. A
2. B
3. C
4. D
```

#### Checklist

[](#checklist)

```
Markdown::builder()->checklist([
    [false, 'Hallo'],
    [false, 'foo'],
    [true, 'bar'],
]);
```

```
- [ ] Hallo
- [ ] foo
- [X] bar
```

#### Checklist callable

[](#checklist-callable)

```
Markdown::builder()->checklist(static function (ChecklistBuilder $builder): void {
    $builder
        ->addLine(false, 'Hallo')
        ->addLine(false, 'foo')
        ->addLine(true, 'bar');
});
```

```
- [ ] Hallo
- [ ] foo
- [X] bar
```

#### Checklist callable sort

[](#checklist-callable-sort)

```
Markdown::builder()->checklist(static function (ChecklistBuilder $builder): void {
    $builder
        ->addLine(false, 'C')
        ->addLine(false, 'D')
        ->addLine(true, 'B')
        ->addLine(true, 'A')
        ->sort(fn (array $left, array $right) => $left[1]  $right[1]);
});
```

```
- [X] A
- [X] B
- [ ] C
- [ ] D
```

#### Table

[](#table)

```
Markdown::builder()->table(
    ['First Header', 'Second Header'],
    [
        ['Content from cell 1', 'Content from cell 2'],
        ['Content in the first column', 'Content in the second column'],
    ]
);
```

```
First Header | Second Header
------------ | -------------
Content from cell 1 | Content from cell 2
Content in the first column | Content in the second column
```

#### Table callable

[](#table-callable)

```
Markdown::builder()->table(
    ['First Header', 'Second Header'],
    static function (TableBuilder $builder): void {
        $builder
            ->addRow('Content from cell 1', 'Content from cell 2')
            ->addRow('Content in the first column', 'Content in the second column');
    },
);
```

```
First Header | Second Header
------------ | -------------
Content from cell 1 | Content from cell 2
Content in the first column | Content in the second column
```

#### Table callable sort

[](#table-callable-sort)

```
Markdown::builder()->table(
    ['First Header', 'Second Header'],
    static function (TableBuilder $builder): void {
        $builder
            ->addRow('C', 'Content from cell C')
            ->addRow('A', 'Content from cell A')
            ->addRow('B', 'Content from cell B')
            ->sort(fn (array $left, array $right) => $left[0]  $right[0]);
    },
);
```

```
First Header | Second Header
------------ | -------------
A | Content from cell A
B | Content from cell B
C | Content from cell C
```

#### Table with nested list

[](#table-with-nested-list)

```
Markdown::builder()->table(
    ['First Header', 'Second Header'],
    static function (TableBuilder $builder): void {
        $builder
            ->addRow('A', Markdown::listAsHtml(Markdown::checklist([
                [true, 'A'],
                [false, 'B'],
                [false, 'C'],
            ])))
            ->addRow('B', Markdown::listAsHtml(Markdown::checklist([
                [true, 'D'],
                [false, 'E'],
                [false, 'F'],
            ])));
    },
);
```

```
First Header | Second Header
------------ | -------------
A | - [X] A- [ ] B- [ ] C
B | - [X] D- [ ] E- [ ] F
```

### Inline Blocks

[](#inline-blocks)

#### Bold

[](#bold)

```
Markdown::bold('Hey!');
```

```
**Hey!**
```

#### Italic

[](#italic)

```
Markdown::italic('huhu');
```

```
*huhu*
```

#### Code

[](#code-1)

```
Markdown::code('$var = "test";');
```

```
`$var = "test";`
```

#### Link

[](#link)

```
Markdown::link('https://google.com', 'Google');
```

```
[Google](https://google.com)
```

#### img

[](#img)

```
Markdown::img('cat.jpg', 'Cat');
```

```
![Cat](cat.jpg)
```

#### Badge

[](#badge-1)

```
Markdown::badge(
    'Latest Stable Version',
    'https://poser.pugx.org/premier/markdown-builder/v',
    '//packagist.org/packages/premier/markdown-builder',
    );
```

```
[![Latest Stable Version](https://poser.pugx.org/premier/markdown-builder/v)](//packagist.org/packages/premier/markdown-builder)
```

#### Numbered list

[](#numbered-list-1)

```
Markdown::numberedList(['A', 'B', 'C']);
```

```
1. A
2. B
3. C
```

#### Bulleted list

[](#bulleted-list-1)

```
Markdown::bulletedList(['A', 'B', 'C']);
```

```
* A
* B
* C
```

#### Checklist

[](#checklist-1)

```
Markdown::checklist([
    [true, 'A'],
    [true, 'B'],
    [false, 'C'],
]);
```

```
- [X] A
- [X] B
- [ ] C
```

### Advanced Features

[](#advanced-features)

#### Collapse block

[](#collapse-block)

if you need collapse blocks, you can create a new builder instance with his own clean buffer.

```
Markdown::builder()
    ->blockquote(
        Markdown::builder()
          ->h1('Lists')
          ->bulletedList([
            'Foo',
            Markdown::numberedList(['A', 'B', 'C']),
            'Bar'
          ])->getMarkdown()
    )
    ->getMarkdown();
```

```
> Lists
> =====
>
> * Foo
> * 1. A
>   2. B
>   3. C
> * Bar
```

#### Callback

[](#callback)

If you want to add blocks from complex logic or iterable value, but don't want to stop chain calls you can use callback.

```
Markdown::builder()
    ->p('Callback Example')
    ->callback(static function (Builder $builder) {
        foreach ([1, 2, 3] as $item) {
            $builder
                ->p($item.' paragraph.')
                ->hr();
        }
    })
    ->getMarkdown();
```

```
Callback Example

1 paragraph.

---------------------------------------

2 paragraph.

---------------------------------------

3 paragraph.

---------------------------------------
```

#### Dump to File

[](#dump-to-file)

Instead of returning markdown as a string you can easy dump result to file.

```
Markdown::builder()->h1('Hello world!')->dump('index.md');
```

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity34

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~22 days

Recently: every ~40 days

Total

9

Last Release

1922d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/8628465?v=4)[Konstantin Grachev](/maintainers/grachevko)[@grachevko](https://github.com/grachevko)

---

Top Contributors

[![grachevko](https://avatars.githubusercontent.com/u/8628465?v=4)](https://github.com/grachevko "grachevko (35 commits)")

---

Tags

buildermarkdownmarkdownbuilder

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan, Psalm

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/premier-markdown-builder/health.svg)

```
[![Health](https://phpackages.com/badges/premier-markdown-builder/health.svg)](https://phpackages.com/packages/premier-markdown-builder)
```

###  Alternatives

[erusev/parsedown

Parser for Markdown.

15.0k151.8M732](/packages/erusev-parsedown)[league/commonmark

Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)

3.0k404.0M702](/packages/league-commonmark)[michelf/php-markdown

PHP Markdown

3.5k52.4M345](/packages/michelf-php-markdown)[league/html-to-markdown

An HTML-to-markdown conversion helper for PHP

1.9k28.6M199](/packages/league-html-to-markdown)[cebe/markdown

A super fast, highly extensible markdown parser for PHP

1.0k32.5M136](/packages/cebe-markdown)[erusev/parsedown-extra

An extension of Parsedown that adds support for Markdown Extra.

84314.8M192](/packages/erusev-parsedown-extra)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
