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

Html2Text Laravel Package

soundasleep/html2text

Convert HTML to clean, readable plain text in PHP. soundasleep/html2text handles tags, links, images, and whitespace to produce email-friendly, human-readable output, with sensible defaults and options for tweaking formatting.

Deep Wiki
Context7

A PHP component to convert HTML into a plain text format

Frequently asked questions about Html2Text
How do I convert HTML emails to plain text in Laravel using this package?
Use the package in your Laravel Mailable class to generate plaintext fallbacks. Instantiate `Html2Text`, pass the HTML content, and assign the result to `withPlainText()`. Example: `$text = (new Html2Text())->getText($html); $message->withPlainText($text);`. Works seamlessly with Laravel’s email system.
Does this package support Laravel 10 and PHP 8.2?
Yes, the package is compatible with Laravel 8+ and PHP 7.4+. While officially tested up to PHP 8.1, it should work with PHP 8.2 due to minimal dependencies. Always test with your Laravel 10 environment to confirm no deprecation warnings arise.
Can I use this for bulk HTML-to-text conversion in Laravel Queues?
Absolutely. Dispatch a job with the HTML content, then process it asynchronously using the package. For large-scale conversions, benchmark memory/CPU usage to avoid timeouts. Example: `Html2Text::dispatch($html)->delay(now()->addMinutes(5));` in a job.
What happens if my HTML contains complex tables or scripts?
The package handles basic HTML well but may struggle with nested tables, scripts, or dynamic content. For edge cases, pre-process the HTML (e.g., strip scripts) or post-process the output. Consider customizing the package or pairing it with a sanitizer like `HTMLPurifier` for complex inputs.
How do I customize the plaintext output (e.g., preserve headers or truncate links)?
The package provides sensible defaults but allows tweaking via configuration. For example, use `$converter->setOption('truncate_links', true)` to shorten URLs. Combine with Laravel’s `Str` helpers (e.g., `Str::limit()`) for further formatting. Check the README for available options.
Is this package suitable for real-time API response conversion?
Yes, but test performance under load. Use middleware to auto-convert HTML responses to text if needed. For high-throughput APIs, cache converted results or process in a queue. Example middleware: `app()->make(Html2Text::class)->getText($request->getContent());`
What alternatives exist for HTML-to-text conversion in Laravel?
For richer output, consider `spatie/html-to-markdown` (converts HTML to Markdown first). Laravel’s native `Str::markdown()` is limited to Markdown. For email-specific needs, this package is lightweight and focused. Evaluate based on your need for simplicity vs. advanced formatting.
How do I test HTML-to-text conversion in my Laravel application?
Write PHPUnit tests using the package’s stateless design. Mock HTML inputs and assert plaintext outputs. Example: `$converter = new Html2Text(); $this->assertStringContainsString('Converted Text', $converter->getText('<p>Test</p>'));`. Test edge cases like nested tags or special characters.
Will this package work with Tailwind CSS or Alpine.js HTML?
The package processes standard HTML5, so custom attributes (e.g., `data-*` or Tailwind classes) may appear in output. Pre-process HTML to strip non-standard attributes or use CSS selectors to target and remove them before conversion. Alpine.js dynamic content may require client-side handling.
How do I handle security risks if this package is no longer maintained?
The package has no dependencies, so transitive vulnerabilities are unlikely. Monitor for updates via GitHub or fork it under the MIT license if critical. For high-security applications, audit the ~100 LOC yourself or pair it with a sanitizer like `HTMLPurifier` for an extra layer of protection.
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.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
milesj/emojibase
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport