Ogg Vorbis (and FLAC) Comment Field Recommendations

Submitted by jbreland on Sat, 05/09/2009 - 13:00

Note: The following information was originally published at http://reactor-core.org/ogg-tagging.html, but this page is no longer available. I found this information to be extremely useful, so I'm posting a copy of it here for archival purposes. This copy was pulled from a mirror of the original site, located at http://age.hobba.nl/audio/mirroredpages/ogg-tagging.html, on 05/09/2009.

This is currently a direct copy of the original source content, modified only slightly in order to match the format of my site. In time I may modify or extend it, but any changes will be clearly indicated.

Updated 12/14/2010:  Additional proposed fields added below, indicated by "proposed by Legroom.net."

Suggestions For Tagging Vorbis/FLAC Files

Originally published Thu Jul 3 20:35:53 PDT 2003

The following recommendations were developed by a community of Ogg/Vorbis users for their own use.

The purpose of the set of tags in this recommendation is to provide information about the track that contains the tags. It is not the purpose of the tags to provide general information about the piece of music in the track, such as a listing of every recording that contains that same piece of music. External databases and the internal Ogg metadata stream are appropriate for information about the music, except where it fills one of the 4 goals listed below.


  1. Identify a track so the listener can know what he is listening to.
  2. Identify a track to allow music companies to profit from it.
  3. Meet goals 1 and 2 without access to external data sources.
  4. Identify a track within a database that contains information about the track.

NOT goals

  1. Stuff every available bit of information about a track and the CD it is on into the TAGS section. (liner notes, lyrics, the bandleaders dogs name...)
  2. Backward compatibility with ID3 and MP3 tagging schemes, structures, and infrastructures.

Piracy happens. We can't prevent it. At least we can encourage less damaging behaviors, such as making sure than when someone likes a track, they have enough information to reimburse the artist by going out and purchasing the original source media the music came on.

These recommendations are written in the context of http://www.xiph.org/ogg/vorbis/doc/v-comment.html, which is authoritative.

All tags are OPTIONAL; you can have an ogg file with NO tags present and it will still be compliant. It is RECOMMENDED that you put enough tags in the ogg to meet goals 1 through 4 above. The tags needed will vary with each recording, and will often be no more than the tags already used.

Before we continue, here is a nifty bourne shell function you can stick in your ~/.bash_profile:

