PHPackages                             kirbycode/media-hub-pro - 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. kirbycode/media-hub-pro

ActiveKirby-plugin[Image &amp; Media](/categories/media)

kirbycode/media-hub-pro
=======================

Centralized media library for Kirby CMS 5 — folders, tags, smart filters, bulk operations, duplicate detection, and a custom picker field.

v1.0.6(today)37↑2471.4%proprietaryJavaScript

Since Jun 26Pushed todayCompare

[ Source](https://github.com/logitechshiv/kirby-media-hub-pro)[ Packagist](https://packagist.org/packages/kirbycode/media-hub-pro)[ Docs](https://github.com/logitechshiv/kirby-media-hub-pro)[ RSS](/packages/kirbycode-media-hub-pro/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (2)Versions (8)Used By (0)

Kirby Media Hub Pro
===================

[](#kirby-media-hub-pro)

A centralized media library plugin for [Kirby CMS](https://getkirby.com) 5 — WordPress-style asset management built directly into the Panel.

[![Kirby Media Hub — Panel overview](screenshots/preview.png)](screenshots/preview.png)

---

Versions
--------

[](#versions)

VersionPriceKey additions**V1 — Pro**FreeFolders, search, metadata, picker field, usage tracking, stats**V2 — Pro Smart**€40+ 2-level subfolders, tags, smart filters, bulk operations, duplicate detection, auto WebP conversion, image compression, upload progress indicator---

Features
--------

[](#features)

### V1 — Core

[](#v1--core)

- **Dedicated Panel area** — full-screen Media Hub accessible from the Kirby sidebar
- **Folder organisation** — create and delete folders to keep assets tidy
- **Drag-and-drop upload** — upload files directly to any folder
- **Full-text search** — searches filename, title, alt text, description, copyright, and photographer simultaneously
- **File metadata** — edit title, alt text, description, copyright, photographer, and upload date per file
- **`mediahubpicker` field** — custom field type for any blueprint; works inside structure fields
- **UUID-based references** — saved as `file://uuid` — identical format to Kirby's native `files` field
- **Usage tracking** — see every page that references a given file
- **Dashboard stats** — total files, unused files, type breakdown, recent uploads, largest files
- **Auto-refresh stats** — counters update immediately after upload or delete
- **No build step** — pure PHP + Vue 3 template strings

### V2 — Pro Smart

[](#v2--pro-smart)

- **2-level subfolder support** — nested folders in the sidebar with expand/collapse, breadcrumbs, correct upload URLs
- **Tags &amp; Keywords** — tag files with comma-separated keywords; tag cloud in sidebar with click-to-filter
- **Delete tag globally** — remove a tag from all files at once with a single click (hover × on any tag)
- **Smart Filtering** — filter by upload date range, uploaded-by user, and file size (min/max KB)
- **Bulk Operations** — select multiple files → bulk delete, bulk move to folder, bulk rename (pattern `file-{n}`), bulk tag assignment (add / remove / replace)
- **Duplicate Detection** — scan for exact duplicates (MD5 hash) and similar-named files; keep oldest, newest, or shortest name with one click
- **Improved picker** — sidebar layout with scrollable folder tree (subfolders collapsible) + tag filter; replaces flat tab row that broke at scale
- **Auto WebP conversion on upload** — JPEG and PNG files are automatically converted to WebP on upload using PHP GD; original file and sidecar are replaced, UUID is preserved so all existing page references continue to work
- **In-place WebP compression** — existing WebP files are re-encoded at optimised quality; file is only replaced if the result is strictly smaller
- **Re-optimize button** — manually trigger optimization on any image from the file detail panel
- **Upload progress indicator** — animated progress bar and spinner shown in the drop zone while upload and optimization run; shows "Uploading &amp; optimizing X of Y…"

---

Requirements
------------

[](#requirements)

- Kirby CMS **5.0** or higher
- PHP **8.1** or higher
- PHP **GD extension** — required for V3 auto WebP conversion and compression (usually bundled with PHP; check with `php -m | grep gd`)

---

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

[](#installation)

### Via Composer (recommended)

[](#via-composer-recommended)

```
composer require kirbycode/media-hub-pro
```

### Manual

[](#manual)

1. Purchase a license at [kirbycode.com](https://kirbycode.com)
2. Download the plugin zip from your account
3. Extract and copy the `media-hub-pro` folder into your site's `site/plugins/` directory

The plugin auto-creates `content/media-hub/` on the first page load — no further setup needed.

---

Configuration
-------------

[](#configuration)

All options go in your site's `config/config.php`:

```
return [
    // Your Media Hub Pro license key (required for V2 Pro Smart features).
    // Purchase a license at kirbycode.com — omit this key to run in Free (V1) mode.
    'kirbycode.media-hub.license' => 'MHPRO-XXXX-XXXX-XXXX-XXXX',

    // Change the slug of the hub root page (default: 'media-hub').
    // Useful if your site already has a page at that slug.
    'kirbycode.media-hub.root-slug' => 'media-hub',

    // V3 — Media Optimization (all keys optional; shown values are defaults)
    'kirbycode.media-hub.optimization' => [
        'enabled' => true,           // set to false to disable auto-conversion on upload
        'quality' => [
            'webp' => 82,            // WebP output quality (0–100)
        ],
    ],
];
```

### Media Optimization notes (V3)

[](#media-optimization-notes-v3)

- JPEG and PNG uploads are automatically converted to **WebP** server-side on upload. The original file is deleted; the new `.webp` file carries the same UUID so all `file://` references in content continue to resolve without any manual edits.
- **PNG transparency** is preserved during conversion.
- **SVG and GIF** files are never converted.
- If PHP GD is not available the upload still succeeds — no error is thrown; optimization is silently skipped.
- The **Re-optimize** button in the file detail panel triggers the same conversion on demand. For files already in WebP format it attempts in-place compression and reports how many bytes were saved.

---

Blueprint Usage
---------------

[](#blueprint-usage)

Add the `mediahubpicker` field type to any page or file blueprint:

### Single image picker

[](#single-image-picker)

```
fields:
  hero_image:
    label: Hero Image
    type: mediahubpicker
    multiple: false
    accept: image
```

### Multi-select gallery

[](#multi-select-gallery)

```
fields:
  gallery:
    label: Gallery
    type: mediahubpicker
    multiple: true
    accept: image
    help: Pick images from the Media Hub
```

### Document / PDF picker

[](#document--pdf-picker)

```
fields:
  brochure:
    label: Download
    type: mediahubpicker
    multiple: false
    accept: document
```

### Field options

[](#field-options)

OptionTypeDefaultDescription`multiple`bool`true`Allow selecting more than one file`accept`string*(all)*Filter picker to a type: `image`, `document`, `video`, `audio``label`string`Media Hub Files`Panel field label`help`string—Help text shown below the field### What gets saved

[](#what-gets-saved)

The field writes a standard Kirby YAML list of `file://` UUIDs to the content `.txt` file — the same format as Kirby's built-in `files` field:

```
Hero_image:

- file://abc123def456

```

---

PHP Template Usage
------------------

[](#php-template-usage)

### Single file

[](#single-file)

```
$hero = $kirby->file($page->hero_image()->value());
if ($hero) {
    echo '';
}
```

### Multiple files / gallery

[](#multiple-files--gallery)

```
foreach ($page->gallery()->yaml() as $ref) {
    $file = $kirby->file($ref);
    if ($file) {
        echo '';
    }
}
```

---

Bulk Operations (V2)
--------------------

[](#bulk-operations-v2)

Enable **Select mode** in the toolbar to check multiple files, then choose an action:

ActionWhat it does**Bulk Delete**Permanently deletes all selected files**Bulk Move**Moves all selected files to a chosen folder**Bulk Rename**Renames using a pattern, e.g. `photo-{n}` → `photo-1.jpg`, `photo-2.jpg`**Bulk Tag**Add / Remove / Replace tags on all selected files at once---

Duplicate Detection (V2)
------------------------

[](#duplicate-detection-v2)

Open **Duplicates** from the toolbar to scan the library:

- **Exact duplicates** — files with identical MD5 hash
- **Similar names** — files with matching base names after stripping suffixes like `-final`, `-copy`, `-v2`, `(1)`, etc.

For each group you can: keep the oldest, keep the newest, keep the shortest filename, or manually pick which copy to keep.

---

Supported File Types
--------------------

[](#supported-file-types)

CategoryExtensionsImagesjpg, jpeg, png, gif, webp, svg, avifDocumentspdf, doc, docx, xls, xlsx, ppt, pptx, txtVideomp4, mov, webm, aviAudiomp3, wav, ogg, m4aArchiveszip, gz, tarDesignai, eps, psd---

How It Works
------------

[](#how-it-works)

The plugin registers a Kirby content page at `content/media-hub/` (auto-created on first load). Subfolders are standard Kirby child pages with the `media-hub-folder` template. Files use Kirby's native flat-file storage with `.txt` metadata sidecars.

The Panel area is a custom Kirby `area` with Vue 3 components (no build step — uses Kirby's bundled runtime). REST API routes under `/api/media-hub/` handle all operations.

---

Changelog
---------

[](#changelog)

See [CHANGELOG.md](CHANGELOG.md).

---

License
-------

[](#license)

Proprietary — [Shivlal Sheladiya](https://kirbycode.com). All rights reserved. A valid license is required. Purchase at [kirbycode.com](https://kirbycode.com).

---

Credits
-------

[](#credits)

Built with [Kirby CMS](https://getkirby.com) by [kirbycode.com](https://kirbycode.com).

If this plugin saves you time, consider [sponsoring further development](https://kirbycode.com).

###  Health Score

40

—

FairBetter than 86% of packages

Maintenance100

Actively maintained with recent releases

Popularity10

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity38

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% 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 ~0 days

Total

7

Last Release

0d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/2da8515bc9406e47ee15814ba323520b9ecd14802f7c71f5d364652c15c1e39e?d=identicon)[logitechshiv](/maintainers/logitechshiv)

---

Top Contributors

[![logitechshiv](https://avatars.githubusercontent.com/u/8897105?v=4)](https://github.com/logitechshiv "logitechshiv (32 commits)")

---

Tags

mediacmsmedia librarykirbykirby-pluginkirby5asset management

### Embed Badge

![Health badge](/badges/kirbycode-media-hub-pro/health.svg)

```
[![Health](https://phpackages.com/badges/kirbycode-media-hub-pro/health.svg)](https://phpackages.com/packages/kirbycode-media-hub-pro)
```

###  Alternatives

[getkirby/cms

The Kirby core

1.5k567.4k434](/packages/getkirby-cms)[getkirby/starterkit

Kirby Starterkit

20313.1k](/packages/getkirby-starterkit)[timnarr/kirby-imagex

Modern images for Kirby CMS – This plugin helps you orchestrate modern, responsive and performant images in Kirby

828.4k1](/packages/timnarr-kirby-imagex)[getkirby/plainkit

Kirby Plainkit

11911.4k1](/packages/getkirby-plainkit)[tomatophp/filament-media-manager

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

14849.5k3](/packages/tomatophp-filament-media-manager)[belugadigital/kirby-navigation

Kirby 5 field for hierarchical menus with drag &amp; drop level indentation.

8613.8k](/packages/belugadigital-kirby-navigation)

PHPackages © 2026

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