PHPackages                             slimani/filament-media-manager - 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. [File &amp; Storage](/categories/file-storage)
4. /
5. slimani/filament-media-manager

ActiveLibrary[File &amp; Storage](/categories/file-storage)

slimani/filament-media-manager
==============================

A media manager plugin for Filament.

v0.16.1(2w ago)179.7k↑328.7%3[1 issues](https://github.com/slimani-dev/filament-media-manager/issues)1MITPHPCI passing

Since Mar 13Pushed 2mo ago1 watchersCompare

[ Source](https://github.com/slimani-dev/filament-media-manager)[ Packagist](https://packagist.org/packages/slimani/filament-media-manager)[ Docs](https://github.com/slimani-dev/filament-media-manager)[ RSS](/packages/slimani-filament-media-manager/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (10)Dependencies (85)Versions (44)Used By (1)

Filament Media Manager
======================

[](#filament-media-manager)

[![GitHub Workflow Status](https://camo.githubusercontent.com/fd6c63e9cf0761f3dbbf69efabf67a6bafa3ff1407912b0f045639a8a1817f20/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f736c696d616e692d6465762f66696c616d656e742d6d656469612d6d616e616765722f72756e2d74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/slimani-dev/filament-media-manager/actions/workflows/run-tests.yml)[![GitHub Workflow Status](https://camo.githubusercontent.com/f0194a70ee1ae121b7d5322770da681d32266049ea5febb67a7f3431504ebfae/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f736c696d616e692d6465762f66696c616d656e742d6d656469612d6d616e616765722f7068707374616e2e796d6c3f6272616e63683d6d61696e266c6162656c3d7068707374616e267374796c653d666c61742d737175617265)](https://github.com/slimani-dev/filament-media-manager/actions/workflows/phpstan.yml)[![GitHub Workflow Status](https://camo.githubusercontent.com/19c52982346b15fb792d54b7d8de8e078981e367fc88038d1531a173e741486b/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f736c696d616e692d6465762f66696c616d656e742d6d656469612d6d616e616765722f6669782d7068702d636f64652d7374796c652d6973737565732e796d6c3f6272616e63683d6d61696e266c6162656c3d636f64652532307374796c65267374796c653d666c61742d737175617265)](https://github.com/slimani-dev/filament-media-manager/actions/workflows/fix-php-code-style-issues.yml)[![Total Downloads](https://camo.githubusercontent.com/ca1d3708015a001bfbed44140a0f23cccd39f8e8cd17ff9143d810fe5f04cfb9/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f736c696d616e692f66696c616d656e742d6d656469612d6d616e616765722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/slimani/filament-media-manager)[![License](https://camo.githubusercontent.com/1a8d9630ad30502daffabeeee9c048226473f05620b519dc1d7d4764db938274/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f736c696d616e692f66696c616d656e742d6d656469612d6d616e616765722e7376673f7374796c653d666c61742d737175617265)](https://github.com/slimani-dev/filament-media-manager/blob/main/LICENSE)

A comprehensive media manager plugin for Filament v4 and v5.

Features
--------

[](#features)

- **Folder-based organization**: Organize your media into hierarchical folders.
- **Native Filament integration**: Built specifically for Filament with support for forms, tables, and actions across both v4 and v5 versions.
- **Smooth UI**: Modern, responsive media browser with search and filtering capabilities.
- **Hierarchical Folder Navigation**: Browse and organize media using a powerful tree selection interface, thanks to `filament-select-tree`.
- **Taggable media**: Add tags to your files for easier searching and filtering.
- **Support for multiple disks**: Configure which disk to use for storage per field or globally.

Screenshots
-----------

[](#screenshots)

### Media Manager Overview

[](#media-manager-overview)

[![Media Manager Overview](https://camo.githubusercontent.com/ed41293d769dbbb35af6526bd810d78c29dcb19a658fd197626719d068d037cf/68747470733a2f2f73332e736c696d616e692e6465762f6d656469612d6d616e616765722f53637265656e25323053686f74253230323032362d30332d3139253230617425323032312e33352e34302e706e67)](https://camo.githubusercontent.com/ed41293d769dbbb35af6526bd810d78c29dcb19a658fd197626719d068d037cf/68747470733a2f2f73332e736c696d616e692e6465762f6d656469612d6d616e616765722f53637265656e25323053686f74253230323032362d30332d3139253230617425323032312e33352e34302e706e67)

### File Upload

[](#file-upload)

[![Folder Navigation](https://camo.githubusercontent.com/b14ec9542f3103de77ef733f4bb40eb797d1d7730c5fe7db823d1100c72a7798/68747470733a2f2f73332e736c696d616e692e6465762f6d656469612d6d616e616765722f53637265656e25323053686f74253230323032362d30332d3139253230617425323032312e33362e31322e706e67)](https://camo.githubusercontent.com/b14ec9542f3103de77ef733f4bb40eb797d1d7730c5fe7db823d1100c72a7798/68747470733a2f2f73332e736c696d616e692e6465762f6d656469612d6d616e616765722f53637265656e25323053686f74253230323032362d30332d3139253230617425323032312e33362e31322e706e67)

### File Details

[](#file-details)

[![](https://camo.githubusercontent.com/57afb8f71b4402ee358fbeb13e9f8e1ceb032b7228f82f0583f88a1d59c671f7/68747470733a2f2f73332e736c696d616e692e6465762f6d656469612d6d616e616765722f53637265656e25323053686f74253230323032362d30332d3139253230617425323032312e33362e34312e706e67)](https://camo.githubusercontent.com/57afb8f71b4402ee358fbeb13e9f8e1ceb032b7228f82f0583f88a1d59c671f7/68747470733a2f2f73332e736c696d616e692e6465762f6d656469612d6d616e616765722f53637265656e25323053686f74253230323032362d30332d3139253230617425323032312e33362e34312e706e67)

### File Preview

[](#file-preview)

[![](https://camo.githubusercontent.com/2678cf51c7e7f42c8441aa999523d413159a43e2fed4fad29ae340a1f887dd44/68747470733a2f2f73332e736c696d616e692e6465762f6d656469612d6d616e616765722f53637265656e25323053686f74253230323032362d30332d3139253230617425323032312e33362e34362e706e67)](https://camo.githubusercontent.com/2678cf51c7e7f42c8441aa999523d413159a43e2fed4fad29ae340a1f887dd44/68747470733a2f2f73332e736c696d616e692e6465762f6d656469612d6d616e616765722f53637265656e25323053686f74253230323032362d30332d3139253230617425323032312e33362e34362e706e67)

### Filter, Search and Sort (with Multiple selectin and Actions)

[](#filter-search-and-sort-with-multiple-selectin-and-actions)

[![Rich Text Editor Integration](https://camo.githubusercontent.com/506193fbfe3457602bf59e8b7cd39b4dcfc224edf7383d0f67d0278ea9b9ab14/68747470733a2f2f73332e736c696d616e692e6465762f6d656469612d6d616e616765722f53637265656e25323053686f74253230323032362d30332d3139253230617425323032312e33372e35302e706e67)](https://camo.githubusercontent.com/506193fbfe3457602bf59e8b7cd39b4dcfc224edf7383d0f67d0278ea9b9ab14/68747470733a2f2f73332e736c696d616e692e6465762f6d656469612d6d616e616765722f53637265656e25323053686f74253230323032362d30332d3139253230617425323032312e33372e35302e706e67)

### Move Action Dialoge

[](#move-action-dialoge)

[![File Details](https://camo.githubusercontent.com/a49783802dc3532c959c5f2ad4542dfe4248160af1fd7f90fcafdb281e80ef5a/68747470733a2f2f73332e736c696d616e692e6465762f6d656469612d6d616e616765722f53637265656e25323053686f74253230323032362d30332d3139253230617425323032312e33362e33362e706e67)](https://camo.githubusercontent.com/a49783802dc3532c959c5f2ad4542dfe4248160af1fd7f90fcafdb281e80ef5a/68747470733a2f2f73332e736c696d616e692e6465762f6d656469612d6d616e616765722f53637265656e25323053686f74253230323032362d30332d3139253230617425323032312e33362e33362e706e67)

### Filtering by Type (Document) and Sorting By size

[](#filtering-by-type-document-and-sorting-by-size)

[![Image Editor](https://camo.githubusercontent.com/c30333f7a8e487808a61cbaa7b62b186ca625d15ccae7a548452332872425993/68747470733a2f2f73332e736c696d616e692e6465762f6d656469612d6d616e616765722f53637265656e25323053686f74253230323032362d30332d3139253230617425323032312e33392e32342e706e67)](https://camo.githubusercontent.com/c30333f7a8e487808a61cbaa7b62b186ca625d15ccae7a548452332872425993/68747470733a2f2f73332e736c696d616e692e6465762f6d656469612d6d616e616765722f53637265656e25323053686f74253230323032362d30332d3139253230617425323032312e33392e32342e706e67)

### Rich Text Integration, Media Picker, MediaEntries

[](#rich-text-integration-media-picker-mediaentries)

[![Bulk Actions](https://camo.githubusercontent.com/f5ad14f46a64286678bf7b7c8de24939ecdd4f1d815f15a29db68291589303f0/68747470733a2f2f73332e736c696d616e692e6465762f6d656469612d6d616e616765722f53637265656e25323053686f74253230323032362d30332d3139253230617425323032312e34302e34312e706e67)](https://camo.githubusercontent.com/f5ad14f46a64286678bf7b7c8de24939ecdd4f1d815f15a29db68291589303f0/68747470733a2f2f73332e736c696d616e692e6465762f6d656469612d6d616e616765722f53637265656e25323053686f74253230323032362d30332d3139253230617425323032312e34302e34312e706e67)

### Media Picker (in Action)

[](#media-picker-in-action)

[![Settings & Configuration](https://camo.githubusercontent.com/b9f0e6233298091a570f1416843853ae9ac769fa2e3abf900ba9a9ca340c94de/68747470733a2f2f73332e736c696d616e692e6465762f6d656469612d6d616e616765722f53637265656e25323053686f74253230323032362d30332d3139253230617425323032312e34312e32332e706e67)](https://camo.githubusercontent.com/b9f0e6233298091a570f1416843853ae9ac769fa2e3abf900ba9a9ca340c94de/68747470733a2f2f73332e736c696d616e692e6465762f6d656469612d6d616e616765722f53637265656e25323053686f74253230323032362d30332d3139253230617425323032312e34312e32332e706e67)

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

[](#installation)

You can install the package via composer:

```
composer require slimani/filament-media-manager
```

```
# Publish Media Manager migrations
php artisan vendor:publish --tag="media-manager-migrations"

# Publish Spatie MediaLibrary migrations (if not already published)
php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="medialibrary-migrations"

# Run migrations
php artisan migrate
```

You can publish the config file with:

```
php artisan vendor:publish --tag="media-manager-config"
```

Styling
-------

[](#styling)

If you are using a [Custom Filament Theme](https://filamentphp.com/docs/5.x/styling/overview#creating-a-custom-theme), you must include both the plugin's pre-defined styles and allow Tailwind to scan your components for utility classes.

Add the following lines to your `theme.css` file:

```
@import '../../../../vendor/slimani/filament-media-manager/resources/css/media-manager.css';

@source '../../../../vendor/slimani/filament-media-manager/resources/**/*';
```

### Why both?

[](#why-both)

- **@import**: Loads the custom component styles (like the media grid and picker layouts) that are unique to this plugin.
- **@source**: Allows Tailwind to scan the plugin's Blade files and generate any standard utility classes (like `p-4`, `flex`, etc.) that are used in the UI.

Usage
-----

[](#usage)

### Plugin Registration

[](#plugin-registration)

Register the plugin in your Panel Provider:

```
use Slimani\MediaManager\MediaManagerPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugin(MediaManagerPlugin::make());
}
```

### Prepare Model

[](#prepare-model)

To use the media manager with your models, add the `InteractsWithMediaFiles` trait. This is required for relationships and picker functionality.

#### 1. Prepare your Migration

[](#1-prepare-your-migration)

- **For single-file relationships** (like `avatar_id` or `cv_id`), you need to add the foreign key columns to your model's migration:

```
Schema::table('users', function (Blueprint $table) {
    $table->foreignId('avatar_id')->nullable()->constrained('media_files')->nullOnDelete();
    $table->foreignId('cv_id')->nullable()->constrained('media_files')->nullOnDelete();
});
```

- **For multiple/polymorphic relationships** (using `$this->mediaFiles()`), **no migration is required**. These relationships utilize the built-in `media_attachments` table included in the package migrations.

#### 2. Prepare your Model

[](#2-prepare-your-model)

Add the trait and define your specific relationships. Don't forget to add the foreign keys to your `$fillable` array.

```
namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Slimani\MediaManager\Concerns\InteractsWithMediaFiles;

class User extends Model
{
    use InteractsWithMediaFiles;

    protected $fillable = [
        'name',
        'email',
        'avatar_id',
        'cv_id',
    ];

    public function avatar(): \Illuminate\Database\Eloquent\Relations\BelongsTo
    {
        return $this->mediaFile('avatar_id');
    }

    public function cv(): \Illuminate\Database\Eloquent\Relations\BelongsTo
    {
        return $this->mediaFile('cv_id');
    }

    /**
     * Optional: Define custom collection relationships
     */
    public function documents(): \Illuminate\Database\Eloquent\Relations\MorphToMany
    {
        return $this->mediaFiles('documents');
    }
}
```

### Media Picker Field

[](#media-picker-field)

Use the `MediaPicker` field in your Filament forms. It uses the "Prepare Model" setup to handle file selection via a modal.

```
use Slimani\MediaManager\Form\MediaPicker;
use Filament\Forms\Form;

public static function form(Form $form): Form
{
    return $form
        ->schema([
            // Single file selection with specific names (requires InteractsWithMediaFiles in Model)
            MediaPicker::make('avatar_id')
                ->relationship('avatar')
                ->label('User Avatar')
                ->required(),

            MediaPicker::make('cv_id')
                ->relationship('cv')
                ->label('User CV'),

            // Multiple file selection (requires MorphToMany relationship in Model)
            MediaPicker::make('documents')
                ->relationship('documents')
                ->multiple()
                ->label('User Documents'),
        ]);
}
```

### Media Column

[](#media-column)

Display media in your Filament tables using the `MediaColumn`:

```
use Slimani\MediaManager\Tables\Columns\MediaColumn;

MediaColumn::make('avatar')
    ->circular()
    ->stacked()
```

### Media Infolist Entries

[](#media-infolist-entries)

The package provides two types of infolist entries: `MediaImageEntry` for image-specific features and `MediaFileEntry` for general file types with preview actions.

#### Media Image Entry

[](#media-image-entry)

Use `MediaImageEntry` when you want to display image thumbnails with native Filament `ImageEntry` features (circular, stacked, etc.) and media manager conversion support.

```
use Slimani\MediaManager\Infolists\Components\MediaImageEntry;

MediaImageEntry::make('avatar')
    ->label('User Avatar')
    ->conversion('thumb') // Optional, defaults to 'thumb'
    ->circular() // Native Filament feature
    ->width(100)
```

#### Media File Entry

[](#media-file-entry)

Use `MediaFileEntry` for a generic media display that includes an automatic "Open Preview" action, ideal for documents, videos, and mixed media.

```
use Slimani\MediaManager\Infolists\Components\MediaFileEntry;

MediaFileEntry::make('cv')
    ->label('User CV')
```

Both components support the media preview action that opens files in a slide-over.

### Rich Text Editor Integration

[](#rich-text-editor-integration)

The Media Manager integrates deeply with Filament's `RichEditor`, allowing you to insert images directly from your media library and ensuring that images always use fresh, valid URLs (supporting signed/temporary URLs).

#### 1. Prepare your Model

[](#1-prepare-your-model)

Implement the `HasRichContent` interface and use the `InteractsWithRichContent` trait. Then, use `setUpRichContent` to register the media manager configuration for your field.

```
use Filament\Forms\Components\RichEditor\Models\Concerns\InteractsWithRichContent;
use Filament\Forms\Components\RichEditor\Models\Contracts\HasRichContent;
use Slimani\MediaManager\Form\RichEditor\MediaManagerRichContentPlugin;

class User extends Authenticatable implements HasRichContent
{
    use InteractsWithRichContent;

    public function setUpRichContent(): void
    {
        $this->registerRichContent('resume')
            ->plugins([
                MediaManagerRichContentPlugin::make()
                    ->collection('preview')
                    ->directory('User/Resumes'),
            ]);
    }
}
```

> **Note**: Implementing `HasFileAttachmentProvider` in the plugin means that Filament automatically resolves the correct provider. You no longer need to call `fileAttachmentProvider()` manually on the attribute or renderer.

#### 2. Use in Forms

[](#2-use-in-forms)

Add the `MediaManagerRichContentPlugin` to your `RichEditor` component. This adds a "Media Library" button to the toolbar.

```
use Filament\Forms\Components\RichEditor;
use Slimani\MediaManager\Form\RichEditor\MediaManagerRichContentPlugin;

RichEditor::make('resume')
    ->plugins([
        MediaManagerRichContentPlugin::make()
            ->acceptedFileTypes(["image/*"]), // Optional: Limit to images only
    ])
```

#### 3. Use in Infolists (Dynamic Rendering)

[](#3-use-in-infolists-dynamic-rendering)

To ensure that images in your rich text always use fresh URLs (especially important if using temporary or signed URLs), use the `renderRichContent` method in your Infolist.

```
use Filament\Infolists\Components\TextEntry;

TextEntry::make('resume')
    ->html()
    ->state(fn ($record) => $record->renderRichContent('resume'))
```

This method parses the stored HTML and resolves each image ID into a fresh URL on the fly, solving the "expired link" problem entirely.

### Plugin Customization

[](#plugin-customization)

You can customize the Media Manager directly in your Panel Provider:

```
use Slimani\MediaManager\MediaManagerPlugin;

MediaManagerPlugin::make()
    ->navigationGroup('System')
    ->navigationLabel('Assets')
    ->navigationIcon('heroicon-o-folder')
    ->navigationSort(5)
    ->shouldRegisterNavigation(fn () => auth()->user()->isAdmin())
    ->headerWidgets([
        MyCustomWidget::class,
    ])
    ->footerWidgets([
        AnotherWidget::class,
    ])
    ->header(view('custom.header'))
    ->footer(view('custom.footer'))
    ->withVideoThumbnails() // Optional: Enable video thumbnails (requires FFMPEG)
```

#### Video Thumbnails

[](#video-thumbnails)

Thumbnail generation for videos is handled natively by the underlying Spatie MediaLibrary when **FFMPEG** and **FFProbe** are installed on your server.

To use this feature, you must install the FFMPEG PHP dependency:

```
composer require php-ffmpeg/php-ffmpeg
```

For more information on video processing requirements, please refer to the [Spatie MediaLibrary Documentation](https://spatie.be/docs/laravel-medialibrary/v11/advanced-usage/generating-thumbnails-for-videos).

#### Media Library Conversions

[](#media-library-conversions)

You can customize or add media conversions from your application's `AppServiceProvider` or a dedicated Service Provider. Default conversions (`thumb` and `preview`) are registered first, and your callback can override them or add new ones.

```
use Slimani\MediaManager\Models\File;
use Spatie\MediaLibrary\MediaCollections\Models\Media;

public function boot(): void
{
    File::registerMediaConversionsUsing(function (File $file, ?Media $media = null) {
        // Override default 'thumb' (300x300)
        $file->addMediaConversion('thumb')
            ->width(150)
            ->height(150)
            ->nonQueued();

        // Add a new custom conversion
        $file->addMediaConversion('square')
            ->width(500)
            ->height(500)
            ->nonQueued();

        // Default 'preview' (800x800) is kept if not overridden
    });
}
```

#### Using Conversions in Components

[](#using-conversions-in-components)

After defining your conversions, you can specify which one to use in your components using the `conversion()` method. This controls which conversion is used for the table thumbnail, infolist image, or form picker preview.

```
use Slimani\MediaManager\Tables\Columns\MediaColumn;
use Slimani\MediaManager\Infolists\Components\MediaImageEntry;
use Slimani\MediaManager\Form\MediaPicker;

// In Tables
MediaColumn::make('avatar')
    ->conversion('thumb')

// In Infolists
MediaImageEntry::make('avatar')
    ->conversion('preview')

MediaFileEntry::make('cv')
    ->conversion('thumb')

// In Forms (controls the picker's file preview)
MediaPicker::make('avatar_id')
    ->conversion('thumb')
```

All components default to the `thumb` conversion if none is specified.

Testing &amp; Support
---------------------

[](#testing--support)

### Seeders Example

[](#seeders-example)

To populate your media manager with initial data, you can use a seeder. Here is an example of how to set up folders and files:

```
use Slimani\MediaManager\Models\Folder;
use Slimani\MediaManager\Models\File;

public function run(): void
{
    $images = Folder::create(['name' => 'Project Images']);
    $docs = Folder::create(['name' => 'Documents']);

    // here should be the code if you have real files
    // for now we will use dummy data

    $banner = File::create([
        'name' => 'Main Banner',
        'folder_id' => $images->id,
        'size' => 1024,
        'extension' => 'jpg',
        'mime_type' => 'image/jpeg',
        'uploaded_by_user_id' => 1,
    ]);

    // Attach actual media using Spatie MediaLibrary
    $banner->addMediaFromUrl('https://picsum.photos/1200/800')
        ->toMediaCollection('default');
}
```

### Running Tests

[](#running-tests)

```
composer test
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](CONTRIBUTING.md) for details.

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

Please review [our security policy](SECURITY.md) on how to report security vulnerabilities.

Credits
-------

[](#credits)

- [CodeWithDennis - Select Tree](https://filamentphp.com/plugins/codewithdennis-select-tree)
- [HugoMyb - Media Action](https://filamentphp.com/plugins/hugomyb-media-action)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE) for more information.

###  Health Score

46

—

FairBetter than 92% of packages

Maintenance88

Actively maintained with recent releases

Popularity36

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity37

Early-stage or recently created project

 Bus Factor1

Top contributor holds 94.1% 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 ~3 days

Total

43

Last Release

16d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/889517e68d00e2c3709f76b1b944493e4303ff205c6a836108fb8dae6eb50cb6?d=identicon)[slimani](/maintainers/slimani)

---

Top Contributors

[![slimani-dev](https://avatars.githubusercontent.com/u/25089144?v=4)](https://github.com/slimani-dev "slimani-dev (64 commits)")[![mstfkhazaal](https://avatars.githubusercontent.com/u/47450090?v=4)](https://github.com/mstfkhazaal "mstfkhazaal (3 commits)")[![PascalKleindienst](https://avatars.githubusercontent.com/u/3470866?v=4)](https://github.com/PascalKleindienst "PascalKleindienst (1 commits)")

---

Tags

filament-pluginlaravelspatie-media-librarylaravelmedia libraryfilamentMedia Manager

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/slimani-filament-media-manager/health.svg)

```
[![Health](https://phpackages.com/badges/slimani-filament-media-manager/health.svg)](https://phpackages.com/packages/slimani-filament-media-manager)
```

###  Alternatives

[rawilk/profile-filament-plugin

Profile &amp; MFA starter kit for filament.

3915.5k](/packages/rawilk-profile-filament-plugin)[statikbe/laravel-filament-flexible-content-blocks

The Laravel Filament Flexible Content Blocks package helps you to easily create content in Filament for any model, with predefined or custom blocks, and foreach block an extendable Blade view component.

17927.9k6](/packages/statikbe-laravel-filament-flexible-content-blocks)[backstage/mails

View logged mails and events in a beautiful Filament UI.

16429.7k](/packages/backstage-mails)[stephenjude/filament-two-factor-authentication

Filament Two Factor Authentication: Google 2FA + Passkey Authentication

85240.3k9](/packages/stephenjude-filament-two-factor-authentication)[tapp/filament-form-builder

User facing form builder using Filament components

133.5k6](/packages/tapp-filament-form-builder)[marcelweidum/filament-passkeys

Use passkeys in your filamentphp app

6758.2k2](/packages/marcelweidum-filament-passkeys)

PHPackages © 2026

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