Skip to content
cltPublic

About

A native macOS app for browsing folders of MP3 files and editing ID3 tags.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Tagger

Tagger is a small native macOS app for browsing folders of MP3 and M4A files and editing common music tags.

Tagger showing a folder hierarchy, MP3 file list, and ID3 tag editor

Current feature set

  • Three-column folder tree, file list, and tag editor
  • Folder summary with album cover, album, artist, and audio-file count; updates from review drafts before Save
  • Single-file editing plus Finder-style multi-selection for batch editing
  • Single-file filename editing with the original extension preserved
  • Review-first tag suggestions from file names and MusicBrainz, with original Cover Art Archive images and optional Apple Music cover choices
  • Mixed-value protection: batch saves change only fields explicitly marked Apply
  • ID3v2.3 and ID3v2.4 reading and writing
  • MP4 metadata reading and writing for M4A files containing AAC or Apple Lossless (ALAC) audio
  • Title, artist, album, album artist, track, disc, year, genre, composer, comment, lyrics, and artwork
  • Explicit Save and Revert controls, including Command-S
  • Save/discard/cancel confirmation before navigating away, closing, or quitting
  • Sandboxed access to user-selected folders, remembered between launches
  • Protection against overwriting externally changed files or unsupported or malformed metadata
  • Audio bytes and unknown ID3 frames or MP4 atoms preserved when saving supported files

Auto-tag lookup

Choose Find Tags… (Command-Shift-T) for a single selected MP3 or M4A. Suggestions inferred from its file name appear immediately and work offline. For online suggestions, review or edit the title, artist, and album search terms, then choose Search MusicBrainz. The terms start with the current editor draft, falling back to values inferred from the file name. Search terms affect only the lookup; editing them does not change your tags.

Choose a candidate to compare its suggestions with your current draft. Empty fields are checked by default; replacing an existing value requires checking its field. Missing suggestions never erase values. Apply to Draft merges only checked fields into your existing edits. Review or edit that draft, then choose Save (Command-S) to write it to the audio file, or Revert to discard all unsaved changes. Searching, reviewing, applying, and cancelling never write to the file. Applied suggestions use the same unsaved-change protections as manual edits.

Choosing a MusicBrainz release also looks up its front cover in Cover Art Archive. The review shows your current artwork alongside the suggested image. Artwork is checked by default only when the draft has none; replacing an existing image requires checking Artwork. You can apply just the artwork even when the text tags already match. Missing or unavailable covers leave existing artwork untouched and do not prevent applying text suggestions. Tagger tries the selected release's original front cover, then its 1200- and 500-pixel thumbnails if the original is missing, invalid, or too large. Each image is limited to 8 MiB and 4096 pixels per side and decoded as JPEG or PNG before it appears in the review.

Choose Find Apple Music Covers for additional choices from Apple's US catalog. Choose a cover, inspect its preview, actual pixel dimensions, and full album edition name, then check Artwork to include it. Apple alternatives never replace the selected cover automatically or change the MusicBrainz text suggestions. A remaster or deluxe edition may have different artwork; the catalog's release year alone does not identify the edition. Up to three Apple covers are downloaded per search.

Apple lookup uses the public iTunes Search API and needs no account or API key. Tagger requests a 3000-pixel CDN variant as best effort and falls back to the supplied artwork URL. That larger-size substitution is not a documented Search API guarantee; the review reports the image's decoded size, never an assumed original or maximum resolution. Source links remain visible. Artwork remains copyrighted by its respective owners.

Online lookup is opt-in: opening Find Tags does not contact MusicBrainz. Choosing Search MusicBrainz sends the displayed title, artist, and album over HTTPS. Choosing a MusicBrainz candidate may fetch its release details and sends its release identifier to Cover Art Archive, which serves images through Internet Archive. Find Apple Music Covers separately sends the album and artist to Apple and fetches matching images from Apple's image CDN. Tagger does not upload the audio file, artwork, full file path, comments, or lyrics. MusicBrainz requests share an application-wide rate limiter. You can use filename suggestions while an online search is pending or unavailable. MusicBrainz core metadata is made available under CC0; MusicBrainz remains the source of the lookup results.

The main window resizes in both directions. Batch selection keeps a bounded header and scrollable editor, and restored or resized windows fit the current screen’s usable area above the Dock and below the menu bar.

Build and run

The project requires a Swift 6.2-or-newer Xcode toolchain. It currently defaults to /Applications/Xcode-beta.app, then falls back to /Applications/Xcode.app. Set TAGGER_XCODE_APP to use another installation.

Open Tagger.xcodeproj in Xcode, or run:

./script/build_and_run.sh

Run the test suite with:

./script/test.sh

The checked-in Xcode project is generated from project.yml. After changing the project specification, regenerate it with:

./script/generate_project.sh

Verify that the generated project has not drifted from the specification with:

./script/check_project.sh

Current Debug and Release configurations use a placeholder bundle identifier and local ad-hoc signing. Choose your own reverse-DNS identifier, development team, and distribution signing settings in project.yml before sharing the app.

Initial-version limitations

The header above the file list and editor summarizes the audio files directly inside the current folder as soon as it opens; subfolders are summarized when you open them. It prefers album artist, falling back to track artist, and shows placeholders for missing or mixed albums, artists, and covers. Unreadable files are counted without blocking browsing. Single-file and applied batch edits update the summary with an Unsaved changes indicator; Revert restores saved values. Folder scans only read local metadata and keep compact cover thumbnails. External file edits are refreshed when the folder is reopened or the file is selected.

Batch editing works on MP3 and M4A files in the currently displayed folder, including mixed selections; use Command-click or Shift-click to select them. Batch saves are sequential, and a failed file does not roll back files already saved. Auto-tag lookup and filename editing are currently single-file only. Auto-tag lookup is text-based and does not fingerprint audio; it proposes title, artist, album, album artist, track, disc, year, and optional front-cover artwork while leaving genre, composer, comments, lyrics, and the filename unchanged. Artwork can also be added, replaced, or removed manually in the draft and is written only on Save. The editor exposes one primary artwork image, one comment, plain lyrics, integer track/disc numbers without totals, and a four-digit year. Saving may collapse multiple artwork, comment, or lyrics variants into the displayed primary value, so test with copies before using irreplaceable files.

M4A support edits MP4 tags without converting or re-encoding AAC or ALAC audio. Existing M4A track and disc totals are preserved when changing or clearing the displayed numbers. M4A files must be 512 MB or smaller in this version. DRM-protected files, fragmented containers, files with video, and unsupported or malformed layouts are rejected without modification. MP3 files with unsupported ID3v2.2 tags are also rejected. Renaming preserves the original extension, including its capitalization, and does not convert between formats.

MP3 tag support is provided by the Apache-2.0-licensed AudioMarker 0.1.1 package, pinned exactly for repeatable builds. M4A tag support is implemented in Tagger without additional dependencies.

License

Tagger is available under the MIT License.

About

A native macOS app for browsing folders of MP3 files and editing ID3 tags.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages