Penis Size Calculator

Based on 15,521 medical measurements. No BS.

🔬 Medical Data Only
📊 15,521 Measurements
🔒 100% Private
inches
cm

Measure from pubic bone to tip, pressing ruler against pubic bone (bone-pressed measurement)

📏 How to Measure Correctly

  1. Get fully erect (maximum hardness)
  2. Stand up straight
  3. Place ruler on top of penis
  4. Press ruler firmly into pubic bone
  5. Measure to tip of glans
inches
cm

Measure around the thickest part of shaft (usually mid-shaft)

📏 How to Measure Girth

  1. Get fully erect
  2. Use soft measuring tape or string
  3. Wrap around thickest part of shaft
  4. Don't pull too tight - snug measurement
  5. If using string, mark and measure against ruler
inches
cm
inches
cm
inches
cm
inches
cm

📊 About Volume

Volume combines length and girth into total size. It's arguably the best measure of overall size since it accounts for both dimensions. Calculated using cylinder volume formula: π × r² × length

inches
cm

Measure stretched flaccid length - pull gently forward and measure bone-pressed

inches
cm

Measure around flaccid penis at mid-shaft

🌡️ Grower vs Shower

Average flaccid is 3.61" × 3.66". If your erect is >40% longer than flaccid, you're a grower (most men). If <25% change, you're a shower (rare). Flaccid size has LOW correlation with erect size.

Your Percentile
--
--
Bigger Than
--
of men
In a Room of 1000
--
would be bigger
You

Size Distribution

📊 Real Medical Data

Our calculator uses data from 5 major peer-reviewed studies totaling 15,521 measurements. No self-reported data, no online surveys - only measurements taken by medical professionals.

🎯 Actual Average Size

The real average erect length is 5.16 inches (13.12 cm) and average girth is 4.59 inches (11.66 cm). Much smaller than porn and internet myths suggest.

🔒 Completely Private

All calculations happen in your browser. We don't store, save, or transmit your measurements anywhere. No cookies, no tracking, no data collection.

Our Data Sources

Veale et al. (2015) - BJU International
Meta-analysis of 20 studies • n = 15,521 • Gold standard dataset
Herbenick et al. (2014) - Journal of Sexual Medicine
US population study • n = 1,661 • Self-measured but lab-verified protocol
Wessells et al. (1996) - Journal of Urology
Clinical measurements • n = 80 • Established bone-pressed standard
Schneider et al. (2001) - Urology
Young adult population • n = 111 • Multiple measurement verification
Chen et al. (2000) - International Journal of Impotence Research
Stretched length correlation • n = 200 • Validation dataset
cm').value); const girthCm = cm || inchesToCm(inches); if (!girthCm || girthCm < 5 || girthCm > 20) { alert('Please enter a valid girth'); return; } const percentile = getPercentile(girthCm, girthData); displayResults(percentile, 'girth', girthCm); } function calculateBoth() { const lengthInches = parseFloat(document.getElementById('both-length-inches').value); const lengthCm = parseFloat(document.getElementById('both-length-cm').value) || inchesToCm(lengthInches); const girthInches = parseFloat(document.getElementById('both-girth-inches').value); const girthCm = parseFloat(document.getElementById('both-girth-cm').value) || inchesToCm(girthInches); if (!lengthCm || lengthCm < 5 || lengthCm > 30 || !girthCm || girthCm < 5 || girthCm > 20) { alert('Please enter valid measurements'); return; } const lengthPercentile = getPercentile(lengthCm, lengthData); const girthPercentile = getPercentile(girthCm, girthData); // Combined percentile (geometric mean) const combinedPercentile = Math.sqrt(lengthPercentile * girthPercentile); displayCombinedResults(lengthPercentile, girthPercentile, combinedPercentile, lengthCm, girthCm); } function displayResults(percentile, type, valueCm) { const results = document.getElementById('results'); results.classList.add('show'); // Update percentile displays document.getElementById('main-percentile').textContent = percentile.toFixed(1) + '%'; document.getElementById('bigger-than').textContent = percentile.toFixed(0) + '%'; const rank = Math.round((100 - percentile) * 10); document.getElementById('room-rank').textContent = rank; // Update percentile bar document.getElementById('percentile-fill').style.width = percentile + '%'; document.getElementById('percentile-marker').style.left = percentile + '%'; // Context let context = ''; if (percentile < 10) context = 'Well below average'; else if (percentile < 25) context = 'Below average'; else if (percentile < 40) context = 'Slightly below average'; else if (percentile < 60) context = 'Average'; else if (percentile < 75) context = 'Above average'; else if (percentile < 90) context = 'Well above average'; else if (percentile < 98) context = 'Very large'; else context = 'Extremely large'; document.getElementById('percentile-context').textContent = context; // Size context with links const sizeContext = document.getElementById('size-context'); const valueInches = cmToInches(valueCm).toFixed(2); if (percentile >= 85) { sizeContext.innerHTML = `

