Skip to content

Extended Metadata

Hirdaya Shrestha edited this page Sep 14, 2026 · 1 revision

hAudiotagger provides access to 60+ extended metadata fields commonly used by music libraries, tagging services, and professional audio tools.

Overview

Extended metadata is kept separate from the core Tag to maintain a clean separation between basic metadata (title, artist, album) and metadata provider data (MusicBrainz IDs, ISRC codes, etc.).

// Basic metadata
final tag = await Haudiotagger.read('/path/to/song.mp3');
print(tag?.title);  // Basic field

// Extended metadata
final ext = await Haudiotagger.getExtended('/path/to/song.mp3');
print(ext.isrc);    // Extended field

Available Fields

MusicBrainz

Field Description
musicBrainzRecordingId Unique identifier for this recording
musicBrainzTrackId Unique identifier for this track
musicBrainzReleaseId Unique identifier for this release
musicBrainzReleaseGroupId Unique identifier for this release group
musicBrainzArtistId Unique identifier for this artist
musicBrainzReleaseArtistId Unique identifier for the release artist
musicBrainzWorkId Unique identifier for this work
musicBrainzReleaseType Release type (album, single, EP, etc.)

AcoustID

Field Description
acoustId AcoustID identifier for this recording
acoustIdFingerprint AcoustID audio fingerprint

Identifiers

Field Description
isrc International Standard Recording Code
barcode Product barcode
catalogNumber Catalog number

People & Roles

Field Description
arranger Arranger
conductor Conductor
director Director
engineer Engineer
lyricist Lyricist
mixDj DJ who mixed
mixEngineer Mix engineer
performer Performer
producer Producer
publisher Publisher
label Record label
remixer Remixer
writer Writer
composer Composer
originalLyricist Original lyricist

Dates

Field Description
recordingDate When the recording was made
releaseDate When this release was published
originalReleaseDate Original release date

Style

Field Description
initialKey Initial key (musical key)
color Color associated with this release
mood Mood of the track

URLs

Field Description
audioFileUrl URL to the audio file
audioSourceUrl URL to the audio source
commercialInformationUrl Commercial information URL
copyrightUrl Copyright URL
trackArtistUrl Track artist URL
radioStationUrl Radio station URL
paymentUrl Payment URL
publisherUrl Publisher URL

Legal

Field Description
copyrightMessage Copyright message
license License information

Podcast

Field Description
podcastDescription Podcast description
podcastSeriesCategory Podcast category
podcastUrl Podcast URL
podcastGlobalUniqueId Podcast unique identifier
podcastKeywords Podcast keywords

Other

Field Description
setSubtitle Set subtitle
showName Show name
contentGroup Content group
trackSubtitle Track subtitle
language Language
script Script
parentalAdvisory Parental advisory status
fileOwner File owner
originalFileName Original file name
originalMediaType Original media type
encodedBy Encoded by
encoderSoftware Encoder software
encoderSettings Encoder settings

Usage

Read Extended Metadata

final ext = await Haudiotagger.getExtended('/path/to/song.mp3');

print('ISRC: ${ext.isrc}');
print('MusicBrainz Recording ID: ${ext.musicBrainzRecordingId}');
print('Mood: ${ext.mood}');
print('Producer: ${ext.producer}');

Write Extended Metadata

Replaces all extended fields:

await Haudiotagger.setExtended('/path/to/song.mp3', ExtendedTag(
  isrc: 'US-S1Z-99-00001',
  mood: 'upbeat',
  catalogNumber: 'CAT-12345',
  producer: 'Dr. Dre',
  musicBrainzRecordingId: 'abc-123-def-456',
));

Partial Update

Only set fields are modified — everything else stays intact:

await Haudiotagger.updateExtended('/path/to/song.mp3', ExtendedChanges(
  mood: 'chill',  // Only mood changes
));

Remove All Extended Fields

await Haudiotagger.removeExtended('/path/to/song.mp3');

Web Usage

All extended metadata methods have *FromBytes variants for web support:

// Read
final ext = await Haudiotagger.getExtendedFromBytes(fileBytes);

// Write
final modified = await Haudiotagger.setExtendedFromBytes(fileBytes, ext);

// Partial update
final updated = await Haudiotagger.updateExtendedFromBytes(fileBytes, changes);

// Remove
final cleaned = await Haudiotagger.removeExtendedFromBytes(fileBytes);

Format Support

Extended metadata support varies by format:

Format Support
MP3 (ID3v2) Full
FLAC (Vorbis) Full
MP4/M4A (ilst) Partial
Ogg Vorbis Full
Opus Full
AAC Full

Clone this wiki locally