Usage 

MIME Fix inside the file list 

No separate module to learn. A Scan MIME button is injected into the toolbar of the TYPO3 File > Filelist module for the folder you are viewing.

It reports every file in that folder where:

  • the actual file content does not match what the extension claims it is (finfo vs. extension), or
  • the database mime_type is out of sync with what it should be.

Supported types: jpg, jpeg, png, gif, webp, bmp, tiff/tif, plus the text-based css, js, yaml/yml and dotx.

Situation What happens
Image content does not match extension (for example a PNG saved as .jpg) Converted in place via ImageMagick / GraphicsMagick, written to a temp file first so a failed conversion never corrupts the original.
Photoshop file (.psd content, wrong extension) Converted via the PHP Imagick extension if available; falls back to ImageMagick convert, reading only the merged/composite layer.
css / js / yaml / yml / dotx finfo cannot detect these correctly, so only the sys_file.mime_type record is corrected.

Select the issues, click Fix selected. The FAL index is re-read afterwards so TYPO3 immediately reflects the corrected type.

File Cleanup 

File > File Cleanup. For when you trust the result and want the files gone.

  • Lists files with zero active sys_file_reference and zero soft references ( sys_refindex ), that is, unreferenced by any page, content element or FlexForm.
  • Filter by Present on disk / Physically missing / All, by extension and by folder depth (level 1 to 3, or unlimited).
  • Download as ZIP before deleting, per-file download links and per-row "physically missing" badges.
  • Delete selected or Delete all filtered. The bulk delete requires typing the exact file count to confirm.
  • Uses the file storage tree on the left, the same as the file list.

Duplicate report 

File > Filelist → Find duplicates button in the toolbar (admins only). Lists every group of files in the storage with identical content (same sys_file.sha1 ) where at least one copy lies in the current folder or below; the other copies are looked up in the whole storage.

  • Only real copies count. Each copy is checked on disk and sizes are read from disk; sys_file.missing and sys_file.size are not trusted. Records whose file is gone are left out and counted in the summary. Several sys_file records pointing to the same path count as one copy (their usages are added up).
  • Sorted by wasted space ((copies − 1) × size), 25 groups per page, with lazy-loaded thumbnails.
  • Per copy: path, file-level metadata (title, alternative, description), number of file references and soft references (for example t3://file links in RTE fields). Click the usage count to see each reference with edit links that return to the report.
  • Suggested keeper (star icon): the copy with the most usages, then the oldest one.
  • Badges when copies carry different file-level metadata or when soft references exist.
  • CSV export of the folder's groups: one row per file reference (or per copy without references).

Deep check and delete 

Each copy has a Deep check that searches the whole database live for usages of that one file:

  1. sys_file_reference (every workspace and language),
  2. the reference index sys_refindex (relation fields, links in RTE/link fields, form definitions),
  3. a text search in every string/text/JSON column of every table for the public path (also URL-encoded), the combined identifier (1:/path/file.jpg), t3://file?uid=N and the legacy file:N syntax, exact-matched,
  4. other sys_file records indexing the same physical file.

Technical tables (caches, logs, history, sys_file*, sys_refindex , sessions, tx_filefix_*) are skipped and listed. Usages by deleted records are shown but do not block deletion. Text matches stop at 50.

Only when the check finds zero active usages does a Delete file button appear. After a second confirmation the server runs the deep check again and refuses (HTTP 409) if the file is in use. Deletion goes through FAL (physical file, sys_file , metadata, processed files) and is written to tx_filefix_log as delete_duplicate.

The report itself is read-only; nothing is merged or re-linked automatically.

Oversized images 

File > Filelist → Oversized images button in the toolbar (admins only). Lists images in the current folder (subfolders optional) whose width or height exceeds the configured maximum, with the estimated saving if resized to fit.

  • Maximum width/height from the extension configuration (default 1900 × 1900 px). Checked types: jpg, jpeg, jfif, png, webp, tif, tiff, bmp (gif is left out because it may be animated). Max width/height and Include subfolders can be changed in the report for that view only.
  • Dimensions come from sys_file_metadata ; files are checked on disk and sizes read from disk. Images missing on disk or without known dimensions are left out and counted in the summary.
  • Estimated saving = size × (new pixels / old pixels). Sorted by largest saving, 25 per page.

Resize 

  1. Dry run: the image is converted on the server, the result is measured and discarded. A modal shows before/after dimensions and size.
  2. Resize now: the server checks the file again and replaces it via FAL replaceFile().
  • Same file name, same sys_file uid, same format: references, crops and links keep working. size, sha1 and dimensions are updated; processed files are regenerated.
  • Resizes to the limits from the extension configuration (not the values typed into the report form), aspect ratio kept. JPEG quality follows $GLOBALS['TYPO3_CONF_VARS']['GFX']['jpg_quality'] . The embedded colour profile is always kept.
  • The result is only kept when it is at least 10 KB smaller.
  • Refused for: types other than jpg, jpeg, png; files indexed by more than one sys_file record; non-Local storage drivers; missing or non-writable files; images already within the limits.

Dashboard widgets 

Requires typo3/cms-dashboard (optional). Widget group filefix with four widgets:

Widget Shows
Unused files Number of unused files on disk
Reclaimable space Disk space deleting them would free (for example 6.4 GB)
Unused files by type Doughnut chart by extension
Unused space by type Same chart, by size

Each physical file is counted once, only when all its sys_file records are unused, only when it exists on disk, with its size read from disk.

The result is cached in sys_registry (namespace tx_filefix, key stats.storage.<uid>) and rebuilt when older than 1 hour, or on demand via the schedulable filefix:stats:update command. Widgets use the default storage.