PHPackages                             rhorber/id3rw - 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. rhorber/id3rw

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

rhorber/id3rw
=============

PHP-Library for reading and writing ID3 tags.

v0.5-alpha(6y ago)016MITPHPPHP &gt;=7.0.0

Since Oct 21Pushed 6y agoCompare

[ Source](https://github.com/rhorber/id3rw)[ Packagist](https://packagist.org/packages/rhorber/id3rw)[ Docs](https://github.com/rhorber/id3rw)[ RSS](/packages/rhorber-id3rw/feed)WikiDiscussions master Synced today

READMEChangelog (2)Dependencies (1)Versions (3)Used By (0)

ID3rw
=====

[](#id3rw)

> PHP-Library for reading and writing ID3 tags.

> ℹ The Library supports versions 2.3.0 and 2.4.0.

> ℹ The library is in early development stage, but if possible the current API (public methods) will not change.

> ⚠ As I have limited time to work on this library it progresses slowly. If you have any suggestions or questions, or you need a feature, feel free to file an issue.

This project adheres to [Semantic Versioning](https://semver.org/).

Example
-------

[](#example)

```
// Read frames from file.
$reader = new \Rhorber\ID3rw\Reader('/home/user/myfile.mp3');
$frames = $reader->getFrames();
print_r($frames);

// Change title.
$frames['TIT2']['information'] = '2018-10-21_'.$frames['TIT2']['information'];

// Write a new file (with modified title).
$writer = new \Rhorber\ID3rw\Writer();
$writer->writeNewFile($frames, '/home/user/mynewfile.mp3', '/home/user/myfile.mp3');
```

License
-------

[](#license)

[![License](https://camo.githubusercontent.com/1e1cb7bae9fc55a01fc5443d26e358dc21c129253bcfa9841db85c4f25aa2ecf/687474703a2f2f696d672e736869656c64732e696f2f3a6c6963656e73652d6d69742d626c75652e7376673f7374796c653d666c61742d737175617265)](http://badges.mit-license.org)

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details

TODO
----

[](#todo)

Features I will add:

- Add functionality to `Reader` to return the frames as objects.
- Write tests for the `Writer`.
- Add more writing variants and expand their docs.
- Improve parsing of non-text frames.
- Return detailed info about frames (not only technical name).
- Improve readme.
- Eventually support more versions (2.3.0 and 2.4.0 are the most common ones).

- Add names and/or descriptions to the frames.
- Add the lists of frames (TCON, TFLT, TMED (TKEY), ETCO, APIC)
- Add notices when displaying TCOP and TPRO

About/History
-------------

[](#abouthistory)

I needed a library for modifying some ID3 tags. I did not find any library for doing that (getid3 was not able to write correctly), so I started writing my own in plain PHP.

Version 2.3.0
-------------

[](#version-230)

The following frames can be parsed the same way is in version 2.4.0

- ETCO
- MCDI
- TXXX
- UFID
- URL link frames (W000 - WZZZ)
- WXXX

###  Health Score

21

—

LowBetter than 19% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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 ~561 days

Total

2

Last Release

2195d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/6c24f2671fed089b39368c2e1e7fff7d93286297b510fb1e55eeb11f92f96a3d?d=identicon)[rhorber](/maintainers/rhorber)

---

Top Contributors

[![rhorber](https://avatars.githubusercontent.com/u/4517789?v=4)](https://github.com/rhorber "rhorber (31 commits)")

---

Tags

id3phpreaderwriterid3id3tag

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/rhorber-id3rw/health.svg)

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

###  Alternatives

[mhor/php-mediainfo

PHP wrapper around the mediainfo command

120574.8k7](/packages/mhor-php-mediainfo)[nass600/get-id3

PHP library for handling audio/video files metadata

6133.0k3](/packages/nass600-get-id3)[causal/extractor

This extension detects and extracts metadata (EXIF / IPTC / XMP / ...) from potentially thousand different file types (such as MS Word/Powerpoint/Excel documents, PDF and images) and bring them automatically and natively to TYPO3 when uploading assets. Works with built-in PHP functions but takes advantage of Apache Tika and other external tools for enhanced metadata extraction.

16244.5k](/packages/causal-extractor)

PHPackages © 2026

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