# beets v2.11.0 — Release v2.11.0 - Product: beets (https://whatsnew.fyi/product/beets) - Vendor: Adrian Sampson - Date: 2026-05-06 - Version: v2.11.0 - Original notes: https://github.com/beetbox/beets/releases/tag/v2.11.0 - Permalink: https://whatsnew.fyi/product/beets/releases/v2.11.0 - Labels: Platforms: Desktop What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **changed** — Smart Playlist Plugin: restructure splupdate command output to include track count per-playlist summary, show per-track details only with -v flag, make --pretend flag report would be updated count, and add --format option for customizing track line format - **removed** — Smart Playlist Plugin: remove --pretend-paths option - **changed** — import command: remove source archive after successful import when move: yes is set - **added** — FromFilename Plugin: support track prefix when parsing track number from filename - **added** — Tidal plugin: new plugin for fetching metadata from Tidal with support for album and track lookups by ID, batch operations, search by query, and ISRC codes and barcode/EAN support - **added** — Add support for adding or modifying subtitle field (ID3 tag TIT3) - **fixed** — Bad Files Plugin: respect quiet mode during import so corrupt-file prompt is suppressed in non-interactive imports - **fixed** — Discogs Plugin: prevent duplicate featured artists in track artist fields when same artist is credited in both artists and extraartists - **fixed** — import command: fix duplicate album art files being created when re-importing albums with FetchArt Plugin enabled - **fixed** — import command: metadata source plugin ID lookups now correctly call each plugin's own lookup method when running in parallel - **changed** — import command: multi-disc album detection now recognizes cassette, digital media, and vinyl as disc markers in addition to disc, disk, and cd - **fixed** — import command: tags with zero distance penalty are no longer shown as differences in match display - **fixed** — import command: with original_date: yes, album-level year, month, and day now use original release date - **fixed** — Lyrics Plugin: fix apostrophe handling in musixmatch backend slug - **fixed** — MusicBrainz Plugin: correctly handle release dates where leading or intermediate components are missing - **fixed** — Improve DBAccessError messages to mention directory missing and file permissions as potential causes - **fixed** — Library path migration now handles manually edited database rows where item or album-art paths were stored as SQLite TEXT values instead of bytes - **changed** — Spotify Plugin: batch spotifysync track and audio-features API requests and deduplicate repeated Spotify track IDs within a run #### New features - [Smart Playlist Plugin](https://beets.readthedocs.io/en/stable/plugins/smartplaylist.html): The `splupdate` command output is restructured. The per-playlist summary now includes a track count. Per-track details are shown only when `-v` flag is provided (`beet -v splupdate`). The `--pretend` flag produces the same output but reports *"N playlists would be updated"* instead of *"N playlists updated"*. The `--format` option allows customizing the track line format. The `--pretend-paths` option was removed (use `--format='$path'` instead). :bug: (#6183) - [import command](https://beets.readthedocs.io/en/stable/reference/cli.html#import-cmd): When importing an archive (zip, tar, rar, or 7z) with `move: yes`, the source archive is now removed after a successful import. Archives are preserved if any file in the archive was not imported (e.g. skipped as a duplicate, or the import was aborted), and in non-move import modes. - [FromFilename Plugin](https://beets.readthedocs.io/en/stable/plugins/fromfilename.html): Support `track` prefix when parsing the track number from the filename (e.g., `track01.m4a`). - **Tidal plugin**: Introduces a new plugin for fetching metadata from Tidal. It supports album and track lookups by ID, including batch operations via `albums_for_ids` and `tracks_for_ids`. It also enables search by query as well as identifier-based retrieval, with support for ISRC codes (tracks) and barcode/EANs (albums). This is an initial, relatively minimal implementation, but already fully usable for common metadata workflows. We welcome feedback, improvement ideas, and community contributions to further extend its capabilities. See [Tidal Plugin](https://beets.readthedocs.io/en/stable/plugins/tidal.html) for more information. - Add support for adding or modifying a subtitle (ID3 tag `TIT3`) field #### Bug fixes - [Bad Files Plugin](https://beets.readthedocs.io/en/stable/plugins/badfiles.html): Respect quiet mode (the `--quiet` flag or `import.quiet: yes` config) during import so the corrupt-file prompt is suppressed in non-interactive imports. :bug: (#4736) - [Discogs Plugin](https://beets.readthedocs.io/en/stable/plugins/discogs.html): Prevent duplicate featured artists in track artist fields when the same artist is credited both in `artists` (for example with `Feat.` join text) and `extraartists` as `Featuring`. :bug: (#6166) - [import command](https://beets.readthedocs.io/en/stable/reference/cli.html#import-cmd): Fix duplicate album art files (e.g. `cover.2.jpg`) being created when re-importing albums with the [FetchArt Plugin](https://beets.readthedocs.io/en/stable/plugins/fetchart.html) plugin enabled. Old album art is now properly removed when replacing duplicate albums during import. :bug: (#1264) :bug: (#6205) - [import command](https://beets.readthedocs.io/en/stable/reference/cli.html#import-cmd): Metadata source plugin ID lookups now correctly call each plugin's own lookup method when running in parallel. :bug: (#6583) - [import command](https://beets.readthedocs.io/en/stable/reference/cli.html#import-cmd): Multi-disc album detection now recognizes `cassette`, `digital media`, and `vinyl` as disc markers (e.g. `vinyl 1`, `12 vinyl 2`), in addition to the existing `disc`, `disk`, and `cd` markers. - [import command](https://beets.readthedocs.io/en/stable/reference/cli.html#import-cmd): Tags with a zero distance penalty are no longer shown as differences in the match display. Previously, custom `distance_weights` could cause fields with no actual mismatch to appear in the `≠` line. - [import command](https://beets.readthedocs.io/en/stable/reference/cli.html#import-cmd): With `original_date: yes`, album-level `year`, `month`, and `day` now use the original release date. :bug: (#6577) - [Lyrics Plugin](https://beets.readthedocs.io/en/stable/plugins/lyrics.html): Fix apostrophe handling in the `musixmatch` backend slug. :bug: (#4759) - [MusicBrainz Plugin](https://beets.readthedocs.io/en/st _[Truncated at 4000 characters — full notes: https://github.com/beetbox/beets/releases/tag/v2.11.0]_