Calculate statutory mechanical royalties for physical formats and permanent downloads (US).
2024 – Present (12.4¢ or 2.39¢/min)
2023 (12.0¢ or 2.31¢/min)
2006 – 2022 (9.1¢ or 1.75¢/min)
Physical (CD, Vinyl, Cassette)
Permanent Digital Download (PDD)
Track Duration:3:30
Calculated Rate Per Unit:$0.1240
Total Units:1,000
Total Royalties Due:$124.00
Understanding Mechanical Royalties
Mechanical royalties are a royalty paid to a songwriter whenever a copy of their musical composition is made. This applies to physical formats like CDs, vinyl, and cassette tapes, as well as permanent digital downloads (DPDs). In the United States, these rates are set by the Copyright Royalty Board (CRB).
Important Note: Interactive streaming (Spotify, Apple Music) uses a completely different formula based on percentage of revenue and subscriber counts. This calculator focuses specifically on the Statutory Mechanical Rate used for licensing cover songs, physical production, and downloads.
How the Statutory Rate is Calculated
The compulsory mechanical license rate (Section 115) utilizes a two-tier system based on the playing time of the track. As of 2024 (under the Phono IV settlement), the rates typically follow this logic:
1. Songs 5 Minutes or Less
If a song is 5 minutes (05:00) or shorter, a flat rate applies per copy.
2024 Rate: 12.4 cents ($0.124) per copy.
2023 Rate: 12.0 cents ($0.12) per copy.
Historic (2006-2022): 9.1 cents ($0.091) per copy.
2. Songs Over 5 Minutes
If a song exceeds 5 minutes, the rate changes to a "per minute" calculation. The formula typically rounds up to the next minute. For example, a song that is 5:01 is treated as 6 minutes.
2024 Rate: 2.39 cents ($0.0239) per minute (or fraction thereof).
Calculation: Ceiling(Minutes) × Rate.
When Do You Need This Calculator?
This tool is essential for:
Independent Artists: Releasing a cover song and needing to pay the original songwriter via a distributor or licensing agency (like Harry Fox Agency).
Labels: Budgeting for physical manufacturing runs (pressing 500 vinyl records).
Publishers: Auditing royalty statements to ensure correct payments for physical sales and downloads.
Example Calculation
Imagine you are pressing 500 Vinyl Records of a cover song that is 6 minutes and 15 seconds long.
Because the song is over 5 minutes, we round 6:15 up to 7 minutes.
Using the 2024 rate of 2.39 cents per minute: 7 × $0.0239 = $0.1673 per unit.
Total due: 500 units × $0.1673 = $83.65.
function calculateMechanicals() {
// Get Inputs
var minInput = document.getElementById('trackLengthMin');
var secInput = document.getElementById('trackLengthSec');
var unitsInput = document.getElementById('unitCount');
var rateSelect = document.getElementById('royaltyRate');
var min = parseInt(minInput.value) || 0;
var sec = parseInt(secInput.value) || 0;
var units = parseInt(unitsInput.value) || 0;
var rateYear = rateSelect.value;
// Constants for Rates (Cents converted to Dollars)
// Format: { flatRate: USD, perMinRate: USD }
var rates = {
"2024": { flat: 0.124, perMin: 0.0239 }, // 12.4 cents / 2.39 cents
"2023": { flat: 0.12, perMin: 0.0231 }, // 12.0 cents / 2.31 cents
"2006": { flat: 0.091, perMin: 0.0175 } // 9.1 cents / 1.75 cents
};
var selectedRate = rates[rateYear];
// Total time in decimal minutes for calculation logic
var totalTimeSeconds = (min * 60) + sec;
var totalTimeMinutes = totalTimeSeconds / 60;
// Determine Rate
var finalRatePerUnit = 0;
// Logic: Statutory rate usually breaks at 5 minutes
if (totalTimeMinutes <= 5) {
finalRatePerUnit = selectedRate.flat;
} else {
// "Per minute or fraction thereof" means round up to nearest whole minute
var chargeableMinutes = Math.ceil(totalTimeMinutes);
finalRatePerUnit = chargeableMinutes * selectedRate.perMin;
}
// Calculate Total
var totalDue = units * finalRatePerUnit;
// Display Results
var secDisplay = sec < 10 ? '0' + sec : sec;
document.getElementById('displayTime').innerText = min + ":" + secDisplay;
// Format Rate (4 decimal places common for royalties)
document.getElementById('displayRate').innerText = "$" + finalRatePerUnit.toFixed(4);
// Format Units
document.getElementById('displayUnits').innerText = units.toLocaleString();
// Format Total
document.getElementById('totalRoyalties').innerText = "$" + totalDue.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2});
// Show result box
document.getElementById('resultBox').style.display = "block";
}