Perpendis Royalty tools
Array tools Sign in

Convert CD Baby Sales & Royalty Reports to Excel — Free & Private

CD Baby's downloadable sales report is a tab-delimited .txt file with doubled line endings, timestamped dates and quantities carried to twelve decimal places — a combination that genuinely trips up a straight Excel import. This page documents the layout column by column, and the free converter turns the file into a clean, reconciled workbook without it ever leaving your browser.

Drop the .txt exactly as CD Baby gave it to you

No re-saving, no find-and-replace on line endings — the parser handles the format's quirks natively, locally in your tab. No account needed to see your results.

Convert your statement now — free

The layout: 14 tab-delimited columns

The report is one row per transaction line, with this observed header:

#ColumnWhat it contains
1Report DateDate the row was reported into your CD Baby account, as "MM/DD/YYYY 12:00:00 AM".
2Sales DateDate (or period date) the sale or stream actually occurred at the partner, same timestamped format.
3QuantityUnits for the row — exported with twelve decimal places (a single stream appears as 1.000000000000).
4PricePer-unit price or rate applied to the row.
5SubtotalAmount earned for the row (quantity × price, before your payout balance).
6IsrcTrack ISRC, written "Isrc" in the header exactly as CD Baby exports it.
7BarcodeRelease UPC/EAN.
8CDBabySkuCD Baby's internal SKU for the release or track.
9Album NameRelease title.
10Artist NameArtist on the release.
11Track NameTrack title; may be blank on album-level rows.
12Partner NameThe store or DSP reporting the activity (Spotify, Apple Music, physical partners, …).
13Transaction TypeKind of transaction — stream, download, physical sale, sync and so on.
14Delivery CountryCountry where the sale or stream was delivered.

Why this file breaks Excel

If you have landed here after a mangled import, the file is not corrupt — it is just hostile to spreadsheet defaults in three specific ways:

Doubled line endings (\r\r\n)

Each record ends with a carriage return, then another carriage return and line feed. Naive importers read the stray \r as an extra line break, so you get a blank row after every real row — or worse, cells shunted into the wrong columns. The converter normalises the endings before splitting rows, so every record lands intact.

Quantities with twelve decimal places

A quantity of one stream arrives as 1.000000000000. Excel parses it as floating point, displays it unpredictably, and any SUM over thousands of such values invites rounding drift. The converter reads quantities and amounts as exact decimals and sums them in decimal arithmetic.

Timestamped dates and giant barcodes

Dates arrive as "MM/DD/YYYY 12:00:00 AM" — a US-format text timestamp Excel may parse inconsistently depending on your locale — and 12–13-digit barcodes get flattened into scientific notation (1.93483E+12), destroying the UPC. The converter parses dates explicitly and keeps identifiers as text.

What the converter does with it

Every row is normalised into a common earnings schema — period, partner, territory, track, units, amount — alongside any other distributor statements you drop in the same session. The output is a six-sheet Excel earnings tape (Summary, Tie-Out, By Period, By DSP, Top Tracks, full line items) plus a normalised CSV, with identifiers preserved as text and totals computed in exact decimal.

Your file never leaves this page. Parsing runs in WebAssembly inside your browser tab — nothing is uploaded, and you can disconnect from the internet after the page loads.

About the tie-out: statements with printed totals must have their extracted rows sum back to those totals to the cent, or the discrepancy is shown. CD Baby's raw report is a line dump with no printed totals, so it reports as SELF-CONSISTENT — internal checks passed, but there was no stated total to reconcile against. Normal for this format, not a defect.

Frequently asked questions

Is my report uploaded anywhere?

No. The parser is compiled to WebAssembly and runs entirely client-side in this tab. Saved history (if you opt in) stores summary numbers only — never the file itself.

Do I need to fix the line endings first?

No — drop the .txt exactly as downloaded. The \r\r\n endings are recognised and normalised automatically; re-saving the file through a text editor first can actually change its encoding and is best avoided.

Why is my quantity column full of decimals?

CD Baby exports unit counts to twelve decimal places, most visibly on streams and on album downloads apportioned across tracks. The converter reads them as exact decimals, so counts and payouts stay accurate to the last digit.

Can I combine CD Baby with my other distributors?

Yes — the same session accepts DistroKid, TuneCore, Symphonic and society statements side by side, and merges everything into one normalised dataset and workbook.

Related pages

Statements from another distributor, or several at once? The same engine handles them all in one session:

New to statement anatomy? Start with how to read a royalty statement.

Ready when you are

Drop your CD Baby report — and any other distributor statements — into the free converter. Everything is parsed locally; nothing is uploaded.

Convert your statement now — free