Latest version: 1.3.8 (Apr 13 2000) - development stopped

TODO man page(incomplete)
bugs readme changes todo man page mail

mp3html-1.3.8.tar.gz (28,943 bytes) - (T1)
Debian packages ( contributed by Frederik Steen

Please Read! I do not have either the time or the inclination to do much development on MP3html these days. It's usefulness seems to have been surpassed by recent trends in distributed file sharing. Originally, MP3html was used mainly by MP3 traders to advertise their offerings on web pages. With Napster, Gnutella, and the like proliferating, MP3 traders are a dying breed.

Working on MP3html has been a great learning experience for me. It never turned into exactly what I envisioned, but it got close enough that a lot of people were using it. It was the basis for several spinoffs -- Java file selectors, web-based CD burning, etc -- and I'm very glad for that. As it stands, MP3html is a useful tool (which still can't sort itself) with several known bugs and issues. If anyone is interested in taking over development, please let me know.

MP3html is a utility for generating listings of MP3 files based on their ID3 tags and information such as bitrate, duration, and file size. Because it makes use of template files and is script-friendly, it can easily be used to create just about any kind of list you can think of. It's most common use is creating HTML lists for peoples' web pages (thus it's name). Of course, due to it's flexibility, it can be used for anything from creating playlists to making SQL databases. Originally, it was just a hacked together interface for some ID3 routines I coded because I was bored, but since then it has evolved into something that is almost, but not quite, entirely unlike a useful program.

If I may take some time to toot my own horn, I have to say that MP3html is pretty freakin' awesome. I've been able to use it to do so many kinds of MP3 manipulations I never dreamed of that it's frightening. I've started writing scripts so you can duplicate other programs (like id3ren) with it and now that I've added preset templates, the possibilities are nearly endless. If only I could get sorting to work....

As of the release of 1.3.0, MP3html is undergoing heavy testing and development. All the code from 1.2.4 has been deleted and I started over again with the goals of better performance and more configurability. I'm happy to say that I've achieved both goals. Once I get the 1.3.X series stabilized and all the features added, I will release version 2.0.0 and stop active development for awhile so I can concentrate on redoing my web pages and working on some other programming projects.

For a quick and dirty example, click here.

If you want to see someone who's put MP3html to good use with a Perl script, check out Miguel Larios' site.

I'm always interested in how people are using MP3html. If you have a publicly accessable page that is created with MP3html, please send me an email and I'll put your URL on this page.

For fun, I went back and looked at MP3html 1.0.0. It's amazing how far this program has come since I started writing it less than a year ago. As of 1.3.6, there have been 15 releases (an average of over 1.25 per month, which isn't too bad) and the code size has increased to almost 50kb while getting faster, more stable, and much more configurable. 1.3.6 has 19 commandline options compared to the 2 that 1.0.0 supported and the number of tags has jumped from 9 to 43. Sometimes I even impress myself.


(May 24 2000) News: Frederik Steen < has contributed Debian (.deb) packages of MP3html for i386. If you guys who run Debian could download them, try them, and then report back to either me or him, we'd both appreciate it. Now, if I could only get the RPMs going....

(Apr 13 2000) News: I fixed two big segfault bug in MP3html and am releasing 1.3.8 mainly as a bugfix release. It also fixes (again) the track length problems - this time in relation to files with extremely large ID3v2 headers. So grab it and play with it - it's more stable and a bit cleaner.

(Apr 11 2000) News: 1.3.7 is a bit buggy, it seems. If you only specify one file on the commandline, it will segfault after displaying the templates. I'll try to get this fixed soon. My apologies for introducing the bug.

(Mar 17 2000) News: After a disgustingly long wait five and a half month lull, I'm releasing version 1.3.7. It has tons of bug fixes, debugging support, a few more configuration options and (most importantly) preset template support. Of course, the preset templates are a bit broken right now, but oh well... live with it =). The main reason I released this is that I'm not sure when I'll have time to work on it again.

