Frame Moulding Calculator

.frame-calc-container { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; max-width: 800px; margin: 20px auto; padding: 25px; border: 1px solid #ddd; border-radius: 8px; background-color: #ffffff; color: #333; box-shadow: 0 4px 6px rgba(0,0,0,0.05); } .frame-calc-container h2 { color: #2c3e50; margin-top: 0; text-align: center; border-bottom: 2px solid #3498db; padding-bottom: 10px; } .input-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 25px; } .input-group { display: flex; flex-direction: column; } .input-group label { font-weight: 600; margin-bottom: 8px; font-size: 14px; } .input-group input, .input-group select { padding: 10px; border: 1px solid #ccc; border-radius: 4px; font-size: 16px; } .calc-button { width: 100%; padding: 15px; background-color: #3498db; color: white; border: none; border-radius: 4px; font-size: 18px; font-weight: bold; cursor: pointer; transition: background 0.3s; } .calc-button:hover { background-color: #2980b9; } .results-section { margin-top: 25px; padding: 20px; background-color: #f8f9fa; border-radius: 6px; display: none; } .results-section h3 { margin-top: 0; color: #2c3e50; } .result-row { display: flex; justify-content: space-between; padding: 10px 0; border-bottom: 1px solid #eee; } .result-row:last-child { border-bottom: none; } .result-value { font-weight: bold; color: #e67e22; } .article-section { margin-top: 40px; line-height: 1.6; } .article-section h3 { color: #2c3e50; border-left: 4px solid #3498db; padding-left: 10px; } .example-table { width: 100%; border-collapse: collapse; margin: 20px 0; } .example-table th, .example-table td { border: 1px solid #ddd; padding: 12px; text-align: left; } .example-table th { background-color: #f2f2f2; } @media (max-width: 600px) { .input-grid { grid-template-columns: 1fr; } }

Frame Moulding & Cut List Calculator

None 1/16″ 1/8″ (Standard) 1/4″

Material Requirements

External Frame Dimensions:
Cut List (2 of each):
Net Length Required:
Total Length with Buffer:
Estimated Material Cost:

How to Calculate Frame Moulding

When building a custom picture frame, the amount of moulding required is significantly longer than the perimeter of the artwork. This is due to the 45-degree miter cuts where the outer edge of the wood must travel further than the inner edge.

The Math Behind the Cuts:

  • Allowance: We typically add 1/8″ to the artwork dimensions to ensure the glass and backing fit into the rabbet without being too tight.
  • Miter Calculation: Each corner requires an additional length equal to the width of the moulding face. Since each rail has two corners, you add twice the moulding width to each dimension.
Component Calculation Formula
Individual Rail Length Artwork Dimension + (Allowance × 2) + (Moulding Width × 2)
Total Linear Inches (Length of Side A × 2) + (Length of Side B × 2)
Waste Factor Add 15-20% for saw kerfs, knots, or grain matching.

Pro Tips for Frame Builders

Always measure the "rabbet" (the groove where the art sits) rather than just the total wood thickness. If you are using wide moulding, the difference between the inner perimeter and outer perimeter can be massive. For a 3-inch wide moulding on a 10×10 frame, you actually need 64 inches of material, not 40!

function calculateFrame() { var artW = parseFloat(document.getElementById('artWidth').value); var artH = parseFloat(document.getElementById('artHeight').value); var mWidth = parseFloat(document.getElementById('mouldingWidth').value); var allowance = parseFloat(document.getElementById('allowance').value); var waste = parseFloat(document.getElementById('wasteFactor').value); var costPerFoot = parseFloat(document.getElementById('unitCost').value); if (isNaN(artW) || isNaN(artH) || isNaN(mWidth)) { alert("Please enter valid dimensions for Width, Height, and Moulding Width."); return; } // Calculation for one side: Art + (2 * Allowance) + (2 * Moulding Width) // Note: Standard framing logic uses Art + Allowance as the "Inner" dimension. var railA = artW + (allowance * 2) + (mWidth * 2); var railB = artH + (allowance * 2) + (mWidth * 2); var netInches = (railA * 2) + (railB * 2); var totalInches = netInches * (1 + (waste / 100)); var totalFeet = totalInches / 12; // Displaying results document.getElementById('frameResults').style.display = 'block'; document.getElementById('externalDims').innerHTML = railA.toFixed(3) + '" x ' + railB.toFixed(3) + '"'; document.getElementById('cutList').innerHTML = railA.toFixed(3) + '" and ' + railB.toFixed(3) + '"'; document.getElementById('netLength').innerHTML = netInches.toFixed(2) + ' inches (' + (netInches / 12).toFixed(2) + ' ft)'; document.getElementById('totalLength').innerHTML = totalInches.toFixed(2) + ' inches (' + totalFeet.toFixed(2) + ' ft)'; if (!isNaN(costPerFoot) && costPerFoot > 0) { var totalCost = totalFeet * costPerFoot; document.getElementById('costRow').style.display = 'flex'; document.getElementById('totalCost').innerHTML = '$' + totalCost.toFixed(2); } else { document.getElementById('costRow').style.display = 'none'; } }

Leave a Reply

Your email address will not be published. Required fields are marked *