PHPackages                             123dok/file-type-detector - 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. 123dok/file-type-detector

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

123dok/file-type-detector
=========================

Detects file type by filename or content and generates correct mimetype.

v1.1.11(7y ago)093MITPHP

Since Jan 9Pushed 6y ago1 watchersCompare

[ Source](https://github.com/vuthaihoc/FileTypeDetector)[ Packagist](https://packagist.org/packages/123dok/file-type-detector)[ RSS](/packages/123dok-file-type-detector/feed)WikiDiscussions master Synced today

READMEChangelog (8)Dependencies (1)Versions (19)Used By (0)

FileTypeDetector
================

[](#filetypedetector)

Files type detector based on file name extension or file content (binary content).

[![Composer package](https://camo.githubusercontent.com/6c2ea621b82cd817c206fb77c7b06a62763c3aa2e69de0c8b9d0af07f7b627d7/687474703a2f2f636f6d706f7365722e6e6574776f726b2f62616467652f7761706d6f7267616e2f66696c652d747970652d6465746563746f72)](https://packagist.org/packages/wapmorgan/file-type-detector)[![Latest Stable Version](https://camo.githubusercontent.com/24d0656480778e0a9f9f0dab5892c15c2cef25c1db5748edd76db9c82188849f/68747470733a2f2f706f7365722e707567782e6f72672f7761706d6f7267616e2f66696c652d747970652d6465746563746f722f762f737461626c65)](https://packagist.org/packages/wapmorgan/file-type-detector)[![Total Downloads](https://camo.githubusercontent.com/f613c74ce2ce7bcfa6ade32c50b411a5ed7c86ac81f9f98cc20803132130675e/68747470733a2f2f706f7365722e707567782e6f72672f7761706d6f7267616e2f66696c652d747970652d6465746563746f722f646f776e6c6f616473)](https://packagist.org/packages/wapmorgan/file-type-detector)[![Latest Unstable Version](https://camo.githubusercontent.com/626034218b066a7bb6e253208c4aed70346674122758a7087f1ea54efb699926/68747470733a2f2f706f7365722e707567782e6f72672f7761706d6f7267616e2f66696c652d747970652d6465746563746f722f762f756e737461626c65)](https://packagist.org/packages/wapmorgan/file-type-detector)[![License](https://camo.githubusercontent.com/2e4c1e15d0f6057a1f4a8529079079a453cf0f6c7a3453970fe64f16cc8cd84c/68747470733a2f2f706f7365722e707567782e6f72672f7761706d6f7267616e2f66696c652d747970652d6465746563746f722f6c6963656e7365)](https://packagist.org/packages/wapmorgan/file-type-detector)[![Tests](https://camo.githubusercontent.com/81f2e1fc970cf01e7175321650b9ed0301fefc8f03bfa9587e4fc60a10449e76/68747470733a2f2f7472617669732d63692e6f72672f7761706d6f7267616e2f46696c65547970654465746563746f722e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/wapmorgan/FileTypeDetector)

1. Usage
2. Installation
3. Supported formats

Usage
=====

[](#usage)

File Type detection
-------------------

[](#file-type-detection)

- Detection by file name: `Detector::detectByFilename(...filename...): array|boolean`
- Detection by file content or stream content: `Detector::detectByContent(...filename/resource...): array|boolean`

Both functions will return an `array` with following elements in case of success:

- `[0]` - Type of file (`Detector::AUDIO` and so on)
- `[1]` - Format of file (`Detector::MP3` and so on)
- `[2]` - Mime type of file (`'audio/mpeg'` for example)

In case of failure it will return `false`.

Example:

```
$type = Dok123\FileTypeDetector\Detector::detectByFilename($filename);
// or
$type = Dok123\FileTypeDetector\Detector::detectByContent('file-without-extension');
// or
$type = Dok123\FileTypeDetector\Detector::detectByContent(fopen('http://somedomain/somepath', 'r'));
```

Mimetype generation
-------------------

[](#mimetype-generation)

To get correct mimetype for file only there is `getMimeType($file)` function.

```
$mime = Dok123\FileTypeDetector\Detector::getMimeType($file);
// or
$mime = Dok123\FileTypeDetector\Detector::getMimeType(fopen('somefile', 'r'));
```

Installation
============

[](#installation)

Install package via composer:

```
composer require 123dok/file-type-detector

```

Supported formats
=================

[](#supported-formats)

Available to use types and their formats.

ApplicationArchiveAudioDatabaseDisk\_imageDocumentFeedFontImagePresentationScenarioSpreadsheetVideoapk7zaacaccdbisodocatomotfbmpodpregcsv3gpcomarcamrmdbnrgdocxrssttfgifpptodsasfexearjflacodbvhdhtmlicopptxtsvavixapbzip2m3usqlitejsonjpegxlsflvcabmidimarkdownpngxlsxm4vdarmp3odtpsdmkvgzipoggpdftiffmovjarwavrtfmp4lzma2wmatxtmpegrarxmlswftaryamlvobzipwebmwmvFormats support status.

FormatExtensionDetection by contentMimeTypeSignature3gp3gp+video/3gppat \[0\]: (0x0001466747970336770)7z7z+application/x-7z-compressedat \[0\]: (0x377abcaf271c)Aacaac+audio/x-aacat \[0\]: (0xfff1) / at \[0\]: (0xfff9)Accdbaccdb+application/x-msaccessat \[0\]: (0x01005374616e6461726420414345204442)Amramr+audio/amrat \[0\]: (0x2321414d52)Apkapk+application/vnd.android.package-archiveat \[0\]: (0x504b34) &amp; at \[30\]: ('AndroidManifest.xml')Arcarc+application/x-freearcat \[0\]: (0x4172431)Arjarj+application/arjat \[0\]: (0x60ea)Asfasf--Atomatom+application/atom+xmlat \[0\]: ('&lt;?xml') &amp; at \[10\]: (fuzzy search 'Atom')Aviavi+video/x-msvideoat \[0\]: (0x52494646) &amp; at \[8\]: (0x415649204c495354)Bmpbmp+image/bmpat \[0\]: (0x424d)Bzip2bz2+application/x-bzip2at \[0\]: (0x425a68)Cabcab+application/vnd.ms-cab-compressedat \[0\]: (0x4d534346)Comcom-application/x-msdownloadCsvcsv-text/csvDardar+application/x-darat \[0\]: (0x0007b)Docdoc+application/mswordat \[0\]: (0xd0cf11e0a1b11ae1) &amp; at \[512\]: (0xeca5c10)Docxdocx+application/vnd.openxmlformats-officedocument.wordprocessingml.documentat \[0\]: (0x504b3414060) &amp; at \[-22\]: (fuzzy search 'word/')Exeexe+application/x-msdownloadat \[0\]: (0x4d5a)Flacflac+audio/x-flacat \[0\]: (0x664c614300022)Flvflv+video/x-flvat \[0\]: (0x464c561)Gifgif+image/gifat \[0\]: (0x474946383761) / at \[0\]: (0x474946383961)Gzipgz+application/gzipat \[0\]: (0x1f8b)Htmlhtml+text/htmlat \[0\]: ('&lt;html')Icoico+image/x-iconat \[0\]: (0x0010)Isoiso+application/x-iso9660-imageat \[0\]: (0x4344303031)Jarjar+application/java-archiveat \[0\]: (0x504b341408080) / at \[0\]: (0x5f27a889)Jpegjpeg+image/jpegat \[0\]: (0xffd8ffe0)Jsonjson-application/jsonLzma2xz-application/x-xzM3um3u+audio/x-mpegurlat \[0\]: ('#EXTM3U')M4vm4v+video/x-m4vat \[0\]: (0x00018667479706d703432)Markdownmd-text/markdownMdbmdb+application/x-msaccessat \[0\]: (0x01005374616e64617264204a6574204442)Midimidi+audio/midiat \[0\]: (0x4d546864)Mkvmkv+video/x-matroskaat \[0\]: (0x1a45dfa3934282886d6174726f736b61)Movmov+video/quicktimeat \[4\]: (0x6674797071742020) / at \[4\]: (0x6d6f6f76)Mp3mp3+audio/mpegat \[0\]: (0x494433)Mp4mp4+video/mp4at \[4\]: (0x6674797069736f6d) / at \[4\]: (0x6674797033677035) / at \[4\]: (0x667479704d534e56) / at \[4\]: (0x667479704d344120)Mpegmpeg+video/mpegat \[0\]: (0x001) &amp; at \[-4\]: (0x001b7)Nrgnrg+-at \[-8\]: ('NERO') / at \[-12\]: ('NER5')Odbodb+application/vnd.oasis.opendocument.databaseat \[0\]: (0x504b34) &amp; at \[30\]: ('mimetypeapplication/vnd.oasis.opendocument.') &amp; at \[73\]: ('base')Odpodp+application/vnd.oasis.opendocument.presentationat \[0\]: (0x504b34) &amp; at \[30\]: ('mimetypeapplication/vnd.oasis.opendocument.') &amp; at \[73\]: ('presentation')Odsods+application/vnd.oasis.opendocument.spreadsheetat \[0\]: (0x504b34) &amp; at \[30\]: ('mimetypeapplication/vnd.oasis.opendocument.') &amp; at \[73\]: ('spreadsheet')Odtodt+application/vnd.oasis.opendocument.textat \[0\]: (0x504b34) &amp; at \[30\]: ('mimetypeapplication/vnd.oasis.opendocument.') &amp; at \[73\]: ('text')Oggogg+audio/oggat \[0\]: ('OggS')Otfotf+application/x-font-otfat \[0\]: (0x4f54544f)Pdfpdf+application/pdfat \[0\]: (0x25504446)Pngpng+image/pngat \[0\]: (0x89504e47da1aa)Pptppt+application/vnd.ms-powerpointat \[0\]: (0xd0cf11e0a1b11ae1) &amp; at \[512\]: (0xa0461df0) / at \[0\]: (0xd0cf11e0a1b11ae1) &amp; at \[512\]: (0x06e1ef0) / at \[0\]: (0xd0cf11e0a1b11ae1) &amp; at \[512\]: (0xf0e83)Pptxpptx+application/vnd.openxmlformats-officedocument.presentationml.presentationat \[0\]: (0x504b3414060) &amp; at \[-22\]: (fuzzy search 'ppt/')Psdpsd+image/vnd.adobe.photoshopat \[0\]: (0x38425053)Rarrar+application/x-rar-compressedat \[0\]: (0x526172211a70) / at \[0\]: (0x526172211a710)Regreg+text/plainat \[0\]: (0xfffe) / at \[0\]: (0x52454745444954)Rssrss+application/rss+xmlat \[0\]: ('&lt;?xml') &amp; at \[10\]: (fuzzy search '&lt;rss')Rtfrtf+application/rtfat \[0\]: (0x7b5c72746631)Swfswf+application/x-shockwave-flashat \[0\]: (0x5a5753)Tartar+application/x-tarat \[0\]: (0x757374617203030) / at \[0\]: (0x757374617220200)Tifftiff+image/tiffat \[0\]: (0x492049) / at \[0\]: (0x49492a0) / at \[0\]: (0x4d4d02a) / at \[0\]: (0x4d4d02b)Tsvtsv-text/tab-separated-valuesTtfttf+application/x-font-ttfat \[0\]: (0x01000)Txttxt-text/plainVhdvhd--Vobvob+video/x-ms-vobat \[0\]: (0x001ba) &amp; at \[-4\]: (0x001b9)Wavwav-audio/x-wavWebmwebm+video/webmat \[0\]: (0x1a45dfa3)Wmawma-audio/x-ms-wmaWmvwmv-video/x-ms-wmvXapxap-application/x-silverlight-appXlsxls+application/vnd.ms-excelat \[0\]: (0xd0cf11e0a1b11ae1) &amp; at \[512\]: (0x981000650)Xlsxxlsx+application/vnd.openxmlformats-officedocument.spreadsheetml.sheetat \[0\]: (0x504b3414060) &amp; at \[-22\]: (fuzzy search 'xl/')Xmlxml+application/xmlat \[0\]: ('&lt;?xml')Yamlyaml-text/yamlZipzip+application/zipat \[0\]: (0x504b34) / at \[0\]: (0x504b56) / at \[0\]: (0x504b78)

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity72

Established project with proven stability

 Bus Factor1

Top contributor holds 80% 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 ~32 days

Recently: every ~19 days

Total

18

Last Release

2864d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/2509658?v=4)[Stupid Dev](/maintainers/vuthaihoc)[@vuthaihoc](https://github.com/vuthaihoc)

---

Top Contributors

[![wapmorgan](https://avatars.githubusercontent.com/u/6000618?v=4)](https://github.com/wapmorgan "wapmorgan (52 commits)")[![vuthaihoc](https://avatars.githubusercontent.com/u/2509658?v=4)](https://github.com/vuthaihoc "vuthaihoc (12 commits)")[![peter279k](https://avatars.githubusercontent.com/u/9021747?v=4)](https://github.com/peter279k "peter279k (1 commits)")

---

Tags

filesmimetypeformatsfiletype

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/123dok-file-type-detector/health.svg)

```
[![Health](https://phpackages.com/badges/123dok-file-type-detector/health.svg)](https://phpackages.com/packages/123dok-file-type-detector)
```

###  Alternatives

[wapmorgan/file-type-detector

Detects file type by filename or content and generates correct mimetype.

35367.8k2](/packages/wapmorgan-file-type-detector)[lorisleiva/lody

Load files and classes as lazy collections in Laravel.

956.6M9](/packages/lorisleiva-lody)[dfridrich/php-mime-type

Simple PHP class for guessing file mime type based on file extension with ability to use in Symfony project.

17274.8k3](/packages/dfridrich-php-mime-type)[colinodell/indentation

Library to detect and manipulate indentation in strings and files

3911.5k5](/packages/colinodell-indentation)

PHPackages © 2026

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