You're in Large Territory

At ${valueInches} inches, you're larger than ${percentile.toFixed(0)}% of men. You likely need larger condoms for safety and comfort. Check out our BDP guide for common issues and solutions.

`; } else if (percentile >= 60) { sizeContext.innerHTML = `

You're Above Average

At ${valueInches} inches, you're comfortably above average. Standard condoms should work fine. Check our complete condom guide to find the best fit.

`; } else if (percentile >= 40) { sizeContext.innerHTML = `

You're Perfectly Average

At ${valueInches} inches, you're right in the normal range where most men are. This is the size that most products are designed for. Any standard condom will work well.

`; } else { sizeContext.innerHTML = `

You're Below Average

At ${valueInches} inches, you're smaller than average but still completely normal. Consider snugger fit condoms for better safety. Remember that size has little correlation with sexual satisfaction.

`; } // Draw distribution chart drawDistribution(percentile, type); } function displayCombinedResults(lengthPerc, girthPerc, combinedPerc, lengthCm, girthCm) { const results = document.getElementById('results'); results.classList.add('show'); // Update main displays with combined document.getElementById('main-percentile').textContent = combinedPerc.toFixed(1) + '%'; document.getElementById('bigger-than').textContent = combinedPerc.toFixed(0) + '%'; const rank = Math.round((100 - combinedPerc) * 10); document.getElementById('room-rank').textContent = rank; // Update percentile bar document.getElementById('percentile-fill').style.width = combinedPerc + '%'; document.getElementById('percentile-marker').style.left = combinedPerc + '%'; // Context let context = ''; if (combinedPerc < 10) context = 'Well below average overall'; else if (combinedPerc < 25) context = 'Below average overall'; else if (combinedPerc < 40) context = 'Slightly below average overall'; else if (combinedPerc < 60) context = 'Average overall'; else if (combinedPerc < 75) context = 'Above average overall'; else if (combinedPerc < 90) context = 'Well above average overall'; else if (combinedPerc < 98) context = 'Very large overall'; else context = 'Extremely large overall'; document.getElementById('percentile-context').textContent = context; // Detailed breakdown const lengthInches = cmToInches(lengthCm).toFixed(2); const girthInches = cmToInches(girthCm).toFixed(2); const sizeContext = document.getElementById('size-context'); sizeContext.innerHTML = `

Detailed Breakdown

Length: ${lengthInches}" = ${lengthPerc.toFixed(1)} percentile
Girth: ${girthInches}" = ${girthPerc.toFixed(1)} percentile
${combinedPerc >= 85 ? `

You're in the large category. Check our larger condom guide and BDP resources.

` : combinedPerc >= 60 ? `

You're above average. See our condom guide for the best options in your size range.

` : `

You're in the average range. Most products will work well for you.

`} `; drawDistribution(combinedPerc, 'combined'); } function drawDistribution(percentile, type) { const svg = document.getElementById('distribution-svg'); svg.innerHTML = ''; // Clear previous // Simple bell curve visualization const width = svg.clientWidth; const height = 300; // Create bell curve path const points = []; for (let x = 0; x <= 100; x++) { const xPos = (x / 100) * width; // Bell curve formula const z = (x - 50) / 20; const y = Math.exp(-0.5 * z * z) / (20 * Math.sqrt(2 * Math.PI)); const yPos = height - (y * height * 8); // Scale and invert points.push(`${xPos},${yPos}`); } // Draw curve const path = document.createElementNS('http://www.w3.org/2000/svg', 'polyline'); path.setAttribute('points', points.join(' ')); path.setAttribute('fill', 'none'); path.setAttribute('stroke', 'rgba(138, 43, 226, 0.5)'); path.setAttribute('stroke-width', '2'); svg.appendChild(path); // Fill under curve up to percentile const fillPoints = points.slice(0, Math.floor(percentile) + 1); fillPoints.push(`${(percentile / 100) * width},${height}`); fillPoints.push(`0,${height}`); const fill = document.createElementNS('http://www.w3.org/2000/svg', 'polygon'); fill.setAttribute('points', fillPoints.join(' ')); fill.setAttribute('fill', 'rgba(138, 43, 226, 0.2)'); svg.appendChild(fill); // Your position line const line = document.createElementNS('http://www.w3.org/2000/svg', 'line'); line.setAttribute('x1', (percentile / 100) * width); line.setAttribute('y1', 0); line.setAttribute('x2', (percentile / 100) * width); line.setAttribute('y2', height); line.setAttribute('stroke', '#8a2be2'); line.setAttribute('stroke-width', '3'); svg.appendChild(line); // Label const text = document.createElementNS('http://www.w3.org/2000/svg', 'text'); text.setAttribute('x', (percentile / 100) * width); text.setAttribute('y', 30); text.setAttribute('fill', '#fff'); text.setAttribute('text-anchor', 'middle'); text.setAttribute('font-weight', 'bold'); text.textContent = 'You'; svg.appendChild(text); }