Skip to main content
Drupal is a registered trademark of Dries Buytaert
Release: OpenID Connect / OAuth client 3.0.0-alpha9 New alpha version released for module openid_connect (3.0.0-alpha9). Release: Opensolr Search 4.5.0 Minor update available for module opensolr_search (4.5.0). Release: Timelinr 1.0.1 Minor update available for module timelinr (1.0.1). Usage Milestone: Simplify Module simplify crossed 10,000 active installs. Usage Milestone: Views Reference Filter Module entityreference_filter crossed 10,000 active installs. Usage Milestone: Dropdown Language Module dropdown_language crossed 10,000 active installs. Usage Milestone: Paragraphs Browser Module paragraphs_browser crossed 10,000 active installs. Usage Milestone: OpenAPI Module openapi crossed 10,000 active installs. Usage Milestone: Decoupled Router Module decoupled_router crossed 10,000 active installs. Module Revived: Entityqueue Buttons 1.1.2 Module entityqueue_buttons updated after 8 months of inactivity (1.1.2).

Paragraphs Media Icons - Pro

18 sites No security coverage Drupal 11 · not 10 Paragraphs ecosystem
View on drupal.org

This module replaces base64-encoded icons used by the Paragraphs module with references to Media entities. This significantly reduces configuration file sizes, making them easier to manage and improving performance. Icons will continue to display as usual, but the underlying configuration will be much smaller.

Eliminates config bloat by replacing Paragraphs' base64-encoded icons with Media entity references. Reduces config size by 90%+.

The Problem
The Paragraphs module stores paragraph type icons as base64-encoded images inside configuration YAML.
On sites with 60–80 paragraph types, this can inflate config exports to 50–60 MB, slow drush cex to minutes, and generate unreadable git diffs.

The Solution
This module replaces config-stored icons with Media entity references using Drupal’s third-party settings API.
A 15–50 KB base64 blob becomes a simple integer Media ID—reducing each paragraph type’s config by ~99%.

Key Features
90–95% config reduction (e.g., 60 MB → 2–3 MB)
One-command migration (drush pmi:migrate)
Full Paragraphs Previewer support (Modal, Dropdown, Buttons)
No UX changes—icons display exactly the same
Standards-compliant: uses third-party settings API
Faster config exports and clean git diffs

How It’s Different
Rather than modifying config entities (which breaks validation), this module:
Extends ParagraphsType to override getIconUrl()
Stores Media IDs via third-party settings
Ensures complete compatibility with Paragraphs Previewer and related modules

Technical Overview
Entity override for icon URLs
Media ID stored as config, not file data
Migration service converts existing icons
Hook integrations for seamless widget support

Installation
Requirements: Drupal 11.3+, PHP 8.1+, Paragraphs, Media

Enable: drush en paragraphs_media_icons -y
Clear cache: drush cr
Works immediately—no additional setup required.

Usage
Go to Structure → Paragraphs types
Edit a type and use the Media Icon field
Select an image from the Media Library

Save
Icons appear wherever Paragraphs icons normally display.

Drush Commands
pmi:stats — Shows config bloat and icon usage
pmi:migrate — Converts all base64 icons to Media entities (safe to run multiple times)

Migration Workflow
drush pmi:stats
drush pmi:migrate
drush pmi:stats # should show 0 MB bloat
drush cex
git commit -m "Migrated paragraph icons; reduced config size"

Security
Uses Drupal’s Entity API
Respects Media access permissions
No raw SQL
Follows Drupal coding standards

Depends on

Dependencies of the latest stable release

Required by

Tracked projects that depend on this one

No tracked projects depend on this one yet.

Activity

Tracked releases
3
Tracked since
Feb 2026
Latest release
1 month ago
Releases (12 mo)
3 ▲ from 0
Maintenance
Active

Release Timeline

Releases

Version Type Core Release date
1.1.0 Stable 11 Jul 21, 2026
1.0.x-dev Dev 11 Jul 21, 2026
1.0.0 Stable 11 Feb 6, 2026