PHPackages                             mindkomm/timmy - 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. mindkomm/timmy

ActiveLibrary[Image &amp; Media](/categories/media)

mindkomm/timmy
==============

Advanced image manipulation for Timber.

v2.6.2(1mo ago)17737.8k↓11.9%14[4 issues](https://github.com/mindkomm/timmy/issues)[2 PRs](https://github.com/mindkomm/timmy/pulls)MITPHPPHP ^8.2CI passing

Since May 25Pushed 1mo ago7 watchersCompare

[ Source](https://github.com/mindkomm/timmy)[ Packagist](https://packagist.org/packages/mindkomm/timmy)[ RSS](/packages/mindkomm-timmy/feed)WikiDiscussions 2.x Synced today

READMEChangelog (10)Dependencies (18)Versions (59)Used By (0)

Timmy
=====

[](#timmy)

Timmy is an opt-in library to make it more convenient to work with responsive images. It was designed to be used with [Timber](http://upstatement.com/timber/), but should work with all your WordPress projects.

In your Twig template, you can do this:

```

```

To get this:

```

```

Documentation
-------------

[](#documentation)

- [Installation – Getting Started](./docs/installation.md)
- [Image Configuration](./docs/image-configuration.md)
- [Functions](./docs/functions.md)
- [Responsive Content Images](./docs/responsive-content-images.md)
- [Hooks (Filters)](./docs/hooks.md)
- [Lazy Loading](./docs/lazy-loading.md)
- [WebP images and Picture](./docs/picture.md)
- [API](./docs/api.md)
- [Extending Timmy](./docs/extending-timmy.md)
- [Performance and Best Practices](./docs/best-practices.md)
- [FAQ](./docs/faq.md)

Features
--------

[](#features)

Timber already comes with a set of really nice features for handling images. Especially the [arbitrary resizing of images](https://timber.github.io/docs/guides/cookbook-images/#arbitrary-resizing-of-images) is very convenient. Whenever a page is accessed and the image size can’t be found, it will be created on the fly. You can use as many different image sizes as you like, without always having to use plugins like [Regenerate Thumbnails](https://wordpress.org/plugins/regenerate-thumbnails/) when you make a change to the default WordPress image sizes.

**Timmy** uses Timber’s [`ImageHelper`](https://timber.github.io/docs/reference/timber-imagehelper/) class to enhance this functionality even more.

### Mimicks default WordPress image functionalities

[](#mimicks-default-wordpress-image-functionalities)

- **You can have as many defined image sizes as you want**. It’s easier to work with named image sizes like `thumbnail`, `medium`, `portrait` etc. Timmy lets you define each image size with a lot of [handy configuration options](./docs/image-configuration.md).
- **Users can select different image sizes in WYSYWIG editor**. Normally, a user can only select the default WordPress sizes *Thumbnail*, *Medium*, *Large* and *Full*. With images defined through Timmy, a user [can select all image sizes that you define](https://cloud.githubusercontent.com/assets/2084481/13374936/bfb58ec2-dd92-11e5-9e05-cc22fe4f0f88.png), without the default sizes.
- **Makes images inserted into a post’s content via WordPress Editor responsive**.
- **Integration for popular plugins** like [Advanced Custom Fields](https://www.advancedcustomfields.com/), [Admin Columns](https://www.admincolumns.com/) and [Yoast SEO](https://yoast.com/wordpress/plugins/seo/). Because Timmy tells WordPress that there are image sizes present, other plugins will allow you to select images defined through Timmy, like the preview images for image fields defined with ACF or a preview image used in Admin Columns.
- **You can still use Regenerate Thumbnails**. Using [Regenerate Thumbnails](https://wordpress.org/plugins/regenerate-thumbnails/) with Timmy will clean your uploads folder from image sizes you don’t need anymore. If you have no image sizes defined with Timmy, Timmy will delete all image sizes generated with Timmy. But no worries, remember that Timber automatically creates an image size if it doesn’t already exist.
- **You can still use Timber’s resize functions**. Timber has some [really neat image manipulation functions](https://timber.github.io/docs/guides/cookbook-images/). You can still use these or you can also use a mix of the two.

### Helps you with image HTML output

[](#helps-you-with-image-html-output)

- **Responsive images**. For each image size, you can define additional sizes that will be used for the responsive image srcset.
- **Lazy loading markup**. Adds lazy loading markup to your image.
- **Accessibility**. Timmy automatically pulls image alt texts and adds them to your image.

### Reasonable image generation

[](#reasonable-image-generation)

- **Image sizes are generated when they are uploaded**. When you use Timber images you don’t have to care about image sizes being present in the uploads folder. If your frontend is accessed, Timber creates image sizes when they don’t already exist. You’d always have to visit the frontend to make sure the first visitor of a page doesn’t have really long loading times. Because Timmy knows which sizes you want to use – you defined them – it will generate them for you. There are cases where this is useful, e.g. when some posts are created automatically and you also pull in images.
- **Restrict to post types to prevent bloat**. If you want to use an image size just for one post type, you can define that. This will prevent bloating up your uploads folder with image sizes that are never used on the site.

### Limitations

[](#limitations)

- We don’t know if Timmy works with images hosted on Content Delivery Networks (CDN). We haven’t looked into that yet and we don’t know if we ever will. Pull requests welcome ;).

###  Health Score

66

—

FairBetter than 99% of packages

Maintenance90

Actively maintained with recent releases

Popularity45

Moderate usage in the ecosystem

Community21

Small or concentrated contributor base

Maturity89

Battle-tested with a long release history

 Bus Factor1

Top contributor holds 95% 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 ~68 days

Recently: every ~37 days

Total

54

Last Release

43d ago

Major Versions

0.14.8 → 1.0.0-beta.12022-02-21

0.14.9 → 1.0.0-beta.22022-03-02

v1.1.0 → v2.0.02024-05-08

1.x-dev → v2.3.02025-10-13

PHP version history (5 changes)0.10.1PHP &gt;=5.3.0

0.11.0PHP &gt;=5.4.0

1.0.0-beta.1PHP &gt;=7.4.0

v2.0.0PHP ^7.4 || ^8.0

v2.3.0PHP ^8.2

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/2084481?v=4)[Lukas Gächter](/maintainers/gchtr)[@gchtr](https://github.com/gchtr)

---

Top Contributors

[![gchtr](https://avatars.githubusercontent.com/u/2084481?v=4)](https://github.com/gchtr "gchtr (439 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (14 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (2 commits)")[![nlemoine](https://avatars.githubusercontent.com/u/2526939?v=4)](https://github.com/nlemoine "nlemoine (2 commits)")[![alexwoollam](https://avatars.githubusercontent.com/u/20298508?v=4)](https://github.com/alexwoollam "alexwoollam (1 commits)")[![salaros](https://avatars.githubusercontent.com/u/675348?v=4)](https://github.com/salaros "salaros (1 commits)")[![drzraf](https://avatars.githubusercontent.com/u/1169926?v=4)](https://github.com/drzraf "drzraf (1 commits)")[![hanifbirgani](https://avatars.githubusercontent.com/u/53351186?v=4)](https://github.com/hanifbirgani "hanifbirgani (1 commits)")[![luisbraga](https://avatars.githubusercontent.com/u/1301142?v=4)](https://github.com/luisbraga "luisbraga (1 commits)")

---

Tags

responsive-imagestimberwordpresswordpress-librarywordpressimagesresponsivetimbertimmy

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/mindkomm-timmy/health.svg)

```
[![Health](https://phpackages.com/badges/mindkomm-timmy/health.svg)](https://phpackages.com/packages/mindkomm-timmy)
```

###  Alternatives

[wp-media/imagify-plugin

Image optimization plugin for WordPress by WP Media.

8067.5k](/packages/wp-media-imagify-plugin)[helsingborg-stad/municipio

A bootstrap theme for creating municipality sites.

4028.5k10](/packages/helsingborg-stad-municipio)[humanmade/gaussholder

Fast and lightweight image previews for WordPress

196120.1k](/packages/humanmade-gaussholder)[bueltge/multisite-global-media

Multisite Global Media is a WordPress plugin which shares media across the Multisite network.

23132.1k](/packages/bueltge-multisite-global-media)[schnitzler/fluid-styled-responsive-images

Enables creation of responsive images for fluid styled content elements.

279.8k1](/packages/schnitzler-fluid-styled-responsive-images)[mia/statamic-image-renderer

113.3k](/packages/mia-statamic-image-renderer)

PHPackages © 2026

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