Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Commonmark Laravel Package

league/commonmark

Extensible PHP Markdown parser supporting the full CommonMark spec and GitHub-Flavored Markdown. Works with PHP 7.4+ (mbstring) and provides simple converters to turn Markdown into HTML with configurable safety options.

View on GitHub
Deep Wiki
Context7

Highly-extensible PHP Markdown parser which fully supports the CommonMark and GFM specs.

Frequently asked questions about Commonmark
How do I integrate league/commonmark with Laravel for parsing Markdown in Blade templates?
Use the GrahamCampbell/Laravel-Markdown package for seamless integration. Install it via Composer (`composer require graham-campbell/laravel-markdown`), then parse Markdown in Blade with `{{ Markdown::parse($content) }}`. This auto-registers the package and provides a clean facade for Laravel’s service container.
Does league/commonmark support GitHub Flavored Markdown (GFM) features like tables or task lists?
Yes, the package includes a `GithubFlavoredMarkdownConverter` class that fully supports GFM features. Initialize it instead of the standard `CommonMarkConverter` to enable tables, task lists, and other GitHub-specific syntax. Laravel’s facade abstracts this choice, so you can switch converters via configuration.
What security settings should I use for user-generated Markdown content in Laravel?
For user-generated content, enforce strict security settings like `html_input => 'strip'` and `allow_unsafe_links => false` in your converter configuration. Laravel’s Markdown facade defaults to safe settings, but explicitly configure them in `AppServiceProvider` if extending the converter. Always validate input to prevent XSS risks.
Can I add custom extensions (e.g., emoji or syntax highlighting) to league/commonmark in Laravel?
Yes, the package supports extensions like emoji or syntax highlighting. Register them in Laravel’s service container by binding a custom `CommonMarkConverter` in `AppServiceProvider`. For example, add `new EmojiExtension()` to the `extensions` array in the converter’s configuration. Community extensions like `ElGigi/CommonMarkEmoji` are also available.
Will upgrading league/commonmark break my Laravel application due to CommonMark spec changes?
The package follows SemVer strictly, but minor/patch updates may alter HTML output to adhere to CommonMark spec changes. Laravel’s dependency management (e.g., `composer update`) helps mitigate risks. Test updates in a staging environment, especially if your app relies on exact HTML output. Use caching (e.g., Laravel’s `Cache` facade) for performance-critical parsing.
How do I parse Markdown in Laravel API responses or console commands without using the facade?
Instantiate the `CommonMarkConverter` or `GithubFlavoredMarkdownConverter` directly in your controller or console command. For example, in a controller: `$converter = new CommonMarkConverter(['html_input' => 'strip']); return response()->json(['content' => $converter->convert($request->markdown)])`. This avoids facade overhead and works standalone.
Is league/commonmark compatible with older Laravel versions (e.g., Laravel 7 or 8)?
The package requires PHP 7.4+, but Laravel 7+ (with PHP 7.4+) is fully supported. Laravel’s Markdown facade (`graham-campbell/laravel-markdown`) abstracts version-specific details, so integration remains consistent. For Laravel 6 or older, ensure PHP 7.4+ compatibility and manually bind the converter in your service provider.
How can I test security vulnerabilities like XSS in Markdown parsing for Laravel?
Test by injecting malicious Markdown (e.g., `<script>alert('xss')</script>`) and verifying the output strips unsafe HTML. Use Laravel’s `Markdown::parse()` with `html_input => 'strip'` and validate the result with tools like HTML Purifier. For thorough testing, write PHPUnit tests that assert the converter’s output sanitizes user input.
What are the performance implications of parsing large Markdown files in Laravel?
The package is optimized for speed, but parsing large files (e.g., bulk imports) may require caching. Use Laravel’s `Cache` facade to store parsed Markdown results (e.g., `Cache::remember('markdown_'.$id, now()->addHours(1), fn() => Markdown::parse($content))`). For real-time use (e.g., comments), ensure your server handles the load.
Are there alternatives to league/commonmark for Laravel Markdown parsing, and when should I use them?
Alternatives include `parsedown/parsedown` (lighter but less spec-compliant) or `michelf/php-markdown` (older, less maintained). Use league/commonmark if you need full CommonMark/GFM support, extensibility, or security features. For static sites or minimal needs, lighter parsers may suffice, but they lack Laravel’s native integration and safety defaults.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
codraw/entity-migrator
codraw/doctrine-extra
codraw/aws-tool-kit
codraw/validator
codraw/workflow
codraw/open-api
codraw/cron-job
codraw/process
codraw/log
nexmo/api-specification
capell-app/block-library
axium/identity
cetria/laravel-dummy-models
cetria/reflection-helper
agropredict/sso-auth-bundle
evolvestudio/spam-protection
datacore/hub-sdk
develia/commons
cuci/prototurk-sdk
cuci/prototurk-sdk-symfony