PHPackages                             dmk/mkcleaner - 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. [Security](/categories/security)
4. /
5. dmk/mkcleaner

ActiveTypo3-cms-extension[Security](/categories/security)

dmk/mkcleaner
=============

Cleans files by removing any metadata with the help of mat2, exiftool and qpdf according to BSI guidelines.

v13.0.0(9mo ago)13.9k↑17.1%GPL-2.0-or-laterPHPCI passing

Since Apr 12Pushed 9mo ago2 watchersCompare

[ Source](https://github.com/DMKEBUSINESSGMBH/typo3-mkcleaner)[ Packagist](https://packagist.org/packages/dmk/mkcleaner)[ Docs](http://www.dmk-ebusiness.de/)[ RSS](/packages/dmk-mkcleaner/feed)WikiDiscussions 13.4 Synced 2d ago

READMEChangelogDependencies (12)Versions (10)Used By (0)

[![](Resources/Public/Icons/ExtensionLogo.svg)](Resources/Public/Icons/ExtensionLogo.svg)

[![TYPO3 compatibility](https://camo.githubusercontent.com/82d43631a1de3291114630dd9ae2ecfcb23495adb970f325559f32332314e3c8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5459504f332d31312e3525323025374325323031322e342d6f72616e67653f6d61784167653d33363030267374796c653d666c61742d737175617265266c6f676f3d7479706f33)](https://camo.githubusercontent.com/82d43631a1de3291114630dd9ae2ecfcb23495adb970f325559f32332314e3c8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5459504f332d31312e3525323025374325323031322e342d6f72616e67653f6d61784167653d33363030267374796c653d666c61742d737175617265266c6f676f3d7479706f33)[![Latest Stable Version](https://camo.githubusercontent.com/5872def3484a2a8caf4afdde5708dda6b86cf359ac9464a85be3042948a7bfff/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f646d6b2f6d6b636c65616e65722e7376673f6d61784167653d33363030267374796c653d666c61742d737175617265266c6f676f3d636f6d706f736572)](https://packagist.org/packages/dmk/mkcleaner)[![Total Downloads](https://camo.githubusercontent.com/5eb0e8bda14f28d71767f45e6158c790fb85f518b8a1104f0d4e0ecd9c3a606e/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f646d6b2f6d6b636c65616e65722e7376673f6d61784167653d33363030267374796c653d666c61742d737175617265)](https://packagist.org/packages/dmk/mkcleaner)[![Build Status](https://camo.githubusercontent.com/d1f851eff8a8b6ea6f3d16a7033a5b89c7067f0d0864baa21f2b77bd718f4f25/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f444d4b45425553494e455353474d42482f7479706f332d6d6b636c65616e65722f2e6769746875622f776f726b666c6f77732f70687063692e796d6c3f6d61784167653d33363030267374796c653d666c61742d737175617265266c6f676f3d6769746875622d616374696f6e73)](https://github.com/DMKEBUSINESSGMBH/typo3-mkcleaner/actions?query=workflow%3APHP-CI)[![License](https://camo.githubusercontent.com/5423437a6a49534f358acace01dfbc8c02480ecce1fb6b7862eb29aa50a175ed/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f646d6b2f6d6b636c65616e65722e7376673f6d61784167653d33363030267374796c653d666c61742d737175617265266c6f676f3d676e75)](https://packagist.org/packages/dmk/mkcleaner)

What does it do?
----------------

[](#what-does-it-do)

This extension cleans files by removing most of the metadata according to the BSI guidelines. This is a important step when it comes to security so no sensitive information is leaked. This is done with mat2 (), exiftool () and qpdf () in the moment. You need to install/provide those commands on the server CLI. If some command is not available system-wide the path can be configured with `$GLOBALS['TYPO3_CONF_VARS']['SYS']['binSetup']` or `$GLOBALS['TYPO3_CONF_VARS']['SYS']['binPath']`.

Check the logs for errors after uploading files etc.

As soon as everything is setup almost every file that is added/replaced with the TYPO3 FAL API will be cleaned. Furthermore there is a scheduler job that can be used for an initial cleanup of desired folders.

Adding a custom cleaner
-----------------------

[](#adding-a-custom-cleaner)

A custom cleaner can be added in `ext_localconf.php` like this:

```
\DMK\Mkcleaner\Cleaner\Registry::registerCleaner(\Vendor\Package\Cleaner\CustomCleaner::class, 100);
```

Every cleaner needs to implement `DMK\Mkcleaner\Cleaner\CleanerInterface`. Please take a look at the existing cleaners.

Drawbacks
---------

[](#drawbacks)

Please keep in mind that neither of the tools is perfect and might break files or leave metadata present. For example pdf files sometimes loose all links or svg files have changed content when mat2 would be used. Therefore pdf files are cleaned with exiftool and qpdf instead of mat2 and svg files are omitted completely. Please take care of having svg files without metadata yourself.

Changelog
---------

[](#changelog)

v13.0.0: Compatibility for TYPO3 12.4 and 13.4 only. Clean up is now done as well when files are replaced v12.0.1: Optimized description v12.0.0: Compatibility for TYPO3 11.5 and 12.4 only v8.0.2: add some error handling v8.0.1: resolve symlinks v8.0.0: initial release

###  Health Score

37

—

LowBetter than 81% of packages

Maintenance57

Moderate activity, may be stable

Popularity23

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity47

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 76.5% 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 ~58 days

Recently: every ~96 days

Total

10

Last Release

288d ago

Major Versions

8.7.x-dev → v12.0.02024-09-02

v12.0.1 → 13.4.x-dev2025-09-19

PHP version history (2 changes)v8.0.0PHP ^7.2 || ^7.3 || ^7.4

v12.0.0PHP ^8.1 || ^8.2 || ^8.3

### Community

Maintainers

![](https://www.gravatar.com/avatar/33e7d05adb80175dc82fc55b499e1d17d6252f45a3de0dc5a314181568f54f69?d=identicon)[hannesbochmann](/maintainers/hannesbochmann)

---

Top Contributors

[![hannesbochmann](https://avatars.githubusercontent.com/u/6302628?v=4)](https://github.com/hannesbochmann "hannesbochmann (26 commits)")[![mcrasser](https://avatars.githubusercontent.com/u/14163959?v=4)](https://github.com/mcrasser "mcrasser (8 commits)")

---

Tags

securitymetadataTYPO3 CMScleanerexiftoolqpdfbsimat2

###  Code Quality

Static AnalysisPHPStan

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/dmk-mkcleaner/health.svg)

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

###  Alternatives

[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

103519.9k53](/packages/friendsoftypo3-content-blocks)[causal/fal-protect

Protect everything within /fileadmin/ based on associated folder and file restrictions (visibility, user groups and dates of publication).

1277.1k](/packages/causal-fal-protect)[in2code/in2publish_core

Content publishing extension to connect stage and production server

40143.4k](/packages/in2code-in2publish-core)[derhansen/sf_event_mgt

Event management and registration - Configurable event management and registration extension based on ExtBase and Fluid

66338.4k10](/packages/derhansen-sf-event-mgt)[brotkrueml/schema

Embedding schema.org vocabulary - API and view helpers for schema.org markup

34653.7k16](/packages/brotkrueml-schema)[derhansen/form_crshield

Challenge/response spambot protection for ext:form - Challenge/response spambot protection for TYPO3 ext:form - Adds a hidden input field containing a challenge string to forms. Client must execute included JavaScript to calculate the expected response.

20241.7k10](/packages/derhansen-form-crshield)

PHPackages © 2026

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