ogg-grep () {
   for i in "$@"; do
      vorbiscomment -l "$i"|grep -i "$REGEX" >/dev/null && echo "$i";

You could use it like this:

ogg-grep "CONDUCTOR=.*Karajan" ~/music/oggfiles/*.ogg

It would display, one per line, all the ogg files where Karajan was the conductor of the piece.

What is the effect of following these Recommendations?

Users will be playing their oggs; their player software is expected to display the tags that exist in an oggfile, intelligently.
Therefore the users are not affected by these recommendations and need know nothing about them. Player programs ARE affected, and their job should be made as easy as possible.
There will be a subset of users who create ogg files. Inasmuch as it is their responsibility to tag their files correctly, it would be nice if they knew about these recommendations. However, their ripping software should make it trivial for them to fill in the correct tags in the common cases, and let them access the full tagset if they feel they need it.
Therefore, encoders will almost not notice the adoption of these recommendations, unless they wanted to benefit from its increased flexibility, in which case they will rejoice. Ripper and tagging SOFTWARE on the other hand will need to support these recommendations, and again, its job should be made as easy as possible.
Coders are those who write the software used by users and encoders. They are the ones who will need to make their software compliant, and the ones who need to make sure their software is easy for people to use.
Therefore, it is the coders who will be affected most by these recommendations. Their job should be made as easy as possible so they can support it trivially and well.


A compliant Ogg player program will intelligently display, or let the user specify how to display, all the tags in an Ogg file.

A compliant Ogg file may contain tags not in these recommendations.

Compliant tag editors and rippers may support tags not in these recommendations, but should encourage use of recommended tags over tags not in this document.

Character Set Encoding of Tags

UTF-8 is the default encoding for tag data. Unfortunately UTF-8 muffed it for Asian languages by doing the equivalent of giving the same character codes to English, Russian, and Greek letters.

Fortunately UTF-8 itself has an internal, standard solution to the problem: http://www.unicode.org/unicode/reports/tr27/#tag which basically says: mark the language of text with U+E0001 LANGUAGE TAG, followed by the RFC 3066 language ID (ie. "ja") encoded in lowercase ASCII plus 0xE0000. This is the only mechanism recognized by this document.

Programs which don't want to interpret such markup can simply ignore it; it is zero width. The scope of the language setting is until the end of the tag, or until a new language setting is encountered, whichever comes first.

We have the following STANDARD tags

Singleton tags, which should only appear once. If one of these tags appears more than once, its last appearance should be displayed if there is only room to display one instance of the tag.

if appropriate, an album name
for information to be displayed on systems with limited display capabilities. it is not a replacement for the ENSEMBLE and PERFORMER tags, but typically will summarize them.
who publishes the disc the track came from
who holds copyright to the track or disc the track is on
if part of a multi-disc album, put the disc number here
this number lets you order a CD over the phone from a record shop.
there may be a barcode on the CD; it is most likely an EAN or UPN (Universal Product Number).
the record label or imprint on the disc
record labels often put the catalog number of the source media somewhere on the packaging. use this tag to record it.
the license, or URL for the license the track is under. for instance, the Open Audio license.
the number of the work; eg, Opus 10, BWV 81, K6
the recording media the track came from. eg, CD, Cassette, Radio Broadcast, LP, CD Single
"the work", whether a symphony, or a pop song
the track number on the CD
Make sure you don't put DATE or LOCATION information in this tag. "live", "acoustic", "Radio Edit" "12 inch remix" might be typical values of this tag
The person who encoded the Ogg file. May include contact information such as email address and phone number.
Put the settings you used to encode the Ogg file here. This tag is NOT expected to be stored or returned by cddb type databases. It includes information about the quality setting, bit rate, and bitrate management settings used to encode the Ogg. It also is used for information about which encoding software was used to do the encoding.

Additional singletons proposed by Legroom.net.

full lyrics for the track
a full URL linking to the album's official web site

The remaining tags are multiples; if they are present more than once, all their occurrences are considered significant.

composer of the work. eg, Gustav Mahler
the person who arranged the piece, eg, Ravel
the person who wrote the lyrics, eg Donizetti
for text that is spoken, or was originally meant to be spoken, the author, eg JRR Tolkien
conductor of the work; eg Herbert von Karajan. choir directors would also use this tag.
individual performers singled out for mention; eg, Yoyo Ma (violinist)
the group playing the piece, whether orchestra, singing duo, or rock and roll band.
a division within a work; eg, a movement of a symphony. Some tracks contain several parts. Use a single PART tag for each part contained in a track. ie, PART="Oh sole mio"
The part number goes in here. You can use any format you like, such as Roman numerals, regular numbers, or whatever. The numbers should be entered in such a way that an alphabetical sort on this tag will correctly show the proper ordering of all the oggs that contain the contain the piece of music.
like the genre tag from the cddb but without the limitations. You can put any genre you want in this tag. If you think "Pink Floyd" are a genre unto themselves, say so here. For crossover works, or ambiguous works, use as many GENRE tags as you think it takes to describe the styles used.
date or date-time of relevance to the track. The date must be in ISO 8601 format, but may be followed by a space character, then any text you wish, including the same date in any other format. None of the alternate formats in ISO 8601 may be used. Only the primary format in ISO 8601 is to be used. q.v. http://www.cl.cam.ac.uk/~mgk25/iso-time.html eg, DATE="1999-08-16 (recorded)" or DATE="1999-08-16 recorded August 16, 1999"
location of recording, or other location of interest
additional comments of any nature.

Examples of Tag Usage

Here is a typical example for most POP music.


Here is what you might see if you played it with ogg123:

Album: Joyride
Ensemble: Roxette
Title: Joyride

Bitstream is 2 channel, 44100Hz

Here is a typical example for CLASSICAL music.

LABEL=Deutsche Grammophon
COMPOSER=Gustav Mahler
CONDUCTOR=Herbert von Karajan
ENSEMBLE=Berliner Philharmoniker
PERFORMER=Liza don Getti (soprano)
PERFORMER=Joe Barr (piano)
PART="movement 1. Allegreto"
TITLE="Symphony no. 4"
COMMENT=I was present when this recording was made; met my wife there.
COMMENT=The flautist ate a green pickle with a purple egg.

And here is what you might see if you played it with ogg123:

Playing from file ogg/mystery_file_I_got_from_gnutella.ogg
Label: Deutsche Grammophon
Composer: Gustav Mahler
Conductor: Herbert von Karajan
Ensemble: Berliner Philharmoniker
Performers: Liza don Getti (soprano)
            Joe Barr (piano)
Title: Symphony no. 4 (Opus 8), movement 1. Allegreto
Comments: I was present when this recording was made; met
          my wife there. The flautist ate a green pickle
          with a purple egg.

Bitstream is 2 channel, 44100Hz

Here is a really whacked example that uses all the tags in this document.

AUTHOR=Reverend Lovejoy
PERFORMER=Nix Nax (piccolo)
ENSEMBLE=Upper East German Woodwind Band
ALBUM=Tootles and Tunes
TITLE=The Life and Times of Friar Tux
PART=1. Minuet (allegro con molto)
GENRE=classical (avant garde)
DATE=1974-09-03 recorded
LOCATION=Easthampton Cathedral, Chesterwickshire
COMMENT=This is the wierdest, ugliest piece of music I've ever heard. Its the ugly duckling of the classical music world.

And here is what it would like like from ogg123

Album: Tootles and Tunes
Track: 8
Title: The Life and Times of Friar Tux (Opus 1), first minuet (allegro con molto)
Composer: Stravinksy
Conductor: Zubin Meta
Performer: Nix Nax (piccolo)
Ensemble: Upper East German Woodwind Band
Arranger: Ravel
Lyricist: Puccini
Author: Reverend Lovejoy
Label: BIZ
Copyright: Unclaimed
EAN/UPN: 111111111
Genre: classical (avant garde)
Producer: Fat Fred
Recorded on: Sept 3, 1974
Recorded at: Easthampton Cathedral, Chesterwickshire
Comments: This is the wierdest, ugliest piece of music I've ever heard.
          Its the ugly duckling of the classical music world. It has a
          monotone reading throughout, of that famous sermon by
          Reverend Lovejoy, "Life and Times of Friar Tux"

Bitstream is 2 channel, 44100Hz

This document is provided for reference purposes only. It is not endorsed by Reactor Core staff or Jonathan Walther, unless otherwise stated. The battle for Christ's Kingdom is always changing, moving to new fronts. The Christian soldier must be trained to prove every thought, ideology, train of reasoning, and claim to truth he meets. Slander is from Satan; Truth is from the Holy Spirit. The wise and the just check every fact for themselves before judging. (1 Thessalonians 5:21, 1 John 4:1-3, John 14:26, John 16:26, Revelation 12:10, Proverbs 14:15, Proverbs 18:13)

Definition Lists in OpenOffice Writer

Submitted by jbreland on Fri, 05/01/2009 - 02:25

This is a random tip that I wanted to publish here because I think it's useful, it's not very obvious (at least not to me), and other people can benefit from it.

A definition list, for those unfamiliar with the term, is essentially a list of terms and descriptions. You can also think of it as a glossary, similar to those found in various school text books or technical books.

For example, here's a simple definition list as supported by HTML:

A very cool website that you should visit more frequently
An excellent free and open source office suite

As you can see, definition lists provide a convenient way to present a list of terms and definitions in a structured format. (They can also be styled to be more visually appealing, such as bolding the terms increasing the description indentation, but that's beyond the scope of this post.)

Unfortunately, OpenOffice does not seem to support definition lists by default. At this point you may be asking yourself, "what's the big deal? Just type a term, hit enter, hit tab, then type the definition. Done." While that's true, it has to be manually and explicitly done for every term. If you have multiple definition lists in different locations, you need to make sure you use the same format for all of them. Worse, if you want to change the way it looks (such as bolding the terms), you need manually manually apply the new change to each and every one of the previous terms you've defined.

This is a needlessly tedious task that I'd rather to avoid. :-) Instead, I prefer to use a style that automatically applies all of the formatting for me. Additionally, if I ever wanted to change the formatting, I can simply update the style and OpenOffice will automatically update all previous definitions for me, which I like because it lets me be lazy.

As an aside, if you're unfamiliar with using styles in OpenOffice, you should really look into them. Once you get familiar with using them to control formatting, they make creating, and even more importantly maintaining and updating, documents much easier than using manual formatting. The OpenOffice documentation website provides a very thorough introduction to using styles and templates.

So, after much web searching and cursing, I decided to to create my own style for this. To do this, you'll (obviously) need to be using the Styles and Formatting feature of OpenOffice. I'm going to assume you're already familiar with this, so if you're not please hit up the OpenOffice documentation link above.

We'll need to define two new styles, one for the term and one for the description, and we'll create the definition term style first. To get started, right-click on the Default style in the Styles and Formatting window and select New. Enter a descriptive name, such as Definition List Term. I like to have my terms bolded, so click on the Font tab and select Bold under the Typeface column. That's all you need for a basic term, so click OK to save the style.

Next, right-click on the Default style and select New once again. This time we're creating the definition description style, so enter something like Definition List Description. In the same window, change Next Style to Definition List Term, then click on the Indents & Spacing tab. Set the Before Text indent to something like 0.30". I suggest also setting the a Below Paragraph spacing to help distinguish the entries from each other. A value of 0.10" should be sufficient. Click OK to save this style.

Finally, we need to make one more tweak to the definition term style. Right-click on the Definition List Term style and click Modify. Under the Organizer tab, set the Next Style to Definition List Description. Click OK to save once more.

Now, you're ready to use your shiny new definition lists! Select the Definition List Term style (double-click it in the Styles and Formatting window) and enter a term. The text should show up in bold. Next, hit enter to drop to the next line and start typing the description. The style should have automatically been switched to Definition List Description when you hit enter, which means your description should not be automatically indented. Hit enter again and style should be switched back to Definition List Term to allow you to enter a new term and repeat. Enter one or two more definitions just to get a feel for it. Once you're done, hit enter to go to a new line, and then select the Default style to get back to "normal".

At this point you should see how handy using a style like this can be, but let's take this one step further to really drive home the point. Let's say you decided that you want your descriptions to be italicized in addition to indented. Rather than modifying each description we've already typed, we can simply edit the description style and let OpenOffice do it for us. Right click on the Definition List Description style and click Modify. Select the Font tab, then select Italic under the Typeface column and click OK. Boom! All your previous descriptions should not be italicized.

I hope you find this little tip useful. Also, if you've never used OpenOffice before and this post is piqued your curiosity, you can download it for free and try it out today.

AutoFLAC Download Links Fixed

Submitted by jbreland on Sun, 03/22/2009 - 01:51

Someone recently e-mailed me about the about being unable to download AutoFLAC. It turns out that some changes I made about a week ago broke some of the download links for software on this website, which I had not noticed in my testing. As far as I can tell, only AutoFLAC was affected. I just fixed that issue, so AutoFLAC can be downloaded once again.

Sorry for the inconvenience.

New LegRoom Certificates

Submitted by jbreland on Thu, 03/12/2009 - 06:39

This post is only relevent to users of the SSL (https) site and LegRoom.net e-mail users.

As part of the server rebuild process that I mentioned in my last post, I've created new certificates for my web server and mail server. Accessing these services will likely cause various security warnings to be displayed in your browser or mail client. This is expected. To resolve this issue, please perform the following steps.

The new LegRoom CA certificate can be found here: http://www.legroom.net/legroom_ca.crt


  1. Click on the CA certificate link above
  2. When prompted, check the "web sites" and "email users" options, then click OK

Internet Explorer

  1. Click on the CA certificate link above
  2. Click Open
  3. Click Install Certificate
  4. Click Next, Next, Finish
  5. Click Yes
  6. Click OK
  7. Click OK

If you use Thunderbird to check your LegRoom.net e-mail, you will be shown a "Website Certified by an Unknown Authority" message when you next attempt to login. Select "Accept this certificate permanently" and click OK.

Unexpected Downtime and Site Upgrade

Submitted by jbreland on Thu, 03/12/2009 - 06:34

I apologize for the complete outage for the last day and a half. I had to unexepctedly perform a complete server rebuild, which took a while to get everything installed, configured, and properly tested. In the process, I also upgraded the website to the latest version of Drupal. As of about 6:30am CDT this morning, everything should be back up and running. Please let me know if you find any problems.

Account Cleanup

Submitted by jbreland on Thu, 03/12/2009 - 05:38

A lot of users register accounts on this site for the sole purpose of spamming. One of my usual "maintenance" tasks is to delete all inactive accounts more than 1 week old. These are accounts that were requested by users, but were never activated after receiving the confirmation e-mail. Most often, these types of accounts are created either by scripts, or by people using fake e-mail addresses during registration.

There are a whole lot of other accounts that are created and activated, but then then go forever unused. Most of these are created with the intention of spamming, but because I have decent spam controls on my site they give up and move on to easier targets. Since I'd prefer not to have a whole lot of unused, potentially malicious accounts sitting out there indefinitely, I'm going to begin deleting all accounts that have not been used since initial activation and are more than 3 months old.

In the (unlikely) event that any legitimate visitors are affected, please just create a new account. I apologize for the inconvenience.

Universal Extraction Translation Updates

Submitted by jbreland on Wed, 10/22/2008 - 03:17

A few contributors have sent in some new and updated translations for Universal Extractor 1.6. If interested, you can download them from the main UniExtract page, or just use the direct links below.

New translation:

Updated translations:

Much thanks to the volunteers who took the time to create and update these translations.

Universal Extractor 1.6 Released

Submitted by jbreland on Fri, 10/17/2008 - 18:21

After a really long release cycle, the final version of Universal Extractor 1.6 is ready to go. This version improves on the core functionality of UniExtract, most notably:

  • Full Vista support
  • Individual vs. global preferences (see ChangeLog for details)
  • new Preferences GUI
  • Code execution warnings

It also, of course, includes support for additional formats, as well as the latest versions of support binaries such as 7-Zip.

For more information:
Universal Extractor home page and downloads
Universal Extractor ChangeLog
Universal Extractor feedback and support

I know this has been a long time coming. I hope you find it was worth the wait.