PHPackages                             davaxi/mp3info - 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. davaxi/mp3info

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

davaxi/mp3info
==============

The fastest php library to extract mp3 tags &amp; meta information.

0.0.8(3y ago)039LGPL-3.0PHPPHP &gt;=5.4.0

Since Jan 10Pushed 3y agoCompare

[ Source](https://github.com/davaxi/Mp3Info)[ Packagist](https://packagist.org/packages/davaxi/mp3info)[ RSS](/packages/davaxi-mp3info/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (1)Versions (9)Used By (0)

Mp3Info
=======

[](#mp3info)

The fastest PHP library to get mp3 tags&amp;meta.

[![Latest Stable Version](https://camo.githubusercontent.com/02d48dc08b628c87afeffd6e0667e177697e58f7f237a372f416f7c9e9c96d4f/68747470733a2f2f706f7365722e707567782e6f72672f6461766178692f6d7033696e666f2f762f737461626c65)](https://packagist.org/packages/davaxi/mp3info)[![Total Downloads](https://camo.githubusercontent.com/f9d7a4e905415a41d5909f9c0075c93704f831d7b29e2ffef74fb1fb765b555f/68747470733a2f2f706f7365722e707567782e6f72672f6461766178692f6d7033696e666f2f646f776e6c6f616473)](https://packagist.org/packages/davaxi/mp3info)[![Latest Unstable Version](https://camo.githubusercontent.com/dc68ef5ebe87bf55e8b55f76f541ed175939d4740c2d166d8cc2b793d5b909ac/68747470733a2f2f706f7365722e707567782e6f72672f6461766178692f6d7033696e666f2f762f756e737461626c65)](https://packagist.org/packages/davaxi/mp3info)[![License](https://camo.githubusercontent.com/95c7bbb860641d7bf5230fc696281663edd31e06063159577eb6d475253c4d1b/68747470733a2f2f706f7365722e707567782e6f72672f6461766178692f6d7033696e666f2f6c6963656e7365)](https://packagist.org/packages/davaxi/mp3info)

This class extracts information from mpeg/mp3 audio:

- Audio information:
    - Duration
    - Bit Rate
    - Sample Rate
    - Channels mode
    - Codec and Layer version
    - Frames count
- Audio image (cover)
- Audio tags:

tagid3v1id3v2songsongTIT2artistartistTPE1albumalbumTALByearyearTYERcommentcommentCOMMtracktrackTRCKgenregenreTCONContent
=======

[](#content)

1. [Usage](#usage)
2. [Performance](#performance)
3. [Console scanner](#console-scanner)
4. [API](#api)
    - Audio information
    - Class methods
5. [Technical information](#technical-information)

Usage
-----

[](#usage)

After creating an instance of `Mp3Info` with passing filename as the first argument to the constructor, you can retrieve data from object properties (listed below).

```
use davaxi\Mp3Info\Mp3Info;
// To get basic audio information
$audio = new Mp3Info('./audio.mp3');

// If you need parse tags, you should set 2nd argument this way:
$audio = new Mp3Info('./audio.mp3', true);
```

And after that access object properties to get audio information:

```
echo 'Audio duration: '.floor($audio->duration / 60).' min '.floor($audio->duration % 60).' sec'.PHP_EOL;
echo 'Audio bitrate: '.($audio->bitRate / 1000).' kb/s'.PHP_EOL;
// and so on ...
```

To access id3v1 tags use `$tags1` property. To access id3v2 tags use `$tags2` property. Also, you can use combined list of tags `$tags`, where id3v2 and id3v1 tags united with id3v1 keys.

```
// simple id3v1 tags
echo 'Song '.$audio->tags1['song'].' from '.$audio->tags1['artist'].PHP_EOL;
// specific id3v2 tags
echo 'Song '.$audio->tags2['TIT2'].' from '.$audio->tags2['TPE1'].PHP_EOL;

// combined tags (simplies way to get as more information as possible)
echo 'Song '.$audio->tags['song'].' from '.$audio->tags['artist'].PHP_EOL;
```

Performance
-----------

[](#performance)

- Typically it parses one mp3-file with size around 6-7 mb in less than 0.001 sec.
- List of 112 files with constant &amp; variable bitRate with total duration 5:22:28 are parsed in 1.76 sec. *getId3* library against exactly the same mp3 list works for 8x-10x slower - 9.9 sec.
- If you want, there's a very easy way to compare. Just install `nass600/get-id3` package and run console scanner against any folder with audios. It will print time that Mp3Info spent and that getId3.

Console scanner
---------------

[](#console-scanner)

To test Mp3Info you can use built-in script that scans dirs and analyzes all mp3-files inside them. To launch script against current folder:

```
php bin/scan ./
```

API
---

[](#api)

### Audio information

[](#audio-information)

PropertyDescriptionValues`$codecVersion`MPEG codec version1 or 2`$layerVersion`Audio layer version1 or 2 or 3`$audioSize`Audio size in bytes. Note that this value is NOT equals file size.*int*`$duration`Audio duration in seconds.microsecondslike 3603.0171428571 (means 1 hour and 3 sec)`$bitRate`Audio bit rate in bpslike 128000 (means 128kb/s)`$sampleRate`Audio sample rate in Hzlike 44100 (means 44.1KHz)`$isVbr`Contains `true` if audio has variable bit rate*boolean*`$hasCover`Contains `true` if audio has a bundled image*boolean*`$channel`Channel mode`'stereo'` or `'dual_mono'` or `'joint_stereo'` or `'mono'``$tags1`Audio tags ver. 1 (aka id3v1).\["song" =&gt; "Song name", "year" =&gt; 2009\]`$tags2`Audio tags ver. 2 (aka id3v2), only text ones.\["TIT2" =&gt; "Long song name", ...\]`$tags`Combined audio tags (from id3v1 &amp; id3v2). Keys as in tags1.\["song" =&gt; "Long song name", "year" =&gt; 2009, ...\]`$coverProperties`Information about a bundled with audio image.\["mime\_type" =&gt; "image/jpeg", "picture\_type" =&gt; 1, ...\]`$_parsingTime`Contains time spent to read&amp;extract audio information in *sec.msec*### Class methods

[](#class-methods)

- `$audio = new Mp3Info($filename, $parseTags = false)`Creates new instance of object and initiate parsing. If you need to parse audio tags (id3v1 and id3v2), pass `true` as second argument is.
- `$audio->getCover()`Returns raw content of bundled with audio image.
- `Mp3Info::isValidAudio($filename)`Static method that checks if file `$filename` looks like a mp3-file. Returns `true` if file looks like a mp3, otherwise false.

Technical information
---------------------

[](#technical-information)

Supporting features:

- id3v1
- id3v2.3.0, id3v2.4.0
- CBR, Variable Bit Rate (VBR)

Used sources:

- [mpeg header description](http://mpgedit.org/mpgedit/mpeg_format/mpeghdr.htm)
- [id3v2 tag specifications](http://id3.org/Developer%20Information). Concretely: [id3v2.3.0](http://id3.org/id3v2.3.0), [id3v2.2.0](http://id3.org/id3v2-00), [id3v2.4.0](http://id3.org/id3v2.4.0-changes)
- [Descripion of VBR header "Xing"](https://multimedia.cx/mp3extensions.txt)
- [Xing, Info and Lame tags specifications](http://gabriel.mp3-tech.org/mp3infotag.html)

###  Health Score

25

—

LowBetter than 40% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 90.7% 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 ~278 days

Recently: every ~311 days

Total

8

Last Release

1408d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/a68449b96d2614457b3445028b54a4666e4292cd735788f29cadff51e4ed8923?d=identicon)[davaxi](/maintainers/davaxi)

---

Top Contributors

[![wapmorgan](https://avatars.githubusercontent.com/u/6000618?v=4)](https://github.com/wapmorgan "wapmorgan (39 commits)")[![davaxi](https://avatars.githubusercontent.com/u/870169?v=4)](https://github.com/davaxi "davaxi (2 commits)")[![paurakhsharma](https://avatars.githubusercontent.com/u/20378877?v=4)](https://github.com/paurakhsharma "paurakhsharma (1 commits)")[![shannah](https://avatars.githubusercontent.com/u/2677562?v=4)](https://github.com/shannah "shannah (1 commits)")

---

Tags

audioid3mp3id3v1id3v2mpeg

### Embed Badge

![Health badge](/badges/davaxi-mp3info/health.svg)

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

###  Alternatives

[wapmorgan/mp3info

The fastest php library to extract mp3 tags &amp; meta information.

1471.4M6](/packages/wapmorgan-mp3info)[php-ffmpeg/php-ffmpeg

FFMpeg PHP, an Object Oriented library to communicate with AVconv / ffmpeg

5.0k21.0M150](/packages/php-ffmpeg-php-ffmpeg)[kiwilan/php-audio

PHP package to parse and update audio files metadata, with `JamesHeinrich/getID3`.

3012.0k](/packages/kiwilan-php-audio)[danog/madelineproto

Async PHP client API for the telegram MTProto protocol.

3.3k841.1k18](/packages/danog-madelineproto)[duncan3dc/meta-audio

A library to read and write metadata tags to audio files

353.2k](/packages/duncan3dc-meta-audio)[buggedcom/phpvideotoolkit

PHPVideoToolkit is a set of classes aimed to provide a modular, object oriented and accessible interface for interacting with videos and audio through the FFmpeg program.

26381.3k1](/packages/buggedcom-phpvideotoolkit)

PHPackages © 2026

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