Difference between zero, scrub and --from-scratch

Can anyone please clarify the difference between zero, scrub and --from-scratch?

My understanding is that:

  • zero retains existing tags, clears their contents;
  • scrub deletes existing tags; and
  • --from-scratch deletes existing tags.

If so, don’t scrub and --from-scratch duplicate each other?

Hello! The tricky thing to understand is that scrub has a very specific purpose: to delete tags that beets does not support. It does this by removing the metadata for the file entirely and then rewriting the tags beets knows about. This can help get rid of crufty tags that beets has no reason to expose as a standard field.

Both zero and --from-scratch affect tags that beets can see and change under ordinary circumstances, such as with a beet modify invocation.