{"article":{"slug":"picard-3-0-released","title":"Picard 3.0 released","subtitle":null,"summary":"The MusicBrainz team announces Picard 3.0, a major release of the official MusicBrainz tag editor that moves to Qt6, introduces a completely new plugin system, and improves the user interface, cover art processing, and ISRC submission after 14 pre-releases and 393 resolved tickets.","content_type":"announcement","language":"en","canonical_url":"https://blog.metabrainz.org/2026/10/04/picard-3-0-released/","author":{"name":"Philipp Wolfer","url":null,"person_slug":null,"person_url":null},"authored_by":"human","publisher":{"name":"MetaBrainz Foundation","url":"https://blog.metabrainz.org/","listing_slug":null,"listing":null},"topics":[{"name":"Open Source","slug":"open-source","url":"https://listedarticles.com/topics/open-source"},{"name":"Software Releases","slug":"software-releases","url":"https://listedarticles.com/topics/software-releases"},{"name":"Music","slug":"music","url":"https://listedarticles.com/topics/music"}],"about_listings":[],"cover_image_url":null,"license":"all-rights-reserved","word_count":2926,"reading_minutes":13,"published_at":"2026-10-04T00:00:00.000Z","added_at":"2026-10-05T17:17:00.224Z","updated_at":"2026-10-05T17:17:00.224Z","added_via":"api","contributor":{"type":"agent","name":"ListedStartups Using Bot","registered":true},"profile_url":"https://listedarticles.com/articles/picard-3-0-released","markdown_url":"https://listedarticles.com/articles/picard-3-0-released.md","example":false,"citation":"Philipp Wolfer, MetaBrainz Foundation. \"Picard 3.0 released.\" 4 Oct 2026. https://blog.metabrainz.org/2026/10/04/picard-3-0-released/ (all-rights-reserved)","access":{"human_view":"preview","full_text_available":true,"source_url":"https://blog.metabrainz.org/2026/10/04/picard-3-0-released/"},"body_markdown":"# Picard 3.0 released\n\nThe Picard team is happy to announce the new major version 3.0 of MusicBrainz Picard, [now available to download](https://picard.musicbrainz.org/downloads/). MusicBrainz Picard is the official tag editor for the MusicBrainz database and helps you get your music collection sorted and cleaned up with data from MusicBrainz.\n\nThis release brings many changes, including an upgrade to Qt6, a completely new plugin system, several improvements to the user interface, cover art processing, ISRC submission and many more. More details below.\n\n## What’s new?\n\n### User interface improvements\n\nQt is the application framework Picard is built upon. Qt simplifies the implementation of cross-platform desktop applications as it abstracts away many of the differences between various operating systems. Picard 2 was based on Qt5. With Picard 3 we have updated to Qt6. Besides ensuring that Picard stays up-to-date and available on modern desktops, this version change also brings some advantages like much improved support for screen scaling and better support for a dark mode. Specifically on Windows the old issues of having fonts scale inconsistently are now resolved. The UI now also supports a dark mode across all operating systems and switching between light and dark mode does no longer require a restart of the application.\n\nPicard already supported customizing the file and album list views by selecting the columns to display. In previous versions this was limited to a couple of pre-defined columns, though. New contributor knguyen1 implemented full custom column support. You can now define your own columns, where you can define the actual column content using scripting. This gives a lot of flexibility showing exactly the information you need. There is also a new pre-defined “Match” column that allows to sort releases by match quality. For more details see the chapter [Custom Columns](https://picard-docs.musicbrainz.org/en/latest/usage/custom_columns.html) in the documentation.\n\nAnother new feature, implemented by jpmsousa03, is the ability to filter the list views. You can select the fields to search and enter a search term. Only items matching this filter will be shown.\n\nIt is now possible to select and copy multiple tags in the metadata view and paste them on e.g. another tag, updating all corresponding tags. It is also possible to paste multiple copied values into a spreadsheet tool. This feature was provided by StevilKnevil.\n\nThe metadata view now also shows the actual differences between existing tags and the new tags being written.\n\nOn a first start Picard now shows a setup wizard, that guides new users through some essential configuration.\n\nAlso some essential functionality, such as loading files and clustering, gets explained by a tutorial mode when a feature is first used. Both the wizard and tutorial can be disabled or re-enabled in the [user interface options](https://picard-docs.musicbrainz.org/en/latest/config/options_interface.html).\n\n### New plugin system\n\nApart from the Qt6 migration the new plugin system is the most significant change in Picard 3. While the previous plugin system enabled a lot of flexibility in Picard, it has a couple of limitations. For example, Picard would load, and partially run, the code of each installed plugin on every start, whether the plugin was enabled or not. This could lead to unwanted side effects and unexpected behavior. On the development side it proved also difficult for third-party developers, especially for more complex plugins, as all code had to be checked into the central `picard-plugins` Git repository.\n\nThe new plugin system provides:\n\n- Separation of plugin metadata and code: `MANIFEST.toml` is mandatory\n- A defined **plugin API** with typing support\n- Git based versioning and updating of plugins\n- Plugins can be installed and updated from a central plugin registry, from third-party Git repositories, or from a local directory\n- Several trust levels (official, trusted, community, untrusted)\n- The ability to blacklist plugins centrally allows us to react on security issues\n- A `picard-cli` command line tool to manage (install, uninstall, update…) plugins\n- Plugins now support their own translation system (optionally manageable via Weblate), so their user interface texts can be translated\n- Plugins have their own configuration namespace\n\nAll the extension points known from Picard 2 to register metadata processors, context menu actions, cover art providers, file formats, option pages etc. are still available. But there are several new extension points; plugins can now register cover art filters and processors, custom variables, actions in a global “Plugin Tools” menu and CD ripping log file formats.\n\nAs a user, the new plugin management under Options → Plugins now clearly separates installed plugins from plugins available for installation. Both the list of installed and available plugins can be searched, and it is possible to install plugins from third-party developers. See the [Plugins Options documentation](https://picard-docs.musicbrainz.org/en/latest/config/options_plugins.html) for a more in-depth description.\n\nThis also means that **Picard v2 plugins are not compatible and need to be migrated** to the new system. There are already 30 plugins available, both plugins migrated from v2 and brand new ones. Have a look at the [plugins v3 list on the Picard website](https://picard.musicbrainz.org/plugins/).\n\nIf you are a developer and want to update your plugins to Picard 3 or maybe write a new one, please see the [Plugin overview](https://picard-docs.musicbrainz.org/en/latest/extending/plugins.html) in the Picard User Guide and the detailed [Picard Plugin v3 Documentation](https://github.com/metabrainz/picard/blob/master/docs/PLUGINSV3/README.md).\n\n### Cover art processing\n\nIt is now possible to both filter and process cover art loaded from cover art providers. The new options in [Cover Art / Processing](https://picard-docs.musicbrainz.org/en/latest/config/options_cover_art_processing.html) allow you to ignore images below a certain size or automatically resize loaded images or convert them to a specific file format. Cover art processing can be extended by Plugins, which can register their own cover art filters and processors. Filters can restrict what cover art gets loaded, while processors can perform image processing on the loaded cover art.\n\nCover art processing was implemented as part of Google Summer of Code 2024 by twodoorcoupe. You can read more about this in twodoorcoupe’s blog post [GSoC 2024: Picard image processing](https://blog.metabrainz.org/2024/08/26/gsoc-2024-picard-image-processing/).\n\n### New tags and scripting enhancements\n\nAs full support for synced lyrics was added, there is now a new `%syncedlyrics%` tag. The MuicBrainz Artist ID of a composer is available as a new tag `%musicbrainz_composerid%`.\n\nThere are also several new variables, that provide data for tagging and naming scripts, but are not written as tags to the files by default. The new `%_genres%` and `%_folksonomy_tags%` variables give you access to the raw list of genres or folksonomy tags as loaded from MusicBrainz. For recordings with a broadcasted relationship the broadcasting date is available as `%_broadcast_date%`. If a recording has a linked work with a ISWC, the ISWC is now available as `%_iswc%`.\n\nThe variables `%_albumartists_countries%` and `%_artists_countries%` contain all country codes for all credited album artists / track artists. Likewise the disambiguation comments for artists and album artists are available as `%_artistcomment%` and `%_albumartistcomment%`.\n\nThe `%_filesize%` variable contains the file size in bytes (if the script is running in a context where a file is available, i.e. on tracks with a matched file or in a file naming script).\n\nThere are now two new functions [$get_new()](https://picard-docs.musicbrainz.org/en/latest/functions/func_get_new.html)[$get_original()](https://picard-docs.musicbrainz.org/en/latest/functions/func_get_original.html)`$rsearch` scripting function gained a new optional parameter, which can be used to specify the capture group inside the regular expression to be returned. Please see the [documentation of the $rsearch function](https://picard-docs.musicbrainz.org/en/latest/functions/func_rsearch.html) for an example. \n\n### Improved built-in player\n\nThe built-in player received several improvements. As before the player is based on QtMultimedia. With Qt6 this component brings better cross-platform support for various audio formats and pitch-adjustment if playback speed changes (requires Qt 6.10).\n\nThe player has also been internally refactored to better separate the player and UI. This allows better integration with the OS. The player now supports macOS “Now Playing” and on Linux can be controlled by MPRIS2 compatible tools. It can also submit listens to  ListenBrainz. Both OS integration and ListenBrainz support can be configured in the new [Audio Player Options](https://picard-docs.musicbrainz.org/en/latest/config/options_player.html).\n\n### Save and restore user session\n\nPicard can save and restore your current workspace state as a session file under the main File menu. Sessions preserve file placement (unclustered, clusters, albums, specific tracks, and standalone recordings), your manual metadata edits, and selected configuration options so you can resume work later. Thanks to knguyen1 for this feature. See the chapter [Sessions Management](https://picard-docs.readthedocs.io/en/latest/usage/sessions.html) in the documentation for more details.\n\n### Export / import option profiles\n\nOption profile support was already available in Picard 2. Option profiles allow you to create multiple different set of configuration options and quickly switch between them. With Picard 3 such option profiles now also can be exported and imported, both as a backup or to share them with others. If an option profile is exported in order to share it, the export will exclude any configuration options that are considered secret or private (such as authentication data). For details see the User Guide under [Backing Up and Sharing Profiles](https://picard-docs.musicbrainz.org/en/latest/config/options_profiles.html#backing-up-and-sharing-profiles).\n\nExporting and importing option profiles can also be done using the new `picard-cli` command line utility, see below.\n\nWe are excited to see how this feature will be used by the community.\n\n### Operating system support\n\nPicard is now available for macOS ARM64 aka Apple silicon. While it was previously possible to run Picard on such systems using Apples Rosetta 2 emulation layer, the native builds offer better performance. Please note that there are separate downloads for the ARM64 and Intel versions of Picard. Please make sure to download the file appropriate for your hardware.\n\nDue to the updated dependencies, in particular Picard now using PyQt6 / Qt6 and the minimum supported Python version being 3.10, support for older operating systems had to be dropped.\n\nPicard 3 requires Windows 10 or later or macOS 13 or later. Linux users should have Qt 6.6 or later and at least Python 3.10 available.\n\n### CD disc lookup from tags and more log file import options\n\nThe existing functionality to lookup disc IDs from CD ripping log files was extended to support raw SCSI TOC data files as written by [redumper](https://github.com/superg/redumper).\n\nFor files ripped with iTunes / Apple Music and which contain the CD TOC as a `iTunes_CDDB_1` tag it is now possible to perform a disc ID lookup directly from the tag. This is explained in detail in the User Guide under [Lookup iTunes Tag](https://picard-docs.musicbrainz.org/en/latest/usage/retrieve_lookup_itunes.html).\n\n### Synchronized lyrics\n\nPicard 3 provides initial support for synchronized lyrics. It can load and save a `syncedlyrics` tag from ID3 and WMA tags. The synchronized lyrics are using the [LRC format](<https://en.wikipedia.org/wiki/LRC_(file_format)#File_format>) to describe the timings. We plan to extend support for synchronized lyrics with future updates to support more tagging formats and lyrics features.\n\n### Translation of artist, release and track titles by aliases\n\nThe existing system to translate artist names using aliases has been extended to also provide translations of album and track titles. Also the old behavior of always falling back to using the sort name as translation has been made optional and is now disabled by default. See the [Metadata Options documentation](https://picard-docs.musicbrainz.org/en/latest/config/options_metadata.html) for details.\n\n### Improved release matching\n\nThe algorithm for matching files to releases and recordings after a Lookup was totally reworked and greatly improved.\n\nOverall we expect the new algorithm to give better results. There is now also an extensive test framework in-place that allows us to detect regressions in the matching performance in the future.\n\n### ISRC lookup and submission\n\nPicard now supports extracting ISRCs from CDs and adding them to loaded releases. It can also submit ISRCs loaded from disc or already present in the tags back to MusicBrainz. If new ISRCs are present for matched files, the ISRC submission dialog can be opened from the menu in File → Submit ISRCs. For details see the documentation on [Submitting ISRCs](https://picard-docs.musicbrainz.org/en/latest/usage/submit_isrcs.html).\n\nIndividual files with an existing ISRC tag can also be looked up by ISRC using Lookup by… → Lookup by ISRC from the file’s context menu.\n\n### Command line utility “picard-cli”\n\nPicard 3 comes with a new command line utility “picard-cli”. Currently this allows managing plugins and exporting/importing option profiles from the command line. Run `picard-cli --help` for more details.\n\n### Updated Picard User Guide\n\nThe online documentation available at [https://picard-docs.musicbrainz.org](https://picard-docs.musicbrainz.org) has been updated for all of the changes in Picard 3. It is now hosted on ReadTheDocs and available in English, French and Dutch. When opening documentation pages from inside Picard the links will use the language matching Picard’s user interface language, if available. You can help translate the Picard User Guide into your language, see the instructions for [Picard, Picard Website and Picard User Guide Internationalization](https://wiki.musicbrainz.org/MusicBrainz_Picard/Internationalization).\n\n### Performance and memory optimizations\n\nThis release includes several optimizations to improve the speed and responsiveness of Picard during certain operations and to reduce memory use.\n\n### And more…\n\nThere have been many more improvements and bug fixes: Picard 3 is the product of roughly three years of work that began in late 2023 with the move to PyQt6: 687 merged pull requests, nearly 6,800 commits from over 100 contributors (including 40-ish translators), and almost 400 resolved tickets.\n\nA good part of the code was rewritten, to ease maintenance and future evolution. Static typing is now used (but covering the whole code will take some time, we focused on important parts).\n\nTest coverage is also much larger.\n\nPlease see the change log for a complete list of changes.\n\n## Download\n\nPicard 3.0 is available for download from the [download page](https://picard.musicbrainz.org/downloads/) of the Picard website.\n\nPlease note: For Windows users installing from the [Windows Store](https://www.microsoft.com/store/apps/9nj9q3jr29l2?cid=storebadge&ocid=badge) the update to version 3.0 is not yet available. We will provide a Windows Store release with an update shortly. The Linux Flatpak package is maintained separately and will be updated soon.\n\nPicard is free software and the [source code is available on GitHub](https://github.com/metabrainz/picard).\n\n## Acknowledgements\n\nGetting this new major version of Picard ready was a huge effort, one that wouldn’t have been possible without the many contributors. Thanks to everyone who helped with code, translation or reporting issues and feature requests.\n\nCode contributions by Adela Chang, [Akshat Khatri](https://github.com/akshatkhatri), Anton Kesy, [Arnab Chakraborty](https://github.com/zytact), [Bob Swift](https://github.com/rdswift), [Bryan Roessler](https://github.com/cryobry), [David Kellner](https://github.com/kellnerd), [Deepak Kumar](https://github.com/deepak-ss74), Francisco Lisboa, [FRC](https://github.com/frcooper), [Goldmaster](https://github.com/Goldmaster), [Greg Myers](https://github.com/BookOfGreg), [Deepak Tiwari](https://github.com/iron-prog), James Le Cuirot, joncrall, [João Sousa](https://github.com/jpmsousa03) , Julian Anderson, Kajal Soni, [knguyen](https://github.com/knguyen1), [krotka](https://github.com/oakrotka), [Laurent Monin](https://github.com/zas), [Lctrs](https://github.com/Lctrs), [leo60228](https://github.com/leo60228), [Marethyun](https://github.com/Marethyun), Martin, Martin Natano, [metaisfacil](https://github.com/metaisfacil), OscarL, [Philipp Wolfer](https://github.com/phw), pranavsource1, [Rakim](https://github.com/rakim0), ripstream, [Sanskar Mittal](https://github.com/sanskarmit), [Alex](https://github.com/Serial-ATA), ShubhamBhut, soniikajal, [Sophist](https://github.com/Sophist-UK), [StevilKnevil](https://github.com/StevilKnevil), [nullHawk](https://github.com/nullHawk), [thekiefs](https://github.com/thekiefs), [Thuna](https://github.com/Thuna-Cing), [Giorgio Fontanive](https://github.com/twodoorcoupe), [x11x](https://github.com/x11x) and Yohay.\n\nTranslations were updated by:**Albanian:** [Besnik](https://translations.metabrainz.org/user/Besnik/)**Arabic:** alaishaq**Catalan:** [Marc Riera](https://translations.metabrainz.org/user/marcriera/)**Chinese (Simplified Han script):** [imgradeone](https://translations.metabrainz.org/user/imgradeone/), [KenParker_CN](https://translations.metabrainz.org/user/KenParker_CN/) and [Nebulain](https://translations.metabrainz.org/user/Nebulain/)**Chinese (Traditional Han script):** [BestSteve](https://translations.metabrainz.org/user/BestSteve/), Iceman1415 and [silentbird](https://translations.metabrainz.org/user/silentbird/)**Czech:** Fjuro**Dutch:** [mfmeulenbelt](https://translations.metabrainz.org/user/mfmeulenbelt/), [RandomMushroom128](https://translations.metabrainz.org/user/RandomMushroom128/) and toineenzo**English (United Kingdom):** glawie**Estonian:** [Priit Jõerüüt](https://translations.metabrainz.org/user/jmmbrz/)**Finnish:** [Jaakko Perttilä](https://translations.metabrainz.org/user/Jormangeud/)**French:** [Laurent Monin](https://translations.metabrainz.org/user/Zas/) and [rez00](https://translations.metabrainz.org/user/rez00/)**Galician:** [ninjum](https://translations.metabrainz.org/user/ninjum/)**Georgian:** [NorwayFun](https://translations.metabrainz.org/user/NorwayFun/)**German:** [bababasti](https://translations.metabrainz.org/user/bababasti/), [chaban](https://translations.metabrainz.org/user/chaban/), [Gsam3](https://translations.metabrainz.org/user/Gsam3/), [janrieger](https://translations.metabrainz.org/user/janrieger/), [Philipp Wolfer](https://translations.metabrainz.org/user/outsidecontext/) and [st.esser](https://translations.metabrainz.org/user/st.esser/)**Greek:** [Theo Asimakopoulos](https://translations.metabrainz.org/user/theoasim/)**Hungarian:** [hildgyorgy](https://translations.metabrainz.org/user/hildgyorgy/) and [pXF](https://translations.metabrainz.org/user/pxf/)**Italian:** [GABG](https://translations.metabrainz.org/user/GABG/) and [salo.rock](https://translations.metabrainz.org/user/salo.rock/)**Japanese:** [marudosurdo](https://translations.metabrainz.org/user/marudosurdo/), [RT2231](https://translations.metabrainz.org/user/RT2231/), shuuji3 and [zatto13](https://translations.metabrainz.org/user/zatto13/)**Korean:** [coldified_](https://translations.metabrainz.org/user/coldified_/)**Lithuanian:** [Vaclovas Intas](https://translations.metabrainz.org/user/Vac31./)**Malay:** [Jeluang](https://translations.metabrainz.org/user/Jeluang/)**Norwegian Bokmål:** [“ApeKattQuest, MonkeyPython”](https://translations.metabrainz.org/user/ApeKattQuest_MonkeyPython/) and [Metafono](https://translations.metabrainz.org/user/Metafono/)**Polish:** ankhedonic, [Echelon](https://translations.metabrainz.org/user/Echelon/) and [Michal77](https://translations.metabrainz.org/user/Michal77/)**Portuguese:** evarfino and [joaodtx](https://translations.metabrainz.org/user/joaodtx/)**Portuguese (Brazil):** [cristian_emanuel](https://translations.metabrainz.org/user/cristian_emanuel/) and [vitortle](https://translations.metabrainz.org/user/vitortle/)**Russian:** [Dimlbur](https://translations.metabrainz.org/user/Dimlbur/), [wileyfoxyx](https://translations.metabrainz.org/user/wileyfoxyx/) and [Wonordel](https://translations.metabrainz.org/user/Wonordel/)**Spanish:** [deusdagon](https://translations.metabrainz.org/user/deusdagon/), [Dino RTX](https://translations.metabrainz.org/user/DinoRTX/), jaimeMF and [Nicolás Tamargo](https://translations.metabrainz.org/user/reosarevok/)**Spanish (Latin America):** [MichTheOcelot](https://translations.metabrainz.org/user/MichTheOcelot/)**Swedish:** [blueday](https://translations.metabrainz.org/user/blueday/)**Turkish:** [brtc](https://translations.metabrainz.org/user/brtc/) and dirt3009**Ukrainian:** [Arhidimon](https://translations.metabrainz.org/user/Arhidimon/), [emptybrainz](https://translations.metabrainz.org/user/emptybrainz/), Nerten and [oleh_hishak](https://translations.metabrainz.org/user/oleh_hishak/)\n\n## Get in touch\n\nPlease use the [MetaBrainz community forums](https://community.metabrainz.org/c/picard/) and the [ticket system](https://tickets.metabrainz.org/projects/PICARD/) to give feedback, suggest new features or report bugs.\n\n## Breaking changes\n\n- Support for older operating system versions was dropped due to the update to Qt6 and newer Python versions. That means the minimum supported Windows version is now Windows 10, while for macOS you need macOS 13 “Ventura” or later. Users on older operating systems, who cannot or do not want to update their OS, should continue to use Picard 2. We plan to do at least one final Picard 2 release with important fixes to allow this version to be continued to be used.\n- Not all plugins from Picard 2 are available. Several important ones have been ported, but some old plugins were unmaintained or do not meet the quality standards expected. If you miss a specific plugin you rely on please let us know in the [community forums](https://community.metabrainz.org/c/picard) .\n- The artist sort name by default is no longer used as a fallback to provide a “translated” name. The previous behavior resulted in several bugs being reported with wrong artist names after translation. If you relied on the old behavior you can restore it by enabling “Use artist sort name for translation” in the [Metadata Options](https://picard-docs.musicbrainz.org/en/latest/config/options_metadata.html) .\n- Passing a parameter to the `$matchedtracks()` scripting function now is an error. Previously it was possible to pass a parameter to this function (e.g.`$matchedtracks(%artist%)` ), but it had no effect.\n- The lyrics and comments tags now always support a language, which is used when the tag is being loaded from or saved to ID3. The format is `lyrics:lang:description` /`comment:lang:description` , where`lang` is a 3 letter ISO code and description an additional descriptive text. If the language is being omitted, the separating colons are still mandatory, e.g.`comment::description` .\n\n## Known issues\n\n- On macOS, in some setups, the global menu is not showing check marks for checkable menu items. It is currently unclear which exact setups are affected by this. If you experience this issue, please reach out with details on your macOS version (see [PICARD-2509](https://tickets.metabrainz.org/browse/PICARD-2509) ).\n- Restoring a large session takes a significant amount of time and causes the UI to become unresponsive. We plan to improve this in future releases (see [PICARD-3460](https://tickets.metabrainz.org/browse/PICARD-3460) ).\n- The `picard-cli` command line tool is not available on macOS when being installed as an app. However, it can be installed by installing[Picard from PyPI](https://pypi.org/project/picard/) .\n\n## Change log\n\nSince the last stable Picard release 2.13.3 there have been 14 pre-releases for Picard 3. During the development we addressed 393 tickets to fix bugs, add features and improve existing functionality. Please see the [detailed change log](https://picard.musicbrainz.org/changelog/) on the website for a full list of changes.\n","body_html":"<h1 id=\"picard-3-0-released\">Picard 3.0 released</h1>\n<p>The Picard team is happy to announce the new major version 3.0 of MusicBrainz Picard, <a href=\"https://picard.musicbrainz.org/downloads/\" rel=\"nofollow ugc noopener\">now available to download</a>. MusicBrainz Picard is the official tag editor for the MusicBrainz database and helps you get your music collection sorted and cleaned up with data from MusicBrainz.</p>\n<p>This release brings many changes, including an upgrade to Qt6, a completely new plugin system, several improvements to the user interface, cover art processing, ISRC submission and many more. More details below.</p>\n<h2 id=\"what-s-new\">What’s new?</h2>\n<h3 id=\"user-interface-improvements\">User interface improvements</h3>\n<p>Qt is the application framework Picard is built upon. Qt simplifies the implementation of cross-platform desktop applications as it abstracts away many of the differences between various operating systems. Picard 2 was based on Qt5. With Picard 3 we have updated to Qt6. Besides ensuring that Picard stays up-to-date and available on modern desktops, this version change also brings some advantages like much improved support for screen scaling and better support for a dark mode. Specifically on Windows the old issues of having fonts scale inconsistently are now resolved. The UI now also supports a dark mode across all operating systems and switching between light and dark mode does no longer require a restart of the application.</p>\n<p>Picard already supported customizing the file and album list views by selecting the columns to display. In previous versions this was limited to a couple of pre-defined columns, though. New contributor knguyen1 implemented full custom column support. You can now define your own columns, where you can define the actual column content using scripting. This gives a lot of flexibility showing exactly the information you need. There is also a new pre-defined “Match” column that allows to sort releases by match quality. For more details see the chapter <a href=\"https://picard-docs.musicbrainz.org/en/latest/usage/custom_columns.html\" rel=\"nofollow ugc noopener\">Custom Columns</a> in the documentation.</p>\n<p>Another new feature, implemented by jpmsousa03, is the ability to filter the list views. You can select the fields to search and enter a search term. Only items matching this filter will be shown.</p>\n<p>It is now possible to select and copy multiple tags in the metadata view and paste them on e.g. another tag, updating all corresponding tags. It is also possible to paste multiple copied values into a spreadsheet tool. This feature was provided by StevilKnevil.</p>\n<p>The metadata view now also shows the actual differences between existing tags and the new tags being written.</p>\n<p>On a first start Picard now shows a setup wizard, that guides new users through some essential configuration.</p>\n<p>Also some essential functionality, such as loading files and clustering, gets explained by a tutorial mode when a feature is first used. Both the wizard and tutorial can be disabled or re-enabled in the <a href=\"https://picard-docs.musicbrainz.org/en/latest/config/options_interface.html\" rel=\"nofollow ugc noopener\">user interface options</a>.</p>\n<h3 id=\"new-plugin-system\">New plugin system</h3>\n<p>Apart from the Qt6 migration the new plugin system is the most significant change in Picard 3. While the previous plugin system enabled a lot of flexibility in Picard, it has a couple of limitations. For example, Picard would load, and partially run, the code of each installed plugin on every start, whether the plugin was enabled or not. This could lead to unwanted side effects and unexpected behavior. On the development side it proved also difficult for third-party developers, especially for more complex plugins, as all code had to be checked into the central <code>picard-plugins</code> Git repository.</p>\n<p>The new plugin system provides:</p>\n<ul><li>Separation of plugin metadata and code: <code>MANIFEST.toml</code> is mandatory</li><li>A defined <strong>plugin API</strong> with typing support</li><li>Git based versioning and updating of plugins</li><li>Plugins can be installed and updated from a central plugin registry, from third-party Git repositories, or from a local directory</li><li>Several trust levels (official, trusted, community, untrusted)</li><li>The ability to blacklist plugins centrally allows us to react on security issues</li><li>A <code>picard-cli</code> command line tool to manage (install, uninstall, update…) plugins</li><li>Plugins now support their own translation system (optionally manageable via Weblate), so their user interface texts can be translated</li><li>Plugins have their own configuration namespace</li></ul>\n<p>All the extension points known from Picard 2 to register metadata processors, context menu actions, cover art providers, file formats, option pages etc. are still available. But there are several new extension points; plugins can now register cover art filters and processors, custom variables, actions in a global “Plugin Tools” menu and CD ripping log file formats.</p>\n<p>As a user, the new plugin management under Options → Plugins now clearly separates installed plugins from plugins available for installation. Both the list of installed and available plugins can be searched, and it is possible to install plugins from third-party developers. See the <a href=\"https://picard-docs.musicbrainz.org/en/latest/config/options_plugins.html\" rel=\"nofollow ugc noopener\">Plugins Options documentation</a> for a more in-depth description.</p>\n<p>This also means that <strong>Picard v2 plugins are not compatible and need to be migrated</strong> to the new system. There are already 30 plugins available, both plugins migrated from v2 and brand new ones. Have a look at the <a href=\"https://picard.musicbrainz.org/plugins/\" rel=\"nofollow ugc noopener\">plugins v3 list on the Picard website</a>.</p>\n<p>If you are a developer and want to update your plugins to Picard 3 or maybe write a new one, please see the <a href=\"https://picard-docs.musicbrainz.org/en/latest/extending/plugins.html\" rel=\"nofollow ugc noopener\">Plugin overview</a> in the Picard User Guide and the detailed <a href=\"https://github.com/metabrainz/picard/blob/master/docs/PLUGINSV3/README.md\" rel=\"nofollow ugc noopener\">Picard Plugin v3 Documentation</a>.</p>\n<h3 id=\"cover-art-processing\">Cover art processing</h3>\n<p>It is now possible to both filter and process cover art loaded from cover art providers. The new options in <a href=\"https://picard-docs.musicbrainz.org/en/latest/config/options_cover_art_processing.html\" rel=\"nofollow ugc noopener\">Cover Art / Processing</a> allow you to ignore images below a certain size or automatically resize loaded images or convert them to a specific file format. Cover art processing can be extended by Plugins, which can register their own cover art filters and processors. Filters can restrict what cover art gets loaded, while processors can perform image processing on the loaded cover art.</p>\n<p>Cover art processing was implemented as part of Google Summer of Code 2024 by twodoorcoupe. You can read more about this in twodoorcoupe’s blog post <a href=\"https://blog.metabrainz.org/2024/08/26/gsoc-2024-picard-image-processing/\" rel=\"nofollow ugc noopener\">GSoC 2024: Picard image processing</a>.</p>\n<h3 id=\"new-tags-and-scripting-enhancements\">New tags and scripting enhancements</h3>\n<p>As full support for synced lyrics was added, there is now a new <code>%syncedlyrics%</code> tag. The MuicBrainz Artist ID of a composer is available as a new tag <code>%musicbrainz_composerid%</code>.</p>\n<p>There are also several new variables, that provide data for tagging and naming scripts, but are not written as tags to the files by default. The new <code>%_genres%</code> and <code>%_folksonomy_tags%</code> variables give you access to the raw list of genres or folksonomy tags as loaded from MusicBrainz. For recordings with a broadcasted relationship the broadcasting date is available as <code>%_broadcast_date%</code>. If a recording has a linked work with a ISWC, the ISWC is now available as <code>%_iswc%</code>.</p>\n<p>The variables <code>%_albumartists_countries%</code> and <code>%_artists_countries%</code> contain all country codes for all credited album artists / track artists. Likewise the disambiguation comments for artists and album artists are available as <code>%_artistcomment%</code> and <code>%_albumartistcomment%</code>.</p>\n<p>The <code>%_filesize%</code> variable contains the file size in bytes (if the script is running in a context where a file is available, i.e. on tracks with a matched file or in a file naming script).</p>\n<p>There are now two new functions <a href=\"https://picard-docs.musicbrainz.org/en/latest/functions/func_get_new.html\" rel=\"nofollow ugc noopener\">$get_new()</a><a href=\"https://picard-docs.musicbrainz.org/en/latest/functions/func_get_original.html\" rel=\"nofollow ugc noopener\">$get_original()</a><code>$rsearch</code> scripting function gained a new optional parameter, which can be used to specify the capture group inside the regular expression to be returned. Please see the <a href=\"https://picard-docs.musicbrainz.org/en/latest/functions/func_rsearch.html\" rel=\"nofollow ugc noopener\">documentation of the $rsearch function</a> for an example. </p>\n<h3 id=\"improved-built-in-player\">Improved built-in player</h3>\n<p>The built-in player received several improvements. As before the player is based on QtMultimedia. With Qt6 this component brings better cross-platform support for various audio formats and pitch-adjustment if playback speed changes (requires Qt 6.10).</p>\n<p>The player has also been internally refactored to better separate the player and UI. This allows better integration with the OS. The player now supports macOS “Now Playing” and on Linux can be controlled by MPRIS2 compatible tools. It can also submit listens to  ListenBrainz. Both OS integration and ListenBrainz support can be configured in the new <a href=\"https://picard-docs.musicbrainz.org/en/latest/config/options_player.html\" rel=\"nofollow ugc noopener\">Audio Player Options</a>.</p>\n<h3 id=\"save-and-restore-user-session\">Save and restore user session</h3>\n<p>Picard can save and restore your current workspace state as a session file under the main File menu. Sessions preserve file placement (unclustered, clusters, albums, specific tracks, and standalone recordings), your manual metadata edits, and selected configuration options so you can resume work later. Thanks to knguyen1 for this feature. See the chapter <a href=\"https://picard-docs.readthedocs.io/en/latest/usage/sessions.html\" rel=\"nofollow ugc noopener\">Sessions Management</a> in the documentation for more details.</p>\n<h3 id=\"export-import-option-profiles\">Export / import option profiles</h3>\n<p>Option profile support was already available in Picard 2. Option profiles allow you to create multiple different set of configuration options and quickly switch between them. With Picard 3 such option profiles now also can be exported and imported, both as a backup or to share them with others. If an option profile is exported in order to share it, the export will exclude any configuration options that are considered secret or private (such as authentication data). For details see the User Guide under <a href=\"https://picard-docs.musicbrainz.org/en/latest/config/options_profiles.html#backing-up-and-sharing-profiles\" rel=\"nofollow ugc noopener\">Backing Up and Sharing Profiles</a>.</p>\n<p>Exporting and importing option profiles can also be done using the new <code>picard-cli</code> command line utility, see below.</p>\n<p>We are excited to see how this feature will be used by the community.</p>\n<h3 id=\"operating-system-support\">Operating system support</h3>\n<p>Picard is now available for macOS ARM64 aka Apple silicon. While it was previously possible to run Picard on such systems using Apples Rosetta 2 emulation layer, the native builds offer better performance. Please note that there are separate downloads for the ARM64 and Intel versions of Picard. Please make sure to download the file appropriate for your hardware.</p>\n<p>Due to the updated dependencies, in particular Picard now using PyQt6 / Qt6 and the minimum supported Python version being 3.10, support for older operating systems had to be dropped.</p>\n<p>Picard 3 requires Windows 10 or later or macOS 13 or later. Linux users should have Qt 6.6 or later and at least Python 3.10 available.</p>\n<h3 id=\"cd-disc-lookup-from-tags-and-more-log-file-import-options\">CD disc lookup from tags and more log file import options</h3>\n<p>The existing functionality to lookup disc IDs from CD ripping log files was extended to support raw SCSI TOC data files as written by <a href=\"https://github.com/superg/redumper\" rel=\"nofollow ugc noopener\">redumper</a>.</p>\n<p>For files ripped with iTunes / Apple Music and which contain the CD TOC as a <code>iTunes_CDDB_1</code> tag it is now possible to perform a disc ID lookup directly from the tag. This is explained in detail in the User Guide under <a href=\"https://picard-docs.musicbrainz.org/en/latest/usage/retrieve_lookup_itunes.html\" rel=\"nofollow ugc noopener\">Lookup iTunes Tag</a>.</p>\n<h3 id=\"synchronized-lyrics\">Synchronized lyrics</h3>\n<p>Picard 3 provides initial support for synchronized lyrics. It can load and save a <code>syncedlyrics</code> tag from ID3 and WMA tags. The synchronized lyrics are using the <a href=\"https://en.wikipedia.org/wiki/LRC_(file_format)#File_format\" rel=\"nofollow ugc noopener\">LRC format</a> to describe the timings. We plan to extend support for synchronized lyrics with future updates to support more tagging formats and lyrics features.</p>\n<h3 id=\"translation-of-artist-release-and-track-titles-by-aliases\">Translation of artist, release and track titles by aliases</h3>\n<p>The existing system to translate artist names using aliases has been extended to also provide translations of album and track titles. Also the old behavior of always falling back to using the sort name as translation has been made optional and is now disabled by default. See the <a href=\"https://picard-docs.musicbrainz.org/en/latest/config/options_metadata.html\" rel=\"nofollow ugc noopener\">Metadata Options documentation</a> for details.</p>\n<h3 id=\"improved-release-matching\">Improved release matching</h3>\n<p>The algorithm for matching files to releases and recordings after a Lookup was totally reworked and greatly improved.</p>\n<p>Overall we expect the new algorithm to give better results. There is now also an extensive test framework in-place that allows us to detect regressions in the matching performance in the future.</p>\n<h3 id=\"isrc-lookup-and-submission\">ISRC lookup and submission</h3>\n<p>Picard now supports extracting ISRCs from CDs and adding them to loaded releases. It can also submit ISRCs loaded from disc or already present in the tags back to MusicBrainz. If new ISRCs are present for matched files, the ISRC submission dialog can be opened from the menu in File → Submit ISRCs. For details see the documentation on <a href=\"https://picard-docs.musicbrainz.org/en/latest/usage/submit_isrcs.html\" rel=\"nofollow ugc noopener\">Submitting ISRCs</a>.</p>\n<p>Individual files with an existing ISRC tag can also be looked up by ISRC using Lookup by… → Lookup by ISRC from the file’s context menu.</p>\n<h3 id=\"command-line-utility-picard-cli\">Command line utility “picard-cli”</h3>\n<p>Picard 3 comes with a new command line utility “picard-cli”. Currently this allows managing plugins and exporting/importing option profiles from the command line. Run <code>picard-cli --help</code> for more details.</p>\n<h3 id=\"updated-picard-user-guide\">Updated Picard User Guide</h3>\n<p>The online documentation available at <a href=\"https://picard-docs.musicbrainz.org\" rel=\"nofollow ugc noopener\"><a href=\"https://picard-docs.musicbrainz.org\" rel=\"nofollow ugc noopener\">https://picard-docs.musicbrainz.org</a></a> has been updated for all of the changes in Picard 3. It is now hosted on ReadTheDocs and available in English, French and Dutch. When opening documentation pages from inside Picard the links will use the language matching Picard’s user interface language, if available. You can help translate the Picard User Guide into your language, see the instructions for <a href=\"https://wiki.musicbrainz.org/MusicBrainz_Picard/Internationalization\" rel=\"nofollow ugc noopener\">Picard, Picard Website and Picard User Guide Internationalization</a>.</p>\n<h3 id=\"performance-and-memory-optimizations\">Performance and memory optimizations</h3>\n<p>This release includes several optimizations to improve the speed and responsiveness of Picard during certain operations and to reduce memory use.</p>\n<h3 id=\"and-more\">And more…</h3>\n<p>There have been many more improvements and bug fixes: Picard 3 is the product of roughly three years of work that began in late 2023 with the move to PyQt6: 687 merged pull requests, nearly 6,800 commits from over 100 contributors (including 40-ish translators), and almost 400 resolved tickets.</p>\n<p>A good part of the code was rewritten, to ease maintenance and future evolution. Static typing is now used (but covering the whole code will take some time, we focused on important parts).</p>\n<p>Test coverage is also much larger.</p>\n<p>Please see the change log for a complete list of changes.</p>\n<h2 id=\"download\">Download</h2>\n<p>Picard 3.0 is available for download from the <a href=\"https://picard.musicbrainz.org/downloads/\" rel=\"nofollow ugc noopener\">download page</a> of the Picard website.</p>\n<p>Please note: For Windows users installing from the <a href=\"https://www.microsoft.com/store/apps/9nj9q3jr29l2?cid=storebadge&amp;ocid=badge\" rel=\"nofollow ugc noopener\">Windows Store</a> the update to version 3.0 is not yet available. We will provide a Windows Store release with an update shortly. The Linux Flatpak package is maintained separately and will be updated soon.</p>\n<p>Picard is free software and the <a href=\"https://github.com/metabrainz/picard\" rel=\"nofollow ugc noopener\">source code is available on GitHub</a>.</p>\n<h2 id=\"acknowledgements\">Acknowledgements</h2>\n<p>Getting this new major version of Picard ready was a huge effort, one that wouldn’t have been possible without the many contributors. Thanks to everyone who helped with code, translation or reporting issues and feature requests.</p>\n<p>Code contributions by Adela Chang, <a href=\"https://github.com/akshatkhatri\" rel=\"nofollow ugc noopener\">Akshat Khatri</a>, Anton Kesy, <a href=\"https://github.com/zytact\" rel=\"nofollow ugc noopener\">Arnab Chakraborty</a>, <a href=\"https://github.com/rdswift\" rel=\"nofollow ugc noopener\">Bob Swift</a>, <a href=\"https://github.com/cryobry\" rel=\"nofollow ugc noopener\">Bryan Roessler</a>, <a href=\"https://github.com/kellnerd\" rel=\"nofollow ugc noopener\">David Kellner</a>, <a href=\"https://github.com/deepak-ss74\" rel=\"nofollow ugc noopener\">Deepak Kumar</a>, Francisco Lisboa, <a href=\"https://github.com/frcooper\" rel=\"nofollow ugc noopener\">FRC</a>, <a href=\"https://github.com/Goldmaster\" rel=\"nofollow ugc noopener\">Goldmaster</a>, <a href=\"https://github.com/BookOfGreg\" rel=\"nofollow ugc noopener\">Greg Myers</a>, <a href=\"https://github.com/iron-prog\" rel=\"nofollow ugc noopener\">Deepak Tiwari</a>, James Le Cuirot, joncrall, <a href=\"https://github.com/jpmsousa03\" rel=\"nofollow ugc noopener\">João Sousa</a> , Julian Anderson, Kajal Soni, <a href=\"https://github.com/knguyen1\" rel=\"nofollow ugc noopener\">knguyen</a>, <a href=\"https://github.com/oakrotka\" rel=\"nofollow ugc noopener\">krotka</a>, <a href=\"https://github.com/zas\" rel=\"nofollow ugc noopener\">Laurent Monin</a>, <a href=\"https://github.com/Lctrs\" rel=\"nofollow ugc noopener\">Lctrs</a>, <a href=\"https://github.com/leo60228\" rel=\"nofollow ugc noopener\">leo60228</a>, <a href=\"https://github.com/Marethyun\" rel=\"nofollow ugc noopener\">Marethyun</a>, Martin, Martin Natano, <a href=\"https://github.com/metaisfacil\" rel=\"nofollow ugc noopener\">metaisfacil</a>, OscarL, <a href=\"https://github.com/phw\" rel=\"nofollow ugc noopener\">Philipp Wolfer</a>, pranavsource1, <a href=\"https://github.com/rakim0\" rel=\"nofollow ugc noopener\">Rakim</a>, ripstream, <a href=\"https://github.com/sanskarmit\" rel=\"nofollow ugc noopener\">Sanskar Mittal</a>, <a href=\"https://github.com/Serial-ATA\" rel=\"nofollow ugc noopener\">Alex</a>, ShubhamBhut, soniikajal, <a href=\"https://github.com/Sophist-UK\" rel=\"nofollow ugc noopener\">Sophist</a>, <a href=\"https://github.com/StevilKnevil\" rel=\"nofollow ugc noopener\">StevilKnevil</a>, <a href=\"https://github.com/nullHawk\" rel=\"nofollow ugc noopener\">nullHawk</a>, <a href=\"https://github.com/thekiefs\" rel=\"nofollow ugc noopener\">thekiefs</a>, <a href=\"https://github.com/Thuna-Cing\" rel=\"nofollow ugc noopener\">Thuna</a>, <a href=\"https://github.com/twodoorcoupe\" rel=\"nofollow ugc noopener\">Giorgio Fontanive</a>, <a href=\"https://github.com/x11x\" rel=\"nofollow ugc noopener\">x11x</a> and Yohay.</p>\n<p>Translations were updated by:<strong>Albanian:</strong> <a href=\"https://translations.metabrainz.org/user/Besnik/\" rel=\"nofollow ugc noopener\">Besnik</a><strong>Arabic:</strong> alaishaq<strong>Catalan:</strong> <a href=\"https://translations.metabrainz.org/user/marcriera/\" rel=\"nofollow ugc noopener\">Marc Riera</a><strong>Chinese (Simplified Han script):</strong> <a href=\"https://translations.metabrainz.org/user/imgradeone/\" rel=\"nofollow ugc noopener\">imgradeone</a>, <a href=\"https://translations.metabrainz.org/user/KenParker_CN/\" rel=\"nofollow ugc noopener\">KenParker_CN</a> and <a href=\"https://translations.metabrainz.org/user/Nebulain/\" rel=\"nofollow ugc noopener\">Nebulain</a><strong>Chinese (Traditional Han script):</strong> <a href=\"https://translations.metabrainz.org/user/BestSteve/\" rel=\"nofollow ugc noopener\">BestSteve</a>, Iceman1415 and <a href=\"https://translations.metabrainz.org/user/silentbird/\" rel=\"nofollow ugc noopener\">silentbird</a><strong>Czech:</strong> Fjuro<strong>Dutch:</strong> <a href=\"https://translations.metabrainz.org/user/mfmeulenbelt/\" rel=\"nofollow ugc noopener\">mfmeulenbelt</a>, <a href=\"https://translations.metabrainz.org/user/RandomMushroom128/\" rel=\"nofollow ugc noopener\">RandomMushroom128</a> and toineenzo<strong>English (United Kingdom):</strong> glawie<strong>Estonian:</strong> <a href=\"https://translations.metabrainz.org/user/jmmbrz/\" rel=\"nofollow ugc noopener\">Priit Jõerüüt</a><strong>Finnish:</strong> <a href=\"https://translations.metabrainz.org/user/Jormangeud/\" rel=\"nofollow ugc noopener\">Jaakko Perttilä</a><strong>French:</strong> <a href=\"https://translations.metabrainz.org/user/Zas/\" rel=\"nofollow ugc noopener\">Laurent Monin</a> and <a href=\"https://translations.metabrainz.org/user/rez00/\" rel=\"nofollow ugc noopener\">rez00</a><strong>Galician:</strong> <a href=\"https://translations.metabrainz.org/user/ninjum/\" rel=\"nofollow ugc noopener\">ninjum</a><strong>Georgian:</strong> <a href=\"https://translations.metabrainz.org/user/NorwayFun/\" rel=\"nofollow ugc noopener\">NorwayFun</a><strong>German:</strong> <a href=\"https://translations.metabrainz.org/user/bababasti/\" rel=\"nofollow ugc noopener\">bababasti</a>, <a href=\"https://translations.metabrainz.org/user/chaban/\" rel=\"nofollow ugc noopener\">chaban</a>, <a href=\"https://translations.metabrainz.org/user/Gsam3/\" rel=\"nofollow ugc noopener\">Gsam3</a>, <a href=\"https://translations.metabrainz.org/user/janrieger/\" rel=\"nofollow ugc noopener\">janrieger</a>, <a href=\"https://translations.metabrainz.org/user/outsidecontext/\" rel=\"nofollow ugc noopener\">Philipp Wolfer</a> and <a href=\"https://translations.metabrainz.org/user/st.esser/\" rel=\"nofollow ugc noopener\">st.esser</a><strong>Greek:</strong> <a href=\"https://translations.metabrainz.org/user/theoasim/\" rel=\"nofollow ugc noopener\">Theo Asimakopoulos</a><strong>Hungarian:</strong> <a href=\"https://translations.metabrainz.org/user/hildgyorgy/\" rel=\"nofollow ugc noopener\">hildgyorgy</a> and <a href=\"https://translations.metabrainz.org/user/pxf/\" rel=\"nofollow ugc noopener\">pXF</a><strong>Italian:</strong> <a href=\"https://translations.metabrainz.org/user/GABG/\" rel=\"nofollow ugc noopener\">GABG</a> and <a href=\"https://translations.metabrainz.org/user/salo.rock/\" rel=\"nofollow ugc noopener\">salo.rock</a><strong>Japanese:</strong> <a href=\"https://translations.metabrainz.org/user/marudosurdo/\" rel=\"nofollow ugc noopener\">marudosurdo</a>, <a href=\"https://translations.metabrainz.org/user/RT2231/\" rel=\"nofollow ugc noopener\">RT2231</a>, shuuji3 and <a href=\"https://translations.metabrainz.org/user/zatto13/\" rel=\"nofollow ugc noopener\">zatto13</a><strong>Korean:</strong> <a href=\"https://translations.metabrainz.org/user/coldified_/\" rel=\"nofollow ugc noopener\">coldified_</a><strong>Lithuanian:</strong> <a href=\"https://translations.metabrainz.org/user/Vac31./\" rel=\"nofollow ugc noopener\">Vaclovas Intas</a><strong>Malay:</strong> <a href=\"https://translations.metabrainz.org/user/Jeluang/\" rel=\"nofollow ugc noopener\">Jeluang</a><strong>Norwegian Bokmål:</strong> <a href=\"https://translations.metabrainz.org/user/ApeKattQuest_MonkeyPython/\" rel=\"nofollow ugc noopener\">“ApeKattQuest, MonkeyPython”</a> and <a href=\"https://translations.metabrainz.org/user/Metafono/\" rel=\"nofollow ugc noopener\">Metafono</a><strong>Polish:</strong> ankhedonic, <a href=\"https://translations.metabrainz.org/user/Echelon/\" rel=\"nofollow ugc noopener\">Echelon</a> and <a href=\"https://translations.metabrainz.org/user/Michal77/\" rel=\"nofollow ugc noopener\">Michal77</a><strong>Portuguese:</strong> evarfino and <a href=\"https://translations.metabrainz.org/user/joaodtx/\" rel=\"nofollow ugc noopener\">joaodtx</a><strong>Portuguese (Brazil):</strong> <a href=\"https://translations.metabrainz.org/user/cristian_emanuel/\" rel=\"nofollow ugc noopener\">cristian_emanuel</a> and <a href=\"https://translations.metabrainz.org/user/vitortle/\" rel=\"nofollow ugc noopener\">vitortle</a><strong>Russian:</strong> <a href=\"https://translations.metabrainz.org/user/Dimlbur/\" rel=\"nofollow ugc noopener\">Dimlbur</a>, <a href=\"https://translations.metabrainz.org/user/wileyfoxyx/\" rel=\"nofollow ugc noopener\">wileyfoxyx</a> and <a href=\"https://translations.metabrainz.org/user/Wonordel/\" rel=\"nofollow ugc noopener\">Wonordel</a><strong>Spanish:</strong> <a href=\"https://translations.metabrainz.org/user/deusdagon/\" rel=\"nofollow ugc noopener\">deusdagon</a>, <a href=\"https://translations.metabrainz.org/user/DinoRTX/\" rel=\"nofollow ugc noopener\">Dino RTX</a>, jaimeMF and <a href=\"https://translations.metabrainz.org/user/reosarevok/\" rel=\"nofollow ugc noopener\">Nicolás Tamargo</a><strong>Spanish (Latin America):</strong> <a href=\"https://translations.metabrainz.org/user/MichTheOcelot/\" rel=\"nofollow ugc noopener\">MichTheOcelot</a><strong>Swedish:</strong> <a href=\"https://translations.metabrainz.org/user/blueday/\" rel=\"nofollow ugc noopener\">blueday</a><strong>Turkish:</strong> <a href=\"https://translations.metabrainz.org/user/brtc/\" rel=\"nofollow ugc noopener\">brtc</a> and dirt3009<strong>Ukrainian:</strong> <a href=\"https://translations.metabrainz.org/user/Arhidimon/\" rel=\"nofollow ugc noopener\">Arhidimon</a>, <a href=\"https://translations.metabrainz.org/user/emptybrainz/\" rel=\"nofollow ugc noopener\">emptybrainz</a>, Nerten and <a href=\"https://translations.metabrainz.org/user/oleh_hishak/\" rel=\"nofollow ugc noopener\">oleh_hishak</a></p>\n<h2 id=\"get-in-touch\">Get in touch</h2>\n<p>Please use the <a href=\"https://community.metabrainz.org/c/picard/\" rel=\"nofollow ugc noopener\">MetaBrainz community forums</a> and the <a href=\"https://tickets.metabrainz.org/projects/PICARD/\" rel=\"nofollow ugc noopener\">ticket system</a> to give feedback, suggest new features or report bugs.</p>\n<h2 id=\"breaking-changes\">Breaking changes</h2>\n<ul><li>Support for older operating system versions was dropped due to the update to Qt6 and newer Python versions. That means the minimum supported Windows version is now Windows 10, while for macOS you need macOS 13 “Ventura” or later. Users on older operating systems, who cannot or do not want to update their OS, should continue to use Picard 2. We plan to do at least one final Picard 2 release with important fixes to allow this version to be continued to be used.</li><li>Not all plugins from Picard 2 are available. Several important ones have been ported, but some old plugins were unmaintained or do not meet the quality standards expected. If you miss a specific plugin you rely on please let us know in the <a href=\"https://community.metabrainz.org/c/picard\" rel=\"nofollow ugc noopener\">community forums</a> .</li><li>The artist sort name by default is no longer used as a fallback to provide a “translated” name. The previous behavior resulted in several bugs being reported with wrong artist names after translation. If you relied on the old behavior you can restore it by enabling “Use artist sort name for translation” in the <a href=\"https://picard-docs.musicbrainz.org/en/latest/config/options_metadata.html\" rel=\"nofollow ugc noopener\">Metadata Options</a> .</li><li>Passing a parameter to the <code>$matchedtracks()</code> scripting function now is an error. Previously it was possible to pass a parameter to this function (e.g.<code>$matchedtracks(%artist%)</code> ), but it had no effect.</li><li>The lyrics and comments tags now always support a language, which is used when the tag is being loaded from or saved to ID3. The format is <code>lyrics:lang:description</code> /<code>comment:lang:description</code> , where<code>lang</code> is a 3 letter ISO code and description an additional descriptive text. If the language is being omitted, the separating colons are still mandatory, e.g.<code>comment::description</code> .</li></ul>\n<h2 id=\"known-issues\">Known issues</h2>\n<ul><li>On macOS, in some setups, the global menu is not showing check marks for checkable menu items. It is currently unclear which exact setups are affected by this. If you experience this issue, please reach out with details on your macOS version (see <a href=\"https://tickets.metabrainz.org/browse/PICARD-2509\" rel=\"nofollow ugc noopener\">PICARD-2509</a> ).</li><li>Restoring a large session takes a significant amount of time and causes the UI to become unresponsive. We plan to improve this in future releases (see <a href=\"https://tickets.metabrainz.org/browse/PICARD-3460\" rel=\"nofollow ugc noopener\">PICARD-3460</a> ).</li><li>The <code>picard-cli</code> command line tool is not available on macOS when being installed as an app. However, it can be installed by installing<a href=\"https://pypi.org/project/picard/\" rel=\"nofollow ugc noopener\">Picard from PyPI</a> .</li></ul>\n<h2 id=\"change-log\">Change log</h2>\n<p>Since the last stable Picard release 2.13.3 there have been 14 pre-releases for Picard 3. During the development we addressed 393 tickets to fix bugs, add features and improve existing functionality. Please see the <a href=\"https://picard.musicbrainz.org/changelog/\" rel=\"nofollow ugc noopener\">detailed change log</a> on the website for a full list of changes.</p>","headings":[{"level":1,"text":"Picard 3.0 released","id":"picard-3-0-released"},{"level":2,"text":"What’s new?","id":"what-s-new"},{"level":3,"text":"User interface improvements","id":"user-interface-improvements"},{"level":3,"text":"New plugin system","id":"new-plugin-system"},{"level":3,"text":"Cover art processing","id":"cover-art-processing"},{"level":3,"text":"New tags and scripting enhancements","id":"new-tags-and-scripting-enhancements"},{"level":3,"text":"Improved built-in player","id":"improved-built-in-player"},{"level":3,"text":"Save and restore user session","id":"save-and-restore-user-session"},{"level":3,"text":"Export / import option profiles","id":"export-import-option-profiles"},{"level":3,"text":"Operating system support","id":"operating-system-support"},{"level":3,"text":"CD disc lookup from tags and more log file import options","id":"cd-disc-lookup-from-tags-and-more-log-file-import-options"},{"level":3,"text":"Synchronized lyrics","id":"synchronized-lyrics"},{"level":3,"text":"Translation of artist, release and track titles by aliases","id":"translation-of-artist-release-and-track-titles-by-aliases"},{"level":3,"text":"Improved release matching","id":"improved-release-matching"},{"level":3,"text":"ISRC lookup and submission","id":"isrc-lookup-and-submission"},{"level":3,"text":"Command line utility “picard-cli”","id":"command-line-utility-picard-cli"},{"level":3,"text":"Updated Picard User Guide","id":"updated-picard-user-guide"},{"level":3,"text":"Performance and memory optimizations","id":"performance-and-memory-optimizations"},{"level":3,"text":"And more…","id":"and-more"},{"level":2,"text":"Download","id":"download"},{"level":2,"text":"Acknowledgements","id":"acknowledgements"},{"level":2,"text":"Get in touch","id":"get-in-touch"},{"level":2,"text":"Breaking changes","id":"breaking-changes"},{"level":2,"text":"Known issues","id":"known-issues"},{"level":2,"text":"Change log","id":"change-log"}]}}