(Oct 5 1999) News: I just released 1.3.6 with a bunch of new features ($STEREO tag, commandline options to define it's behavior, and more average tags (for song length)). Also, I had managed to disable the "-S --space" option somewhere along the line (probably in 1.3.3) so I fixed that.

(Sep 25 1999) News: Since I've been lax about coding stuff for MP3html, here's a new version to tide you over. Nothing very important in this one, I've added a few new tags for average filesizes, a commandline option to remove leading "The "'s from the artist name, and finally got started on a man page. In related news, I've stopped calling 1.3.X a development series. As of now, it is the stable series since no one seems to be having any major problems compiling and running it anymore.

(Sep 11 1999) News: I've recieved a bug report saying that MP3html's time tags won't work when using VBR (Variable BitRate) files. This isn't a huge surprise since I hadn't heard of VBRs when I did most of the code and still haven't found one myself. If I find the filespecs and it looks like it'll be easy to fix, I will. Otherwise, you guys are probably SOL until I get to work on 3.0.0 (which will be in Perl). Don't hold your breath for that, though.

(Aug 13 1999) News: Since I haven't updated this page or anything in over a month (mainly because I was on vacation), I'm going to give you guys a general overview of what's been happening with MP3html since I released 1.3.4. The only change to the program itself so far is that I finally added a man page (which is still incomplete). I also learned a lot of Perl while on vacation, so I thought heavily about rewriting MP3html into Perl. I finally decided against it since I'm going to be doing a lot of cool stuff with MP3html+MySQL+PHP3/Perl that can be done with the current MP3html code.

I'm also going to be spending a fair amount of time getting these pages up to snuff once I get my new server up (it's in place, but it crashed, probably due to a failing hard drive). That will result in a bunch of stuff that really should be up here now like links to the README, CHANGES, TODO, and BUGS files and hopefully a HTML-ized source browser just for fun. Of course, that will take a fair amount of work, so don't expect it for quite some time.

On August 23, I'm moving to Sacramento for school, so there'll probably be a substantial downtime while I get adjusted and figure out how to get net access from my dorm room (which isn't wired for data - the bastards!). On a side note, if anyone in the Sacramento area has any use for an intern who knows Linux, C, and some Perl as well as sundry other things, get in contact with me ASAP as I could use a job.

(Jul 7 1999) News: I'm going on vacation from July 8th through August 7th or so and won't be able to work on MP3html during that time. Because of that, I'm putting 1.3.4 into all your grubby little hands to play with. I'll still be reading my email every once in awhile, so feel free to send me any bug reports. The new features in this version include 3 new commandline options (two for specifying header and footer data on the commandline and one for manipulating the new tag, $INCREMENT). Speaking of that, I made $INCREMENT to automatically count up so you can have lists of MP3s that have cooresponding numbers.

(Jul 1 1999) News: After a fair amount of wait, I'm releasing 1.3.3. It doesn't add any additional features, but it fixes some bugs, changes the "-D --define" syntax and has much better code for the commandline processing. I'd appreciate it if users would upgrade and check for bugs. Sorry, but Lyrics3 support still hasn't made it in since I can't find any files to test it on. My plans for the near future are vague, but they involve conditional tags and a Perl script for making MySQL databases of your MP3s.

(Jun 11 1999) News: A new version, 1.3.2, is out now. It fixes a few really bad bugs in 1.3.1, makes it so that a few tags behave properly, and adds the ability to define your own tags from the commandline with a new option, "-D --define". Everything seems pretty stable (although the tag defining hasn't been well tested) and most everything is in place except for sorting (still). Look for some Lyrics3 support in 1.3.3 and maybe some conditional tags.

(Jun 7 1999) News: I'm releasing 1.3.1 because it features a lot of code changes and cleanups. The only userlevel changes are an ability to read files with ID3v2 tags (although not the ID3v2 tags themselves) and the ability to read files with junk at the beginning. Aside from that, I finally got around to writing my own text substitution routines, modularized a few things, and introduced a bug involving header and footer templates (don't worry, there's an easy workaround). Still no sorting, but it's becoming a lot more stable. Get it and play with it!


This is the list of known bugs for MP3html. If you find a bug that isn't listed in here, email the author immediately. If you fix a bug in this list (or one you find), make sure to notify the author. In short, if there are problems involved, I want to know.

If you want to report a bug and be really helpful, do a "make debug" and send me the output of it with the error. I realize that the debug mode sucks right now, but it's all I've got.

  • playlist support is broken
  • track time still isn't properly reported
  • preset.h/mp3html.c: segfaults when tags are in the preset footer (& maybe header). Pretty important to fix this
  • llist.c: Still no sorting/swapping
  • subst.c:
    • Time tags are wrong when using VBR (Variable Bit Rate) MP3 files
    • substitute_tags() uses constants where there should be dynamic variables (this might not be fixed anytime soon as it doesn't really affect anything except my self esteem)
    • Incrementing variable is poorly initialized. Nothing big.
  • libid3: Still a few unresolved issues (tag stripping isn't yet implemented)

<- Back