-
Notifications
You must be signed in to change notification settings - Fork 1
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.
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| 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.) |
| Field | Description |
|---|---|
acoustId |
AcoustID identifier for this recording |
acoustIdFingerprint |
AcoustID audio fingerprint |
| Field | Description |
|---|---|
isrc |
International Standard Recording Code |
barcode |
Product barcode |
catalogNumber |
Catalog number |
| 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 |
| Field | Description |
|---|---|
recordingDate |
When the recording was made |
releaseDate |
When this release was published |
originalReleaseDate |
Original release date |
| Field | Description |
|---|---|
initialKey |
Initial key (musical key) |
color |
Color associated with this release |
mood |
Mood of the track |
| 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 |
| Field | Description |
|---|---|
copyrightMessage |
Copyright message |
license |
License information |
| Field | Description |
|---|---|
podcastDescription |
Podcast description |
podcastSeriesCategory |
Podcast category |
podcastUrl |
Podcast URL |
podcastGlobalUniqueId |
Podcast unique identifier |
podcastKeywords |
Podcast keywords |
| 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 |
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}');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',
));Only set fields are modified — everything else stays intact:
await Haudiotagger.updateExtended('/path/to/song.mp3', ExtendedChanges(
mood: 'chill', // Only mood changes
));await Haudiotagger.removeExtended('/path/to/song.mp3');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);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 |
Made with ❤️ and 🦀 by Hirdaya Shrestha