PHPackages                             shel/asset-names - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. shel/asset-names

ActiveNeos-plugin[Utility &amp; Helpers](/categories/utility)

shel/asset-names
================

Allows changing uploaded asset filenames in Neos CMS

1.3.0(3y ago)83.1k[1 issues](https://github.com/Sebobo/Shel.AssetNames/issues)GPL-3.0-or-laterPHP

Since May 23Pushed 3y ago1 watchersCompare

[ Source](https://github.com/Sebobo/Shel.AssetNames)[ Packagist](https://packagist.org/packages/shel/asset-names)[ RSS](/packages/shel-asset-names/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (8)Dependencies (2)Versions (12)Used By (0)

Asset names for Neos CMS
========================

[](#asset-names-for-neos-cms)

[![Latest Stable Version](https://camo.githubusercontent.com/43650c515dd1b34b1379191a50b108fba3db8b8fbe39d1eabff5f41df3d61d94/68747470733a2f2f706f7365722e707567782e6f72672f7368656c2f61737365742d6e616d65732f762f737461626c65)](https://packagist.org/packages/shel/asset-names)[![Total Downloads](https://camo.githubusercontent.com/39d5a297762e33a04f2d6acbec032a3a2e0474d95452f2fcbccf3a9f62413a7f/68747470733a2f2f706f7365722e707567782e6f72672f7368656c2f61737365742d6e616d65732f646f776e6c6f616473)](https://packagist.org/packages/shel/asset-names)[![License](https://camo.githubusercontent.com/ba0ddd4b6c68ca01d6bade4ad7d9366354f9391df406514e244f3a5246fd2518/68747470733a2f2f706f7365722e707567782e6f72672f7368656c2f61737365742d6e616d65732f6c6963656e7365)](https://packagist.org/packages/shel/asset-names)

Installing this package will change the naming behavior for files when publishing assets in Neos CMS. By default Neos CMS will create a symlink in the public `Web` folder to the file stored in the private `Data/Persistent`folder. These symlinks to images and other assets will have the filenames they got when they were uploaded.

New behavior: The symlinks to these assets will have a filename based on their `title` which can be set in the `Media Module`.

Advantages
----------

[](#advantages)

- You can optimize the filenames for SEO purposes in the `Media Module`.
- The actual file name stored in the database is not changed.
- Old filenames will still work until the `Web/Resources` folder is cleaned up.

Caveats
-------

[](#caveats)

- The final filename will be run through `slugify` to prevent problematic characters in the filename.
- The actual file name stored in the database is not changed. Therefore there is an additional query to the database to generate the file name when the public uri is requested. This might be optimized in the future.

In my tests publishing ~1000 resources with this plugin took ~2.5s compared to ~1s without this feature.

How to use it
-------------

[](#how-to-use-it)

1. Install the package via composer `composer require --no-update shel/asset-names` in your site package.
2. Run `composer update` in your project's root folder.
3. Run `./flow resource:publish`.
4. Change an assets title in the media module and check the resulting filename in the preview.

### Adapt the filename schema

[](#adapt-the-filename-schema)

You can customise the filename creation via your `Settings.yaml`. Add the following snippet to your configuration and adapt it to your needs:

```
Shel:
 AssetNames:
  expression: "${'my-prefix-' + asset.title + '-' + width + 'x' + height}"
```

It's recommended to keep the `width` and `height` suffix.

What the package cannot do yet
------------------------------

[](#what-the-package-cannot-do-yet)

It currently doesnt work when not using the provided symlink target.

If you use the copy target or some cloud based filesystem you can extend those targets the same way and provide the change as PR to this package.

Future plans
------------

[](#future-plans)

- This feature should be in the Neos CMS core at some point.
- This package is meant to find the best implementation and also support older Neos versions until it's part of the core.

Contributions
-------------

[](#contributions)

Contributions are very welcome!

Please create detailed issues and PRs.

If you use this package and want to support or speed up it's development, use Githubs sponsor button or [get in touch with me](mailto:assetnames@helzle.it)

License
-------

[](#license)

See [License](./LICENSE.txt)

###  Health Score

33

—

LowBetter than 75% of packages

Maintenance18

Infrequent updates — may be unmaintained

Popularity26

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity66

Established project with proven stability

 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 ~121 days

Recently: every ~214 days

Total

11

Last Release

1335d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/5c9f106db319e8698dcb4aedfe8034f0442d379ebbd78fcd67b884999b2236f1?d=identicon)[Sebobo](/maintainers/Sebobo)

---

Top Contributors

[![Sebobo](https://avatars.githubusercontent.com/u/596967?v=4)](https://github.com/Sebobo "Sebobo (20 commits)")

---

Tags

assetsseoNeos CMS

### Embed Badge

![Health badge](/badges/shel-asset-names/health.svg)

```
[![Health](https://phpackages.com/badges/shel-asset-names/health.svg)](https://phpackages.com/packages/shel-asset-names)
```

###  Alternatives

[kriswallsmith/assetic

Asset Management for PHP

3.7k48.9M161](/packages/kriswallsmith-assetic)[artesaos/seotools

SEO Tools for Laravel and Lumen

3.3k5.1M60](/packages/artesaos-seotools)[jbroadway/urlify

A fast PHP slug generator and transliteration library that converts non-ascii characters for use in URLs.

6737.4M62](/packages/jbroadway-urlify)[spatie/laravel-robots-middleware

Add an `all` or `none` robots header to your requests via a middleware in Laravel

3352.1M5](/packages/spatie-laravel-robots-middleware)[yoast/yoast-seo-for-neos

Yoast SEO for Neos CMS

24164.8k](/packages/yoast-yoast-seo-for-neos)[backpack/basset

Dead-simple way to load CSS or JS assets only once per page, when using Laravel 10+.

202832.4k6](/packages/backpack-basset)

PHPackages © 2026

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