PHPackages                             tomatophp/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. [Image &amp; Media](/categories/media)
4. /
5. tomatophp/filament-media-manager

ActiveLibrary[Image &amp; Media](/categories/media)

tomatophp/filament-media-manager
================================

Manage your media files using spatie media library with easy to use GUI for FilamentPHP

4.0.3(8mo ago)14852.3k↓42%38[1 issues](https://github.com/tomatophp/filament-media-manager/issues)[4 PRs](https://github.com/tomatophp/filament-media-manager/pulls)3MITPHPPHP ^8.2|^8.3|^8.4CI passing

Since Jun 23Pushed 1w ago3 watchersCompare

[ Source](https://github.com/tomatophp/filament-media-manager)[ Packagist](https://packagist.org/packages/tomatophp/filament-media-manager)[ GitHub Sponsors](https://github.com/fadymondy)[ RSS](/packages/tomatophp-filament-media-manager/feed)WikiDiscussions master Synced 2d ago

READMEChangelog (10)Dependencies (18)Versions (28)Used By (3)

[![Screenshot](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/fadymondy-tomato-media-manager.jpg)](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/fadymondy-tomato-media-manager.jpg)

Filament media manager
======================

[](#filament-media-manager)

[![Latest Stable Version](https://camo.githubusercontent.com/fcc8828a4018af0413b1b9d87a1bc5048bf6929ead16450df1c0f7e45d696f00/68747470733a2f2f706f7365722e707567782e6f72672f746f6d61746f7068702f66696c616d656e742d6d656469612d6d616e616765722f76657273696f6e2e737667)](https://packagist.org/packages/tomatophp/filament-media-manager)[![License](https://camo.githubusercontent.com/b1f47c23385898e33964dee0084d646ea16a925817d78eebe5745ef5631c3957/68747470733a2f2f706f7365722e707567782e6f72672f746f6d61746f7068702f66696c616d656e742d6d656469612d6d616e616765722f6c6963656e73652e737667)](https://packagist.org/packages/tomatophp/filament-media-manager)[![Downloads](https://camo.githubusercontent.com/8fe28310b26cad916d99f998203a6324106d36c3ce320a08991d8eef89e95423/68747470733a2f2f706f7365722e707567782e6f72672f746f6d61746f7068702f66696c616d656e742d6d656469612d6d616e616765722f642f746f74616c2e737667)](https://packagist.org/packages/tomatophp/filament-media-manager)[![Dependabot Updates](https://github.com/tomatophp/filament-media-manager/actions/workflows/dependabot/dependabot-updates/badge.svg)](https://github.com/tomatophp/filament-media-manager/actions/workflows/dependabot/dependabot-updates)[![PHP Code Styling](https://github.com/tomatophp/filament-media-manager/actions/workflows/fix-php-code-styling.yml/badge.svg)](https://github.com/tomatophp/filament-media-manager/actions/workflows/fix-php-code-styling.yml)[![Tests](https://github.com/tomatophp/filament-media-manager/actions/workflows/tests.yml/badge.svg)](https://github.com/tomatophp/filament-media-manager/actions/workflows/tests.yml)

Manage your media files using spatie media library with easy to use GUI for FilamentPHP

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

[](#installation)

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

now you need to publish media migration

```
php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="medialibrary-migrations"
```

after installing your package, please run this command

```
php artisan filament-media-manager:install
```

finally, register the plugin on `/app/Providers/Filament/AdminPanelProvider.php`, if you like to use GUI and Folder Browser.

```
->plugin(
    \TomatoPHP\FilamentMediaManager\FilamentMediaManagerPlugin::make()
        ->allowSubFolders()
        ->navigationGroup()
        ->navigationIcon()
        ->navigationLabel()
)
```

Features
--------

[](#features)

- 📁 Manage your media files using spatie media library
- 📂 Create folders and subfolders
- 🔒 Set password for folders with secure access
- 📝 Upload Files with Custom Fields using `->schema()`
- 🤖 Auto Create Folders for Model/Collection/Record
- 🌍 RTL/Multi Language Support
- 🎨 Full Dark Mode Support
- 🖼️ MediaManagerPicker - Browse and select media from folder structure
- ⚡ MediaManagerInput - Direct file upload with Spatie Media Library
- 🔧 InteractsWithMediaManager Trait - Easy model integration
- 📊 Live Preview with thumbnails and file information
- ✅ Selection validation (min/max items)
- 🔄 Auto-save and modal management
- 🏷️ Collection Names - Multiple pickers on same page with separate collections
- 📱 Responsive Images - Automatic responsive image generation with Spatie
- 🎯 Drag &amp; Drop Reordering - Visual reordering of selected media

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

[](#screenshots)

[![Folders](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/folders.png)](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/folders.png)[![Folder Password](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/folder-password.png)](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/folder-password.png)[![Media](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/media.png)](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/media.png)[![Add Media](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/add-media.png)](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/add-media.png)[![Add Sub Folder](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/create-sub-folder.png)](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/create-sub-folder.png)[![Preview File](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/preview-file.png)](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/preview-file.png)[![Preview Images](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/preview-image.png)](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/preview-image.png)[![Edit Media](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/edit-media-meta.png)](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/edit-media-meta.png)[![Media Inputs](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/media-input.png)](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/media-input.png)[![Media Picker Empty State](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/media-picker-empty.png)](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/media-picker-empty.png)[![Media Picker Selected Files](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/media-picker-selected.png)](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/media-picker-selected.png)[![Media Picker Browser](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/media-picker-browser.png)](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/media-picker-browser.png)[![Media Picker After Select](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/media-picker-after-select.png)](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/media-picker-after-select.png)[![Media Picker Folders](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/media-picker-folder.png)](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/media-picker-folder.png)[![Media Picker Password Folders](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/media-picker-password.png)](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/media-picker-password.png)[![Media Picker Selected Files](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/media-picker-selected-files.png)](https://raw.githubusercontent.com/tomatophp/filament-media-manager/master/arts/media-picker-selected-files.png)

Usage
-----

[](#usage)

you can use the media manager by adding this code to your filament component

```
use TomatoPHP\FilamentMediaManager\Form\MediaManagerInput;

public function form(Schema $schema): Schema
{
    return $schema->components([
        MediaManagerInput::make('images')
            ->disk('public')
            ->schema([
                Forms\Components\TextInput::make('title')
                    ->required()
                    ->maxLength(255),
                Forms\Components\TextInput::make('description')
                    ->required()
                    ->maxLength(255),
            ]),
    ]);
}
```

or you can use Media Library Picker like this

```
use TomatoPHP\FilamentMediaManager\Form\MediaManagerPicker;

public function form(Schema $schema): Schema
{
    return $schema->components([
         MediaManagerPicker::make('media')
          ->multiple() // or ->single() (default is multiple)
          ->maxItems(5) // Maximum number of items that can be selected
          ->minItems(2) // Minimum number of items required
          ->collection('products') // Separate collection for this picker
          ->responsiveImages() // Enable responsive images generation
    ]);
}
```

and on your model to manage your attached media

```
use TomatoPHP\FilamentMediaManager\Traits\InteractsWithMediaManager;

class Model extends Authenticatable {
    use InteractsWithMediaManager;
}
```

### MediaManagerPicker Features

[](#mediamanagerpicker-features)

- **Multiple/Single Selection**: Use `->multiple()` or `->single()` to control selection mode
- **Item Limits**: Set `->maxItems(n)` and `->minItems(n)` to enforce selection constraints
- **Collection Names**: Use `->collection('name')` to separate media for different pickers on the same page
- **Responsive Images**: Use `->responsiveImages()` to automatically generate responsive images with Spatie
- **Drag &amp; Drop Reordering**: Visually reorder selected media items with drag handles
- **Password Protected Folders**: Browse secure folders with password verification
- **Live Preview**: See selected items with preview thumbnails, file info, and remove buttons
- **Dark Mode Support**: Fully styled for both light and dark themes
- **Auto-close Modal**: Modal automatically closes after selection with success notification

### Multiple Pickers with Collections

[](#multiple-pickers-with-collections)

You can use multiple MediaManagerPicker components on the same page by using collection names:

```
use TomatoPHP\FilamentMediaManager\Form\MediaManagerPicker;

public function form(Schema $schema): Schema
{
    return $schema->components([
        // Featured image picker
        MediaManagerPicker::make('featured_image')
            ->collection('featured')
            ->single()
            ->label('Featured Image'),

        // Gallery picker
        MediaManagerPicker::make('gallery_images')
            ->collection('gallery')
            ->multiple()
            ->maxItems(10)
            ->label('Gallery'),

        // Attachments picker with responsive images
        MediaManagerPicker::make('hero_image')
            ->collection('hero')
            ->single()
            ->responsiveImages()
            ->label('Hero Image'),
    ]);
}
```

Each picker maintains its own separate media attachments based on the collection name.

Working with Media in Models
----------------------------

[](#working-with-media-in-models)

### InteractsWithMediaManager Trait

[](#interactswithmediamanager-trait)

Use the `InteractsWithMediaManager` trait in your models to easily access and manage media attached via MediaManagerPicker:

```
use TomatoPHP\FilamentMediaManager\Traits\InteractsWithMediaManager;

class Product extends Model
{
    use InteractsWithMediaManager;
}
```

#### Available Methods

[](#available-methods)

```
// Get all media attached via MediaManagerPicker
$product->getMediaManagerMedia(); // All media
$product->getMediaManagerMedia('featured'); // From specific collection

// Get media by UUIDs
$product->getMediaManagerMediaByUuids(['uuid-1', 'uuid-2']);

// Get media from Spatie collection (MediaManagerInput)
$product->getMediaManagerInputMedia('images');

// Attach media programmatically
$product->attachMediaManagerMedia(['uuid-1', 'uuid-2']); // To default collection
$product->attachMediaManagerMedia(['uuid-1', 'uuid-2'], 'gallery'); // To specific collection

// Detach media
$product->detachMediaManagerMedia(['uuid-1']); // Detach specific from default
$product->detachMediaManagerMedia(['uuid-1'], 'gallery'); // From specific collection
$product->detachMediaManagerMedia(null, 'gallery'); // Detach all from collection

// Sync media (replace all with new)
$product->syncMediaManagerMedia(['uuid-3', 'uuid-4']); // Default collection
$product->syncMediaManagerMedia(['uuid-3', 'uuid-4'], 'gallery'); // Specific collection

// Check if media exists
$product->hasMediaManagerMedia('uuid-1'); // In default collection
$product->hasMediaManagerMedia('uuid-1', 'featured'); // In specific collection

// Get first media item
$product->getFirstMediaManagerMedia(); // From default
$product->getFirstMediaManagerMedia('featured'); // From collection

// Get media URL
$product->getMediaManagerUrl(); // First from default collection
$product->getMediaManagerUrl('featured'); // First from featured collection

// Get all media URLs
$product->getMediaManagerUrls(); // All from default
$product->getMediaManagerUrls('gallery'); // All from gallery collection

// Responsive Images Methods
$product->getMediaManagerResponsiveImages('hero'); // Get responsive data
$product->getMediaManagerSrcset('hero'); // Get srcset for first media
$product->getMediaManagerSrcsets('gallery'); // Get all srcsets
$product->getMediaManagerResponsiveUrls('hero'); // Get responsive URLs for first
$product->getAllMediaManagerResponsiveUrls('gallery'); // Get all responsive URLs
```

#### Usage Examples

[](#usage-examples)

```
// In your blade template - Basic usage
@php
    $product = App\Models\Product::find(1);
    $images = $product->getMediaManagerMedia('gallery');
@endphp

    @foreach($images as $image)

    @endforeach

// Get featured image from specific collection
@php
    $featuredUrl = $product->getMediaManagerUrl('featured') ?? '/default-image.png';
@endphp

// Responsive Images with srcset
@php
    $heroSrcset = $product->getMediaManagerSrcset('hero');
    $heroUrl = $product->getMediaManagerUrl('hero');
@endphp

// Gallery with responsive images
@foreach($product->getMediaManagerResponsiveImages('gallery') as $item)

@endforeach

// Get user avatar from specific collection
@php
    $avatarUrl = auth()->user()->getMediaManagerUrl('avatar') ?? '/default-avatar.png';
@endphp

```

For complete documentation of the trait, see [TRAITS.md](./docs/TRAITS.md).

Important: Run Migrations
-------------------------

[](#important-run-migrations)

After installing or updating the package, make sure to run migrations to add the required database columns:

```
php artisan migrate
```

This will add the following columns to the `media_has_models` table:

- `order_column` - For drag &amp; drop reordering functionality
- `collection_name` - For multiple pickers with separate collections
- `responsive_images` - For responsive images support

Add Custom Preview to selected type on the media manager
--------------------------------------------------------

[](#add-custom-preview-to-selected-type-on-the-media-manager)

you can add custom preview to selected type on the media manager by add this code to your provider

```
use TomatoPHP\FilamentMediaManager\Facade\FilamentMediaManager;
use TomatoPHP\FilamentMediaManager\Services\Contracts\MediaManagerType;

public function boot() {
     FilamentMediaManager::register([
        MediaManagerType::make('.pdf')
            ->icon('bxs-file-pdf')
            ->preview('media-manager.pdf'),
    ]);
}
```

in your view file you can use it like this

```

    #the-canvas {
        border: 1px solid black;
        direction: ltr;
    }

    // If absolute URL from the remote server is provided, configure the CORS
    // header on that server.
    var url = "{{ $media->getUrl() }}";

    // Loaded via  tag, create shortcut to access PDF.js exports.
    var { pdfjsLib } = globalThis;

    // The workerSrc property shall be specified.
    pdfjsLib.GlobalWorkerOptions.workerSrc = '//mozilla.github.io/pdf.js/build/pdf.worker.mjs';

    // Asynchronous download of PDF
    var loadingTask = pdfjsLib.getDocument(url);
    loadingTask.promise.then(function(pdf) {

        // Fetch the first page
        var pageNumber = 1;
        pdf.getPage(pageNumber).then(function(page) {
            var scale = 1;
            var viewport = page.getViewport({scale: scale});

            // Prepare canvas using PDF page dimensions
            var canvas = document.getElementById('the-canvas');
            var context = canvas.getContext('2d');
            canvas.height = viewport.height;
            canvas.width = viewport.width;

            // Render PDF page into canvas context
            var renderContext = {
                canvasContext: context,
                viewport: viewport
            };
            var renderTask = page.render(renderContext);
        });
    }, function (reason) {
        // PDF loading error
        console.error(reason);
    });

```

you can attach global `js` or `css` file to the media manager by add this code to your provider

```
use TomatoPHP\FilamentMediaManager\Facade\FilamentMediaManager;
use TomatoPHP\FilamentMediaManager\Services\Contracts\MediaManagerType;

public function boot() {
     FilamentMediaManager::register([
        MediaManagerType::make('.pdf')
            ->js('https://mozilla.github.io/pdf.js/build/pdf.mjs'),
            ->css('https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.3.136/pdf_viewer.min.css'),
            ->icon('bxs-file-pdf')
            ->preview('media-manager.pdf'),
    ]);
}
```

please note that the `name ` of the component will be the same name of the collection.

Allow Sub Folders
-----------------

[](#allow-sub-folders)

you can allow create and manage subfolders on your media manager on `/app/Providers/Filament/AdminPanelProvider.php`

```
->plugins([
    \TomatoPHP\FilamentMediaManager\FilamentMediaManagerPlugin::make()
        ->allowSubFolders()
])
```

Allow User Access
-----------------

[](#allow-user-access)

now you can allow user to access selected folder and restract user to access each other folders if the folder is not public on `/app/Providers/Filament/AdminPanelProvider.php`

```
->plugin(
    \TomatoPHP\FilamentMediaManager\FilamentMediaManagerPlugin::make()
        ->allowUserAccess()
)
```

now on your user model you can use this trait to allow user to access selected folder

```
use TomatoPHP\FilamentMediaManager\Traits\InteractsWithMediaFolders;

class User extends Authenticatable
{
    use InteractsWithMediaFolders;
}
```

**NOTE** don't forget to migrate after update the plugin

Folders API
-----------

[](#folders-api)

now you can access your media and folders using API you have 2 endpoints

- `/api/folders` to get all folders
- `/api/folders/{id}` to get folder by id with sub folders and media files

to allow this feature, you need to publish the config file by use this command

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

then you can set `api.active` to `true` on the config file

```
'api' => [
    "active" => true,
],
```

Publish Assets
--------------

[](#publish-assets)

you can publish config file by use this command

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

you can publish a view file by using this command

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

you can publish a language file by using this command

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

you can publish the migrations file by using this command

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

Testing
-------

[](#testing)

This package includes comprehensive test suites for all major features. Tests are written using [Pest PHP](https://pestphp.com/).

### Running Tests

[](#running-tests)

Run all tests:

```
composer test
```

Run a specific test file:

```
./vendor/bin/pest tests/src/MediaManagerPickerTest.php
```

Run with coverage:

```
./vendor/bin/pest --coverage
```

### Test Coverage

[](#test-coverage)

The test suite includes:

- **MediaManagerPickerTest** - Tests for MediaManagerPicker component, folder navigation, password protection, selection validation, and file upload
- **MediaManagerInputTest** - Tests for MediaManagerInput component, file upload, media retrieval, deletion, and custom schema
- **InteractsWithMediaManagerTest** - Tests for the trait methods including attach, detach, sync, and URL generation

For detailed testing documentation, see [tests/README.md](./tests/README.md)

Code Style
----------

[](#code-style)

if you like to fix the code style, just use this command

```
composer format
```

PHPStan
-------

[](#phpstan)

if you like to check the code by `PHPStan` just use this command

```
composer analyse
```

Other Filament Packages
-----------------------

[](#other-filament-packages)

Check out our [Awesome TomatoPHP](https://github.com/tomatophp/awesome)

###  Health Score

59

—

FairBetter than 98% of packages

Maintenance81

Actively maintained with recent releases

Popularity48

Moderate usage in the ecosystem

Community29

Small or concentrated contributor base

Maturity68

Established project with proven stability

 Bus Factor1

Top contributor holds 70.8% 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 ~22 days

Recently: every ~3 days

Total

23

Last Release

257d ago

Major Versions

v1.1.3 → v2.x-dev2025-02-26

v1.1.6 → 4.0.02025-10-07

PHP version history (2 changes)v1.0.0PHP ^8.1|^8.2

v2.x-devPHP ^8.2|^8.3|^8.4

### Community

Maintainers

![](https://www.gravatar.com/avatar/2147eb2fca7ab5f0124d0fafd88ba2d2a5dfa3a0036fb8872d1084b7cba29366?d=identicon)[fadymondy](/maintainers/fadymondy)

---

Top Contributors

[![fadymondy](https://avatars.githubusercontent.com/u/11937812?v=4)](https://github.com/fadymondy "fadymondy (51 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (4 commits)")[![aspirantzhang](https://avatars.githubusercontent.com/u/24559988?v=4)](https://github.com/aspirantzhang "aspirantzhang (3 commits)")[![AzizEmir](https://avatars.githubusercontent.com/u/101357256?v=4)](https://github.com/AzizEmir "AzizEmir (2 commits)")[![tlegenbayangali](https://avatars.githubusercontent.com/u/39906549?v=4)](https://github.com/tlegenbayangali "tlegenbayangali (2 commits)")[![jvitasek](https://avatars.githubusercontent.com/u/8986306?v=4)](https://github.com/jvitasek "jvitasek (1 commits)")[![mvd81](https://avatars.githubusercontent.com/u/5435962?v=4)](https://github.com/mvd81 "mvd81 (1 commits)")[![rahmatsubandi](https://avatars.githubusercontent.com/u/61180713?v=4)](https://github.com/rahmatsubandi "rahmatsubandi (1 commits)")[![SephGER](https://avatars.githubusercontent.com/u/2600864?v=4)](https://github.com/SephGER "SephGER (1 commits)")[![slimani-dev](https://avatars.githubusercontent.com/u/25089144?v=4)](https://github.com/slimani-dev "slimani-dev (1 commits)")[![g1R87](https://avatars.githubusercontent.com/u/64629838?v=4)](https://github.com/g1R87 "g1R87 (1 commits)")[![baimtheelite](https://avatars.githubusercontent.com/u/30390302?v=4)](https://github.com/baimtheelite "baimtheelite (1 commits)")[![chrillep](https://avatars.githubusercontent.com/u/1267931?v=4)](https://github.com/chrillep "chrillep (1 commits)")[![ARL-Steve](https://avatars.githubusercontent.com/u/46937114?v=4)](https://github.com/ARL-Steve "ARL-Steve (1 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (1 commits)")

---

Tags

filament-pluginmediamedia-managerspaitespatie-laravel-medialibraryphpspatielaravelmanagermediamedia libraryfilament

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

Type Coverage Yes

### Embed Badge

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

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

###  Alternatives

[slimani/filament-media-manager

A media manager plugin for Filament.

126.9k](/packages/slimani-filament-media-manager)[awcodes/filament-curator

A media picker plugin for FilamentPHP.

437356.9k24](/packages/awcodes-filament-curator)[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.

17625.6k4](/packages/statikbe-laravel-filament-flexible-content-blocks)[alizharb/filament-activity-log

A powerful, feature-rich activity logging solution for FilamentPHP v4 &amp; v5 with timeline views, dashboard widgets, and revert actions.

2871.8k3](/packages/alizharb-filament-activity-log)[rawilk/profile-filament-plugin

Profile &amp; MFA starter kit for filament.

3914.6k](/packages/rawilk-profile-filament-plugin)[tapp/filament-form-builder

User facing form builder using Filament components

132.4k3](/packages/tapp-filament-form-builder)

PHPackages © 2026

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