Dedupler Uploader Plugin by Maxim Khimusov
CommunityIt's Filament plugin that prevents duplicate file in storage by detecting files with identical content before saving them to storage: Single copy Instead of storing multiple copies of the same file
Author:
Maxim Khimusov
Package health
Automated checks of this plugin's Composer package
15 checks
- Skipped: GitHub Actions pinned to SHA
- Skipped: GitLab CI includes pinned to SHA
- Passed: Open security advisories
- Passed: Dependabot PR responsiveness — No open Dependabot PRs.
- Skipped: Renovate MR responsiveness
- Skipped: Dependabot or Renovate configured
- Skipped: Dependency update cooldown configured
- Failed: Provides a security policy — View details on Plumb
- Passed: Abandoned or archived — No consulted source marks the package abandoned (packagist, github).
- Passed: Commit and release recency — Active: last commit 0 days ago; last release 1 days ago.
-
Passed:
composer.lock not committed by library
—
composer.lockis absent from the released dist archive. - Passed: Dist archive is lean
-
Passed:
Current Laravel version supported
—
Package dependencies resolve together with current Laravel
13.0. -
Passed:
Current PHP version supported
—
Constraint
^8.1supports current PHP8.5. - Skipped: Current Symfony version supported
filament/
namespace. Review the source and install at your own risk. Found
malware or an unresolved security issue the author won't
address?
Report it
.
Documentation

#Overview
filament-dedupler-uploader is plugin for Filament that prevents duplicate file storage by detecting files with identical content before saving them to storage.
Instead of storing multiple copies of the same file, it uses content-based hashing (SHA1) to ensure each unique file is stored only once - regardless of how many times or by whom it is uploaded.
This is especially useful for applications where users frequently upload the same documents, images, or other files, helping to:
- Save disk space by eliminating redundant copies
- Maintain data integrity through content-based identification
- Reduce storage costs especially for SSD storage in 2026 ;)
#Key Features
- 🔍 Automatic deduplication - Files are compared by SHA1 hash before storage
- 📦 Seamless integration - Based on Filament's
FileUploadcomponent - 🔗 Smart relationships - Attaches
uniqueFilesrecords to Eloquent models via theDeduplabletrait - 📋 Infolist components - Display uploaded files with metadata (original name, size, SHA1 hash, download)
- 🗂️ Multiple file support - Handles single and multiple file uploads
#Requirements
- PHP 8.1+
- Laravel 12+
- Filament 5.x
#🚀 Quick Start
#1. Install the package
composer require maxkhim/filament-dedupler-uploader
php artisan dedupler:install
php artisan dedupler:check
#2. Add the Plugin
use Maxkhim\FilamentDeduplerUploader\FilamentDeduplerUploaderPlugin;
public function panel(Panel $panel): Panel
{
return $panel
// ...
->plugins([
FilamentDeduplerUploaderPlugin::make()
]);
}
#3. Prepare Your Model
Your Eloquent model can use the Deduplable trait from laravel-storage-dedupler for simplicity linking files:
use Illuminate\Database\Eloquent\Model;
use Maxkhim\Dedupler\Traits\Deduplable;
class Document extends Model
{
use Deduplable;
// The trait provides the relationship and attachUniqueFile() method
}
#4. Use the DeduplerFileUploader Component
Based on Filament's FileUpload component
use Maxkhim\FilamentDeduplerUploader\Forms\Components\DeduplerFileUploader;
DeduplerFileUploader::make('attachment')
->multiple()
#5. Display Uploaded Files
Displays files in a table with original name, size, download button, and SHA1 hash, using standard Filament components under hood:
use Maxkhim\FilamentDeduplerUploader\Infolists\DeduplerFilesRepeatableEntry;
use Filament\Infolists\Components\Section;
use Filament\Infolists\Components\TextEntry;
use Filament\Infolists\Infolist;
public function infolist(Infolist $infolist): Infolist
{
return $infolist->schema([
Section::make('Uploaded Files')
->schema([
DeduplerFilesRepeatableEntry::make()
->label('Documents'),
]),
]);
}
#How It Works
#Upload Flow
- User uploads a file in the Filament form and saves record
- SHA1 hash is computed from the file content
- Deduplication check - If a file with the same hash already exists in storage, it is reused instead of being saved again
- Relationship attachment - The polymorphic
uniqueFilesrecord attribute is attached to the model via theDeduplabletrait - Form submission - The file path and SHA1 hash is stored in the database
#Deletion Behavior
Physical file deletion is managed by the laravel-storage-dedupler package. When a file is removed from a model, the relationship is detached.
#License
The MIT License (MIT). Please see License File for more information.
#Credits
This package is built on top of maxkhim/laravel-storage-dedupler.
Featured Plugins
A selection of plugins curated by the Filament team
Custom Dashboards
Let your users build and share their own dashboards with a drag-and-drop interface. Define your data sources in PHP and let them do the rest.
Filament
Advanced Tables (formerly Filter Sets)
Supercharge your tables with powerful features like user-customizable views, quick filters, multi-column sorting, advanced table searching, convenient view management, and more. Compatible with Resource Panel Tables, Relation Managers, Table Widgets, and Table Builder!
Kenneth Sese
Spotlight Pro
Browse your Filament Panel with ease. Filament Spotlight Pro adds a Spotlight like Command Palette to your Filament Panel.
Dennis Koch