PHPackages                             php-collective/laravel-djot - 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. [Templating &amp; Views](/categories/templating)
4. /
5. php-collective/laravel-djot

ActiveLibrary[Templating &amp; Views](/categories/templating)

php-collective/laravel-djot
===========================

Laravel integration for php-collective/djot — Blade directives, services, validation, and caching

0.1.0(1mo ago)01MITPHPPHP ^8.2CI passing

Since Apr 11Pushed 1mo agoCompare

[ Source](https://github.com/php-collective/laravel-djot)[ Packagist](https://packagist.org/packages/php-collective/laravel-djot)[ Docs](https://github.com/php-collective/laravel-djot)[ RSS](/packages/php-collective-laravel-djot/feed)WikiDiscussions master Synced 1w ago

READMEChangelog (1)Dependencies (8)Versions (2)Used By (0)

Laravel Djot
============

[](#laravel-djot)

[![CI](https://github.com/php-collective/laravel-djot/actions/workflows/ci.yml/badge.svg)](https://github.com/php-collective/laravel-djot/actions/workflows/ci.yml)[![PHP](https://camo.githubusercontent.com/be2d6a2a73ade0dc3be0c708a3ae54c16915fe5683963e14c0732cdb71986165/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f7068702d636f6c6c6563746976652f6c61726176656c2d646a6f74)](https://packagist.org/packages/php-collective/laravel-djot)[![License](https://camo.githubusercontent.com/35167ef0a3ebb7b7854812d68a05f17ab5a4ad1b2c0be303037f4355a41a2f19/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f7068702d636f6c6c6563746976652f6c61726176656c2d646a6f74)](LICENSE)

[Djot](https://github.com/php-collective/djot-php) markup language integration for Laravel — Blade directives, services, validation, and caching.

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

[](#installation)

```
composer require php-collective/laravel-djot
```

The service provider and `Djot` facade alias are auto-discovered via Laravel's package discovery.

Optionally publish the config:

```
php artisan vendor:publish --tag=djot-config
```

Usage
-----

[](#usage)

### Blade Directives

[](#blade-directives)

```
{{-- Safe by default - XSS protection enabled --}}
@djot($article->body)

{{-- For trusted content only - no XSS protection --}}
@djotRaw($trustedContent)

{{-- Plain text output (escaped) --}}
@djotText($article->body)
```

### Facade

[](#facade)

```
use PhpCollective\LaravelDjot\Facades\Djot;

$html = Djot::toHtml($source);
$text = Djot::toText($source);
$raw  = Djot::toHtmlRaw($trustedSource);
```

### Dependency Injection

[](#dependency-injection)

```
use PhpCollective\LaravelDjot\Service\DjotConverterInterface;
use PhpCollective\LaravelDjot\Service\DjotManager;

class ArticleController
{
    public function __construct(
        private DjotConverterInterface $djot,
        private DjotManager $manager,
    ) {}

    public function show(Article $article): View
    {
        return view('article.show', [
            'html' => $this->djot->toHtml($article->body),
            'text' => $this->djot->toText($article->body),
            'docs' => $this->manager->toHtml($article->body, 'docs'),
        ]);
    }
}
```

Configuration
-------------

[](#configuration)

```
// config/djot.php
return [
    'converters' => [
        // Default has safe_mode: true (XSS protection enabled)
        'default' => [
            'safe_mode' => true,
        ],

        // For trusted content (admin, CMS)
        'trusted' => [
            'safe_mode' => false,
        ],
    ],
    'cache' => [
        'enabled' => false,
        'store' => null,
    ],
];
```

### Multiple Converter Profiles

[](#multiple-converter-profiles)

Use different configurations for different contexts:

```
{{-- Default is safe --}}
@djot($comment->body)

{{-- Use named converter for trusted content --}}
{!! Djot::toHtml($article->body, 'trusted') !!}

{{-- Or use @djotRaw for quick trusted rendering --}}
@djotRaw($article->body)
```

### Safe Mode

[](#safe-mode)

Safe mode is *enabled by default* for XSS protection. Disable only for trusted content:

```
'converters' => [
    'trusted' => [
        'safe_mode' => false,
    ],
],
```

### Extensions

[](#extensions)

Enable [djot-php extensions](https://github.com/php-collective/djot-php) per converter:

```
'converters' => [
    'default' => [
        'extensions' => [
            ['type' => 'autolink'],
            ['type' => 'smart_quotes'],
            [
                'type' => 'heading_permalinks',
                'symbol' => '#',
                'position' => 'after',
            ],
        ],
    ],
    'with_mentions' => [
        'extensions' => [
            [
                'type' => 'mentions',
                'user_url_template' => 'https://github.com/{username}',
            ],
            'table_of_contents',
        ],
    ],
],
```

Available extensions:

- `admonition` - Admonition blocks (note, tip, warning, danger, etc.)
- `autolink` - Auto-convert URLs to clickable links
- `code_group` - Transform code-group divs into tabbed interfaces
- `default_attributes` - Add default attributes to elements by type
- `external_links` - Configure external link behavior (target, rel)
- `frontmatter` - Parse YAML/TOML/JSON frontmatter blocks
- `heading_level_shift` - Shift heading levels up/down
- `heading_permalinks` - Add anchor links to headings
- `heading_reference` - Link to headings with `[text](#heading)` syntax
- `inline_footnotes` - Convert spans with class to inline footnotes
- `mentions` - Convert @username to profile links
- `mermaid` - Render Mermaid diagram code blocks
- `semantic_span` - Convert spans to ``, ``, `` elements
- `smart_quotes` - Convert straight quotes to typographic quotes
- `table_of_contents` - Generate TOC from headings
- `tabs` - Tabbed content blocks (CSS or ARIA mode)
- `wikilinks` - Support `[[Page Name]]` wiki-style links

See [Extensions documentation](https://php-collective.github.io/laravel-djot/extensions/) for detailed configuration options.

### Validation Rule

[](#validation-rule)

Validate that a field contains valid Djot markup:

```
use PhpCollective\LaravelDjot\Rules\ValidDjot;

$request->validate([
    'body' => ['required', 'string', new ValidDjot()],
]);
```

Documentation
-------------

[](#documentation)

Full documentation: **[php-collective.github.io/laravel-djot](https://php-collective.github.io/laravel-djot/)**

- [Installation](https://php-collective.github.io/laravel-djot/guide/installation)
- [Configuration](https://php-collective.github.io/laravel-djot/guide/configuration)
- [Blade Usage](https://php-collective.github.io/laravel-djot/guide/blade-usage)
- [Service Usage](https://php-collective.github.io/laravel-djot/guide/service-usage)
- [Validation](https://php-collective.github.io/laravel-djot/guide/validation)
- [Safe Mode](https://php-collective.github.io/laravel-djot/guide/safe-mode)
- [Extensions](https://php-collective.github.io/laravel-djot/extensions/)
- [Caching](https://php-collective.github.io/laravel-djot/guide/caching)
- [Djot Syntax](https://php-collective.github.io/laravel-djot/guide/djot-syntax)

Demo Application
----------------

[](#demo-application)

See the [laravel-djot-demo](https://github.com/php-collective/laravel-djot-demo) for a complete example application.

What is Djot?
-------------

[](#what-is-djot)

[Djot](https://djot.net) is a modern light markup language created by John MacFarlane (author of CommonMark/Pandoc). It offers cleaner syntax and more features than Markdown while being easier to parse.

Learn more about Djot syntax at [djot.net](https://djot.net).

###  Health Score

35

—

LowBetter than 77% of packages

Maintenance91

Actively maintained with recent releases

Popularity1

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity36

Early-stage or recently created project

 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

Unknown

Total

1

Last Release

59d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/39854?v=4)[Mark Scherer](/maintainers/dereuromark)[@dereuromark](https://github.com/dereuromark)

---

Top Contributors

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

---

Tags

djotlaravelmarkupparserlaravelparserpackageblademarkupdjot

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/php-collective-laravel-djot/health.svg)

```
[![Health](https://phpackages.com/badges/php-collective-laravel-djot/health.svg)](https://phpackages.com/packages/php-collective-laravel-djot)
```

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3325.1M337](/packages/psalm-plugin-laravel)[moonshine/moonshine

Laravel administration panel

1.3k239.9k72](/packages/moonshine-moonshine)[tallstackui/tallstackui

TallStackUI is a powerful suite of Blade components that elevate your workflow of Livewire applications.

719160.4k12](/packages/tallstackui-tallstackui)[blade-ui-kit/blade-icons

A package to easily make use of icons in your Laravel Blade views.

2.5k39.5M381](/packages/blade-ui-kit-blade-icons)[roots/acorn

Framework for Roots WordPress projects built with Laravel components.

9732.3M121](/packages/roots-acorn)[tightenco/jigsaw

Simple static sites with Laravel's Blade.

2.2k449.3k30](/packages/tightenco-jigsaw)

PHPackages © 2026

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