Filament Deduplication

Find duplicates before
they find you.

Detect and manage duplicate records in your Filament panels with configurable matching rules, weighted scoring, and one-click analysis. Pairs perfectly with Model Merger.

Filament v3

Full support for Filament v3.

Laravel 10, 11 & 12

Compatible with all modern Laravel versions.

PHP 8.1+

Uses modern PHP features and strict typing.

Smart duplicate detection for Filament.

Four matching algorithms, weighted scoring, and configurable thresholds — find every duplicate.

Configurable matching rules.

Define rules per resource with four matching types. Combine exact matching for IDs, fuzzy text matching for names, Levenshtein distance for codes, and numeric range for prices.

php
public static function getDeduplicationRules(): array
{
    return [
        'name' => [
            'type' => 'similar_text',
            'weight' => 3,
        ],
        'price' => [
            'type' => 'numeric_range',
            'weight' => 2,
            'tolerance' => 0.15, // 15% tolerance
        ],
        'category_id' => [
            'type' => 'exact',
            'weight' => 1,
        ],
    ];
}

Exact

Perfect match on field values

Similar Text

Fuzzy text comparison with PHP similar_text()

Levenshtein

Edit distance for codes and short strings

Numeric Range

Tolerance-based matching for numbers and prices

Widget Alpha vs Widget Alpha Pro 98.5%
Gadget Pro vs Gadget Pro V2 83.3%
Garden Hose 50ft vs Garden Hose 50 ft 79.6%

Weighted similarity scoring.

Each matching rule has a weight. Name matches matter more than category matches? Give them a higher weight. The total similarity score reflects what's important to you. Color-coded badges make it easy to spot high-confidence duplicates.

One-click duplicate analysis.

Add a dedicated Duplicates page to any Filament Resource. Click "Analyse" and instantly see all duplicate groups with their similarity scores. No configuration needed beyond the rules.

php
use PtPlugins\FilamentDeduplication\Concerns\HasDeduplication;

class ProductResource extends Resource
{
    use HasDeduplication;

    public static function getPages(): array
    {
        return [
            'index' => Pages\ListProducts::route('/'),
            'duplicates' => Pages\DeduplicateProducts::route('/duplicates'),
        ];
    }
}
One "Analyse" button triggers full scan
Results grouped by duplicate pairs
Color-coded similarity badges (red, amber, yellow)
Configurable threshold filters out low-confidence matches
Merge links appear directly in duplicate results
Opens Model Merger comparison page
Side-by-side review before merging
Complete workflow: Detect → Review → Merge

Seamless Model Merger integration.

When Model Merger is installed, each duplicate group shows a "Merge" link that opens the side-by-side comparison page. The complete detect-review-merge workflow, without leaving Filament.

More reasons you'll love Filament Deduplication

Built to catch every duplicate. Zero false positives with the right threshold.

HasDeduplication Trait

Add duplicate detection to any Resource with a single trait. Define rules and you're done.

Per-Resource Threshold

Set different similarity thresholds for different resources. Products need 70%, customers need 90%.

i18n Ready

Full translation support. Ships with English and Serbian. Add your own language in minutes.

Resource Integration

Adds a "Duplicates" navigation item to your Resource sidebar. Fully integrated with Filament's UI.

Similarity Badges

Color-coded badges (red/amber/yellow) give instant visual feedback on match confidence.

Configurable Columns

Choose which columns appear in the duplicate comparison view with getDeduplicationColumns().

Get started in 3 steps

From purchase to detecting duplicates in your Filament panel — it only takes a few minutes.

1

Create an account

Register for free. No credit card required until you purchase.

2

Purchase a license

Choose Solo or Unlimited. Secure payment via Paddle. Instant access.

3

Install via Composer

Add our private repository and composer require — done.

Pricing plans

Choose the plan that fits your needs. Keep using your current version forever, even after your update period ends.

Solo

$49 / 1 site / 1 year updates

Perfect for freelancers and individual developers working on a single project.

Get immediate access

After a year, optionally renew for $29 to continue receiving updates or stay on your current version forever.

Unlimited

Popular
$149 / unlimited sites / 1 year updates

For developers and agencies building multiple client projects.

Get immediate access

After a year, optionally renew for $89 to continue receiving updates or stay on your current version forever.

Solo Unlimited
Activations 1 site Unlimited
1 year of updates included
Use current version forever
All 4 matching types
Composer access via Satis
Full source code
E-mail support
Priority support

Invoice available

Download after purchase

E-mail support

Get help when you need it

Regular updates

Continuously improved

Save 20%

Better together — Data Quality Bundle

Get Filament Deduplication + Filament Model Merger together and save 20%. Detect duplicates, review them, and merge — all in one workflow.

View Bundle →

Frequently asked questions

Everything you need to know about Filament Deduplication

Four types: exact (perfect match), similar_text (PHP's similar_text function for fuzzy matching), levenshtein (edit distance for codes), and numeric_range (tolerance-based for prices and quantities).

Each rule has a weight. The total similarity score is calculated as a weighted average of all rule scores. For example, if "name" has weight 3 and "category" has weight 1, a name match contributes 3x more to the total score.

Absolutely. Deduplication works standalone — it detects and displays duplicate groups. Model Merger integration is optional and auto-detected when installed.

After your first year, you can optionally renew your license at a discounted rate to continue receiving updates. If you choose not to renew, you keep permanent access to the version you had when your update period expired.

Yes! Contact us at mihailo@ptplugins.com and we'll apply a prorated upgrade. You only pay the difference ($100).

Set getDeduplicationThreshold() on your Resource. Higher values (e.g. 90) catch only near-exact duplicates. Lower values (e.g. 60) cast a wider net. Adjust per Resource based on your data quality needs.

Yes, we offer a 7-day money-back guarantee. If the plugin doesn't work for your use case, contact us and we'll process a full refund. See our refund policy for details.

Ready to clean up your data?

Start detecting duplicates in minutes. 7-day money-back guarantee.