By Sebastiaan de Jonge, published on Thursday, October 13, 2016 at 16:00

A few years ago, I did some small research on extension icons which had been used for public TYPO3 CMS extensions. Just for fun of course. I thought it would be fun to repeat the process, just a few years later. To see what has changed, and what has not!

Method of comparison

To start with, I will be using the Composer as my leading source. It currently contains 4,090 extensions for download. That's just a little bit less than the 4,500+ I have compared before, but significantly more than the 1,606 than the TER on offers.

In order to retrieve all these icons, I have used a combination of Composer and the TER. As all extension icons of the extensions served by the TER are available from there (also the ones which are not directly available from the TER). This would be significantly easier than to download and extract or clone each extension. The script I used to do so is available under the attachments of this post.

Running this script resulted in the downloading of 3,876 icons. Let's start comparing! I've compared the icons in the same way, simply by checking the file hashes against each other.


Since TYPO3 CMS 7 it's possible to use different formats for the extension icon. You are a no longer stuck to using GIF files. This means you can now use a bit more fancy icons than before. Preferably vector images of course. I didn't find any of these, but I don't think they aren't used. Probably the TER just converts these to PNG files.

Recurring usage

By checking file hashes, it's also easy to find out how many times icons are used. From these results we can make a top 10 (with some shared places).

# Icon(s) Times used
1. image:106 522
2. image:107 230
3. image:108 (this is what 0 byte GIF file looks like) 29
4. image:109 image:110 25
5. image:111 23
6. image:112 image:113 22
7. image:114 image:115 17
8. image:116 image:117 16
9. image:118 14
10. image:119 image:120 13

In all these years the number one hasn't changed. It's still the old fashioned ? which comes from the good ol' kickstarter extension. But there is a new runner-up! This is default icon which is provided by the extension_builder.

The extension builder is a TYPO3 extension which allows you to easily kickstart the development of a new extension. It's much like it's predecessor, the kickstarter extension.


When I created the first post the dimensions were not so important. RWD, screen density etc. didn't play such a big role. However things have changed now. And if you want even your extension icon to look pretty on your retina display, you'll need to adjust.

Something interesting to look at is the aspect ratio. If you take a look at TYPO3 CMS 8 and check the extension manager, you will see that icons are all square. This would mean an aspect ratio of 1:1. Let's with these icons look like. I've only taken the most common ones, and grouped the rest.

Another thing we can make up from the extension manager in TYPO3 CMS 8, is that the extension icons from core extensions are delivered in PNG format, displayed as 16x16 icons. Their actual size is 64x64 though. So let's see how many icons we have with these specifications; Aspect ratio 1:1, height/width at least or exactly 64 pixels.

This means that roughly 1.87% of all extension icons looks good in TYPO3 CMS 8. Of course we should keep in mind that not all these extensions actually run on the latest version of TYPO3 CMS. In fact, many probably won't.

Finding nice icons

It's not always easy to find something nice to use. Not just for your extension, but also for your custom created record types. I prefer the use of vector images (SVG). Often for projects and my own projects I like to use free icons from websites like FlatIcon and FreePik. This often only requires you to attribute the creator of the icon, which you can do somewhere within your extension (for example, in your license file).

If you are planning to use the original source code I used for whatever you'd like, assure to adjust the composer source file. I downloaded the file before I started running the script. Mainly because the file is large and it would cause unnecessary long wait times.