Skip to content

Importing

Bryan Speelman edited this page Sep 8, 2026 · 1 revision

Import hands the cut tracks to beets, which tags them, fetches cover art, computes ReplayGain and moves them out of review/ into the library.

The dialog

Release id is the release the import matches against. It is filled from the first pass. You can paste a different one, or search below and pick one.

Artist and Album show what the saved plan says. They are read-only — they are what the tags will say, and re-labelling is how you change them.

Press Import into the library. The confirmation says how many tracks, under what name, and whether they are being matched against a release or tagged from the plan.

The transcript

Open details after an import for everything beets said, plus any notes — for example when file permissions were corrected on the way in.

If an import fails, the transcript is where the reason is.

A record MusicBrainz does not have

Leave the release id empty. A panel appears saying the catalogue is being skipped.

The tracks are then tagged from the saved plan — its titles, numbers, artist, album and date — and filed under those names without being matched against anything. This is the way in for a private pressing, a demo, or anything the catalogue has never heard of.

No cover art is fetched on this path, because there is no release to fetch it from. The panel after the import offers to find or upload one.

Picking a different release

Search by artist and album in the dialog and pick a result. If its track count differs from what you cut, Re-label from this release appears.

Re-labelling applies the new release's titles, numbers and catalogue lengths to the tracks you already cut, and re-pins the release id. No boundary moves. Use it when the LP carries tracks the release you chose in the first pass did not. Running the first pass again would instead refit every edge from scratch, throwing away corrections you made by ear.

It refuses when the counts differ, rather than shifting every title by one.

The album is already in the library

A warning appears naming the directory and how many files are in it. Importing writes into that same directory, so a track with the same name is overwritten. Nothing is deleted and nothing else in the directory is touched. The import stays disabled until you tick the acknowledgement.

beets has rows for files that are gone

If files were deleted outside beets, its database still counts them. beets then treats the import as a duplicate and stops part-way, saying "duplicate" rather than saying the files are missing.

When that is the case, a panel appears before you start with a Clear the stale rows button. Clearing removes database rows only — never files — and refuses unless every file the rows name is confirmed absent.

ripdoctor doctor reports how many registered files are missing across the whole library.

Common refusals

Message Means
nothing to import - cut the tracks first the review directory is empty
N of the tracks are still in review - beets did not take them beets declined; the transcript says why, and stale rows are named when that is the cause
no library directory is configured set library in the configuration

From the command line

ripdoctor import <plan.json> <review directory>

--library overrides the configured root, --dry-run prints the moves without making them.

Next

Cover art, then Archiving.

Clone this wiki locally