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 readable plain text in PHP. soundasleep/html2text extracts meaningful content from messy markup, handling links, lists, tables and whitespace with configurable formatting—ideal for emails, scraping, logs and text-only previews.

View on GitHub
Deep Wiki
Context7

A PHP component to convert HTML into a plain text format

Frequently asked questions about Html2Text
How do I use this package to generate plaintext email fallbacks in Laravel?
Extend Laravel’s Mailable class by injecting the `Html2Text` converter. Pass your HTML email content to `getText()` and attach the result as the plaintext fallback using `withPlainText()`. Example: `$text = (new Html2Text())->getText($html); $message->withPlainText($text);`. Works seamlessly with Laravel’s built-in email system.
Does this package handle nested HTML structures like tables or lists?
Yes, it converts basic nested structures like tables, lists (ordered/unordered), and headers into readable plaintext. Complex layouts (e.g., deeply nested tables) may require post-processing. Test with your specific HTML to validate output. For edge cases, consider pre-processing or extending the package.
What Laravel versions does soundasleep/html2text support?
The package supports Laravel 8+ (PHP 7.4+) due to its native PHP dependency. Test with Laravel 10 to confirm compatibility, as it uses no Laravel-specific features. No version conflicts are expected, as it’s a standalone component.
Can I use this for bulk HTML-to-text conversions, like processing thousands of emails?
While lightweight, bulk processing should be benchmarked for memory/CPU usage. For high-throughput scenarios, consider queueing conversions via Laravel Queues or batching requests. The package is stateless, so horizontal scaling is straightforward if needed.
How do I customize the output formatting, like preserving headers or truncating text?
The package provides configurable options for basic formatting (e.g., link handling, whitespace). For advanced needs, chain Laravel’s `Str` helpers (e.g., `Str::limit()`) after conversion. Example: `$cleanText = Str::limit($text, 200);`. Extend the class for custom logic if required.
What if my HTML contains scripts, iframes, or other non-standard elements?
The package ignores scripts, iframes, and non-standard elements by default, focusing on semantic content. For custom HTML attributes (e.g., Tailwind classes), pre-process the HTML or extend the converter. Test with your specific markup to identify gaps.
Is this package suitable for real-time API response conversion (e.g., converting HTML responses to text)?
Yes, it’s lightweight enough for real-time use. Add middleware to convert HTML responses to text before sending. Example: `app()->middleware(function ($request, $next) { $response = $next($request); return $response->setContent((new Html2Text())->getText($response->content())); });`. Benchmark for latency in high-traffic APIs.
Are there alternatives if I need richer output, like Markdown or styled text?
For Markdown output, consider `spatie/html-to-markdown`. If you need styled text (e.g., ANSI colors), pair this package with a post-processor. Laravel’s `Str::markdown()` is limited to Markdown input, not HTML. Evaluate your output needs before choosing.
How do I test this package in my Laravel application?
Use PHPUnit to mock the `Html2Text` class and assert output against expected plaintext. Example: `$converter = $this->partialMock(Html2Text::class, []); $result = $converter->getText('<p>Test</p>'); $this->assertEquals('Test', $result);`. Test edge cases like nested tags, Unicode, and links.
What maintenance or security considerations should I be aware of?
The package is MIT-licensed with no active development since 2023, but its simplicity reduces risk. Monitor for PHP 8+ compatibility if upgrading. No dependencies mean no transitive vulnerabilities. Fork or extend if critical updates are needed, as the codebase is minimal (~100 LOC).
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.
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui
devgeek/beacon-admin
benjamin-rqt/data-watcher-bundle
atriumphp/atrium
sandermuller/package-boost-laravel
sandermuller/boost-skills
redaxo/core
yusufgenc/filament-api-forge
l3aro/rating-star-for-filament
leek/filament-subtenant-scope