Drupal is a registered trademark of Dries Buytaert
drupal 11.4.1 Update released for Drupal core (11.4.1)! drupal 11.4.0 Update released for Drupal core (11.4.0)! drupal 10.6.12 Update released for Drupal core (10.6.12)! drupal 11.3.13 Update released for Drupal core (11.3.13)! drupal 10.6.11 Update released for Drupal core (10.6.11)! drupal 11.3.12 Update released for Drupal core (11.3.12)! drupal 11.2.14 Update released for Drupal core (11.2.14)! drupal 10.5.12 Update released for Drupal core (10.5.12)! cms 2.1.3 Update released for Drupal core (2.1.3)! drupal 10.5.11 Update released for Drupal core (10.5.11)! drupal 11.3.11 Update released for Drupal core (11.3.11)! drupal 11.2.13 Update released for Drupal core (11.2.13)! drupal 10.6.10 Update released for Drupal core (10.6.10)! cms 2.1.2 Update released for Drupal core (2.1.2)! drupal 11.1.10 Update released for Drupal core (11.1.10)! drupal 10.5.10 Update released for Drupal core (10.5.10)! drupal 10.4.10 Update released for Drupal core (10.4.10)! drupal 11.2.12 Update released for Drupal core (11.2.12)! drupal 11.3.10 Update released for Drupal core (11.3.10)! drupal 10.6.9 Update released for Drupal core (10.6.9)!

Gives each user their own personal media library: upload an image, reuse one
you've already uploaded elsewhere on the site, and manage (replace/delete)
your own photos from a dedicated gallery page.

Features

This module simply provides a user_photo media bundle,
a settings form controlling upload limits, and the plumbing (a reusable upload-handling service, an EXIF-stripping service, and a custom entity reference selection plugin) that any other module can build on top of to let a user attach one of their own images to some piece of content.

Any feature wanting "let a user attach one of their own images" references the user_photo media bundle this module provides, and calls user_media_library.upload_handler to create one from a raw upload.

See chirp_photo_gallery (a submodule of the chirp module) for a working example of a consumer integration.

Post-Installation

Installation

drush en user_media_library -y

Configuration

Navigate to Configuration → Media → User Media Library
(/admin/config/media/user-media-library), gated behind the
administer user media library permission.

Setting Default Description Maximum upload size 5 MB Rejects an upload outright if it exceeds this. Allowed file extensions jpg jpeg png gif Space-separated, no leading dot. Maximum image width 1200px See "Oversized images" below — scales down, never rejects. Maximum image height 1200px Same behavior as width. Remove location/device data by default Enabled Only sets the default state of a checkbox each uploader still sees and can change per-upload — never silently strips or silently keeps EXIF data without the uploader's own choice being visible.

Per-user management and permissions

Management (replace/delete your own photos) reuses Drupal core's own Media
entity edit/delete forms directly — there is no bespoke manage logic to
configure. Drupal generates the following permissions automatically for the
user_photo bundle; assign them per role as your site requires:

Permission Typical audience create user_photo media Any role allowed to upload photos at all edit own user_photo media/
delete own user_photo media Same as above — lets a user manage their own uploads edit any user_photo media/
delete any user_photo media Site administrators only — for cleanup (archiving unused images, removing a departed member's leftovers, or removing an image that was itself the reason some piece of content got reported/moderated)

Deliberately not granted to whatever role manages your site's general
media library (e.g. image bundle content editors) — user_photo is a
separate bundle specifically so a site can keep "who manages the public media
library" and "who manages personal photo uploads" as two different,
independently-assignable sets of permissions, without any extra code.

Additional Requirements

- Drupal `^11.3`
- `drupal:media`
- `drupal:media_library`
- `drupal:image`

Supporting this Module

This module is supported by Lisa Harrison (lisa.rae), an individual contributor and long-time member of the Drupal community.

Activity

Total releases
1
First release
Jul 2026
Latest release
17 hours ago
Release cadence
Stability
0% stable

Releases

Version Type Release date
1.1.0-rc1 Pre-release Jul 6, 2026