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(7mo ago)14543.9k↓12.9%38[3 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 1mo 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 1mo ago

READMEChangelog (10)Dependencies (18)Versions (26)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 99% of packages

Maintenance78

Regular maintenance activity

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

210d 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

[tomatophp/filament-alerts

Send notification to users using notification templates and multi notification channels, it's support Filament Native Notification Service with macro, and a full integration to FCM service worker notifications

7910.8k3](/packages/tomatophp-filament-alerts)[tomatophp/filament-types

Manage any type on your app in Database with easy to use Resource for FilamentPHP

5616.7k8](/packages/tomatophp-filament-types)[webplusm/gallery-json-media

a filament media storing in a Json field

196.0k](/packages/webplusm-gallery-json-media)[tomatophp/filament-accounts

Manage your multi accounts inside your app using 1 table with multi auth and a lot of integrations

748.3k7](/packages/tomatophp-filament-accounts)[okipa/laravel-medialibrary-ext

Extra features for spatie/laravel-medialibrary package.

1011.2k](/packages/okipa-laravel-medialibrary-ext)[tomatophp/filament-payments

Manage your payments inside FilamentPHP app with multi payment gateway integration

542.3k](/packages/tomatophp-filament-payments)

PHPackages © 2026

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