Dukan Weight Calculator – Calculate Your True Weight & Diet Timeline
:root {
–primary: #004a99;
–secondary: #003366;
–success: #28a745;
–light: #f8f9fa;
–border: #dee2e6;
–text: #333;
–shadow: 0 4px 6px rgba(0,0,0,0.1);
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
line-height: 1.6;
color: var(–text);
background-color: var(–light);
}
.container {
max-width: 960px;
margin: 0 auto;
padding: 20px;
background: #fff;
}
/* Header */
header {
text-align: center;
margin-bottom: 40px;
padding-bottom: 20px;
border-bottom: 1px solid var(–border);
}
h1 {
color: var(–primary);
font-size: 2.5rem;
margin-bottom: 10px;
}
.subtitle {
color: #666;
font-size: 1.1rem;
}
/* Calculator Section */
.calc-wrapper {
background: #fff;
border: 1px solid var(–border);
border-radius: 8px;
box-shadow: var(–shadow);
padding: 30px;
margin-bottom: 50px;
}
.input-section {
margin-bottom: 30px;
}
.input-group {
margin-bottom: 20px;
}
.input-group label {
display: block;
font-weight: 600;
margin-bottom: 8px;
color: var(–secondary);
}
.input-group input,
.input-group select {
width: 100%;
padding: 12px;
border: 1px solid var(–border);
border-radius: 4px;
font-size: 16px;
transition: border-color 0.3s;
}
.input-group input:focus,
.input-group select:focus {
border-color: var(–primary);
outline: none;
}
.helper-text {
font-size: 0.85rem;
color: #666;
margin-top: 5px;
}
.error-msg {
color: #dc3545;
font-size: 0.85rem;
margin-top: 5px;
display: none;
}
.btn-group {
display: flex;
gap: 10px;
margin-top: 20px;
}
button {
padding: 12px 24px;
border: none;
border-radius: 4px;
cursor: pointer;
font-weight: 600;
font-size: 16px;
transition: background 0.3s;
}
.btn-reset {
background: #e2e6ea;
color: #333;
}
.btn-copy {
background: var(–primary);
color: #fff;
}
.btn-reset:hover { background: #dbe0e5; }
.btn-copy:hover { background: var(–secondary); }
/* Results Section */
.results-section {
background: var(–light);
padding: 25px;
border-radius: 6px;
margin-top: 30px;
border-left: 5px solid var(–primary);
}
.main-result {
text-align: center;
margin-bottom: 25px;
}
.main-result h3 {
color: var(–secondary);
margin-bottom: 10px;
}
.highlight-value {
font-size: 2.5rem;
font-weight: 700;
color: var(–success);
}
.metrics-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 20px;
margin-bottom: 25px;
}
.metric-card {
background: #fff;
padding: 15px;
border-radius: 4px;
border: 1px solid var(–border);
text-align: center;
}
.metric-label {
font-size: 0.9rem;
color: #666;
margin-bottom: 5px;
}
.metric-value {
font-size: 1.2rem;
font-weight: 700;
color: var(–primary);
}
/* Table & Chart */
.chart-container {
margin: 30px 0;
height: 300px;
position: relative;
border: 1px solid var(–border);
background: #fff;
padding: 10px;
}
table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
background: #fff;
}
th, td {
padding: 12px;
text-align: left;
border-bottom: 1px solid var(–border);
}
th {
background-color: var(–primary);
color: #fff;
}
caption {
caption-side: bottom;
padding: 10px;
font-style: italic;
color: #666;
}
/* Article Styles */
article {
margin-top: 60px;
color: #333;
}
article h2 {
color: var(–primary);
margin: 40px 0 20px;
font-size: 1.8rem;
border-bottom: 2px solid var(–border);
padding-bottom: 10px;
}
article h3 {
color: var(–secondary);
margin: 25px 0 15px;
font-size: 1.4rem;
}
article p {
margin-bottom: 15px;
}
article ul, article ol {
margin-bottom: 20px;
padding-left: 25px;
}
article li {
margin-bottom: 8px;
}
.faq-item {
margin-bottom: 20px;
background: #f8f9fa;
padding: 20px;
border-radius: 6px;
}
.faq-question {
font-weight: 700;
color: var(–primary);
margin-bottom: 10px;
}
.internal-links {
background: #e9ecef;
padding: 25px;
border-radius: 8px;
margin-top: 40px;
}
.internal-links ul {
list-style: none;
padding: 0;
}
.internal-links li {
margin-bottom: 10px;
}
.internal-links a {
color: var(–primary);
text-decoration: none;
font-weight: 600;
}
.internal-links a:hover {
text-decoration: underline;
}
@media (max-width: 600px) {
h1 { font-size: 2rem; }
.highlight-value { font-size: 2rem; }
.metrics-grid { grid-template-columns: 1fr; }
}
Your True Weight
65.0 kg
Weight to lose: 15.0 kg
Attack Phase
5 Days
Pure Protein
Cruise Phase
15 Weeks
Until True Weight
Consolidation
150 Days
Prevent Rebound
Estimated timeline based on standard Dukan Diet progression rates.
| Phase |
Duration |
Est. Weight Loss |
Goal |
Dukan Weight Calculator: Find Your True Weight
The dukan weight calculator is an essential tool for anyone considering the Dukan Diet. Unlike standard BMI calculators that provide a generic weight range, this calculator estimates your "True Weight" (or Le Juste Poids). This is a realistic weight target that you can maintain long-term without constant struggle, based on your personal history, physiology, and lifestyle factors.
What is the Dukan Weight Calculator?
The Dukan Weight Calculator is a specialized algorithm designed to tailor the four phases of the Dukan Diet to your specific body profile. It does not simply aim for the lowest possible weight on a medical chart. Instead, it calculates a weight that respects your body's natural tendencies.
This tool is ideal for:
- Individuals looking to start the Dukan Diet with a clear roadmap.
- People who have struggled with "yo-yo" dieting and want a sustainable target.
- Anyone needing to know exactly how long the Attack, Cruise, and Consolidation phases will last.
Common Misconception: Many believe they should weigh what they weighed at age 18. However, the Dukan approach acknowledges that age, pregnancies, and bone structure permanently alter what constitutes a healthy, maintainable weight.
Dukan Weight Calculator Formula and Logic
The calculation of "True Weight" and the subsequent phase durations involves several variables. While the official proprietary algorithm is complex, our calculator uses the standard approximations accepted by the Dukan community.
1. True Weight Calculation
The baseline starts with a healthy BMI (typically 22-23) and is adjusted by the following factors:
| Variable |
Impact on True Weight |
Reasoning |
| Gender |
Baseline Adjustment |
Men typically have more muscle mass than women. |
| Age |
Increases slightly with age |
Metabolism slows and maintaining a very low weight becomes harder over time. |
| Bone Structure |
+/- 5% to 10% |
A large frame requires a higher weight target than a small frame. |
| Pregnancies |
+1kg per child (approx) |
Biological changes often result in a slightly higher natural set point. |
2. Phase Duration Logic
Once the weight to lose (Current Weight – True Weight) is determined, the phases are calculated as follows:
- Attack Phase: Based on total weight to lose.
- Less than 5kg (11lbs): 1-2 days
- 5-10kg (11-22lbs): 3-4 days
- 10-20kg (22-44lbs): 5-6 days
- Over 20kg (44lbs): 7-10 days (under medical supervision)
- Cruise Phase: The main weight loss phase. The standard estimation is 1 week for every 1kg (2.2lbs) lost, assuming a steady rhythm of alternating protein and vegetable days.
- Consolidation Phase: Critical for preventing weight regain. The formula is strictly 10 days for every 1kg (2.2lbs) lost (or 5 days per pound).
Practical Examples
Example 1: Moderate Weight Loss
Profile: Sarah, 35 years old, 165cm, currently 75kg. She has a medium frame and 1 child.
- Calculated True Weight: 64kg.
- Weight to Lose: 11kg.
- Attack Phase: 5 days (kickstart).
- Cruise Phase: ~11 weeks (to lose the 11kg).
- Consolidation Phase: 110 days (11kg × 10 days).
Financial/Time Investment: Sarah needs to commit to roughly 3 months of active dieting and 3.5 months of stabilization.
Example 2: Significant Weight Loss
Profile: John, 45 years old, 180cm, currently 110kg. Large frame.
- Calculated True Weight: 88kg.
- Weight to Lose: 22kg.
- Attack Phase: 7 days.
- Cruise Phase: ~22 weeks (approx 5-6 months).
- Consolidation Phase: 220 days (over 7 months).
Interpretation: John's journey is a long-term project spanning over a year to ensure the weight stays off permanently.
How to Use This Dukan Weight Calculator
- Select Unit System: Choose between Metric (kg/cm) or Imperial (lbs/ft).
- Enter Personal Details: Input your gender, age, and height accurately.
- Input Weight Data: Enter your current weight. Be honest for accurate results.
- Specify Body Type: Select your bone structure (wrist size) and number of pregnancies (if applicable).
- Review Results:
- True Weight: Your ultimate goal.
- Phase Timeline: Use the chart and table to plan your calendar.
Key Factors That Affect Dukan Results
While the dukan weight calculator provides a solid estimate, several real-world factors influence your actual progress:
- Metabolic Resistance: A history of frequent dieting can slow metabolism, potentially extending the Cruise phase.
- Water Retention: High salt intake or hormonal cycles can mask fat loss on the scale, causing temporary plateaus.
- Adherence to "Pure Protein" Days: The efficacy of the Attack and Cruise phases relies heavily on strict adherence to protein-only days. Cheating resets the ketosis-like state.
- Physical Activity: The Dukan method mandates a daily 20-minute walk. Increasing this can accelerate the Cruise phase.
- Age Factor: After age 40, hormonal changes (like menopause) can make weight mobilization slower, requiring more patience during the Cruise phase.
- Consolidation Discipline: This is where most people fail. Skipping the Consolidation phase almost guarantees the return of lost weight due to the body's biological drive to regain fat stores.
Frequently Asked Questions (FAQ)
Can I choose a target weight lower than the calculated True Weight?
It is not recommended. The "True Weight" is calculated as a sustainable equilibrium. Forcing your body below this point often triggers aggressive rebound weight gain once normal eating resumes.
Why is the Consolidation phase so long?
The body fights to regain lost weight. The formula of 10 days per kg lost is designed to cover the critical period where your body is most vulnerable to rebound.
Does the calculator account for muscle mass?
This calculator uses standard Dukan approximations. If you are a bodybuilder with high muscle mass, BMI-based calculations may not apply, and you should consult a nutritionist.
What if I have a lot of weight to lose (>40kg)?
For very large weight losses, the calculator provides an estimate, but you should undertake the diet under medical supervision to monitor kidney function and nutrient levels.
Can I extend the Attack phase to lose more quickly?
No. Extending the Attack phase beyond 7-10 days can cause nutritional deficiencies and metabolic slowdown. Stick to the calculated duration.
Is the Dukan Diet expensive?
It can be. The diet relies heavily on meat, fish, and dairy. Use the calculator to estimate the duration so you can budget for your grocery bills accordingly.
What happens if I plateau during the Cruise phase?
Plateaus are normal. The calculator assumes a linear average. In reality, weight loss often occurs in steps. Stick to the plan and ensure you are drinking enough water.
Does this calculator work for vegetarians?
The math remains the same, but the execution of the diet is harder. Vegetarians must rely on eggs, dairy, and plant proteins like tofu to meet the protein requirements.
Related Tools and Resources
Explore other health and fitness calculators to support your journey:
// Initialize
window.onload = function() {
calculateDukan();
};
function toggleUnits() {
var system = document.getElementById('unitSystem').value;
var metricDiv = document.getElementById('metricInputs');
var imperialDiv = document.getElementById('imperialInputs');
if (system === 'metric') {
metricDiv.style.display = 'block';
imperialDiv.style.display = 'none';
} else {
metricDiv.style.display = 'none';
imperialDiv.style.display = 'block';
}
calculateDukan();
}
function resetCalculator() {
document.getElementById('unitSystem').value = 'metric';
document.getElementById('gender').value = 'female';
document.getElementById('age').value = 35;
document.getElementById('heightCm').value = 165;
document.getElementById('weightKg').value = 80;
document.getElementById('heightFt').value = 5;
document.getElementById('heightIn').value = 5;
document.getElementById('weightLbs').value = 176;
document.getElementById('boneStructure').value = 'medium';
document.getElementById('pregnancies').value = 0;
toggleUnits();
calculateDukan();
}
function calculateDukan() {
// 1. Get Inputs
var system = document.getElementById('unitSystem').value;
var gender = document.getElementById('gender').value;
var age = parseFloat(document.getElementById('age').value);
var bone = document.getElementById('boneStructure').value;
var pregnancies = parseFloat(document.getElementById('pregnancies').value);
// Show/Hide Pregnancy input based on gender
var pregGroup = document.getElementById('pregnancyGroup');
if (gender === 'male') {
pregGroup.style.display = 'none';
pregnancies = 0;
} else {
pregGroup.style.display = 'block';
}
// Validation
if (isNaN(age) || age 99) {
document.getElementById('ageError').style.display = 'block';
return;
} else {
document.getElementById('ageError').style.display = 'none';
}
// Normalize to Metric
var heightCm, weightKg;
if (system === 'metric') {
heightCm = parseFloat(document.getElementById('heightCm').value);
weightKg = parseFloat(document.getElementById('weightKg').value);
} else {
var ft = parseFloat(document.getElementById('heightFt').value) || 0;
var inc = parseFloat(document.getElementById('heightIn').value) || 0;
heightCm = (ft * 30.48) + (inc * 2.54);
weightKg = (parseFloat(document.getElementById('weightLbs').value) || 0) * 0.453592;
}
if (!heightCm || !weightKg) return;
// 2. Calculate True Weight (Approximation Logic)
// Base: Lorentz Formula
var idealWeight;
if (gender === 'male') {
idealWeight = heightCm – 100 – ((heightCm – 150) / 4);
} else {
idealWeight = heightCm – 100 – ((heightCm – 150) / 2.5);
}
// Adjust for Age: +1kg per decade over 20 (max +5kg)
var ageFactor = 0;
if (age > 20) {
ageFactor = Math.min(5, (age – 20) / 10);
}
idealWeight += ageFactor;
// Adjust for Bone Structure
if (bone === 'small') idealWeight *= 0.95;
if (bone === 'large') idealWeight *= 1.05;
// Adjust for Pregnancies (Women only)
// Approx +0.8kg per child, capped at 4kg
if (gender === 'female') {
var pregFactor = Math.min(4, pregnancies * 0.8);
idealWeight += pregFactor;
}
// Ensure True Weight isn't higher than current weight (if user is already skinny, goal is maintenance)
// But usually this calc is for weight loss. If Ideal > Current, set Ideal = Current.
if (idealWeight > weightKg) {
idealWeight = weightKg;
}
var weightToLose = weightKg – idealWeight;
if (weightToLose < 0) weightToLose = 0;
// 3. Calculate Phases
var attackDays = 0;
var attackLoss = 0;
// Attack Phase Logic
if (weightToLose < 5) {
attackDays = 2;
attackLoss = 1.0; // kg estimate
} else if (weightToLose < 10) {
attackDays = 3;
attackLoss = 1.5;
} else if (weightToLose weightToLose) attackLoss = weightToLose;
var remainingLoss = weightToLose – attackLoss;
// Cruise Phase Logic (1 week per 1kg remaining)
var cruiseWeeks = remainingLoss; // 1kg per week
var cruiseDays = cruiseWeeks * 7;
// Consolidation Phase Logic (10 days per kg lost TOTAL)
var consolidationDays = weightToLose * 10;
// 4. Display Results
var displayUnit = system === 'metric' ? 'kg' : 'lbs';
var displayWeight = system === 'metric' ? idealWeight : (idealWeight * 2.20462);
var displayLoss = system === 'metric' ? weightToLose : (weightToLose * 2.20462);
var displayAttackLoss = system === 'metric' ? attackLoss : (attackLoss * 2.20462);
var displayCruiseLoss = system === 'metric' ? remainingLoss : (remainingLoss * 2.20462);
document.getElementById('trueWeightDisplay').innerText = displayWeight.toFixed(1) + " " + displayUnit;
document.getElementById('weightToLoseDisplay').innerText = "Weight to lose: " + displayLoss.toFixed(1) + " " + displayUnit;
document.getElementById('attackDuration').innerText = Math.round(attackDays) + " Days";
document.getElementById('cruiseDuration').innerText = Math.round(cruiseWeeks) + " Weeks";
document.getElementById('consolidationDuration').innerText = Math.round(consolidationDays) + " Days";
// Update Table
var tbody = document.getElementById('phaseTableBody');
tbody.innerHTML = `
| 1. Attack |
${Math.round(attackDays)} Days |
-${displayAttackLoss.toFixed(1)} ${displayUnit} |
Kickstart metabolism |
| 2. Cruise |
${Math.round(cruiseDays)} Days |
-${displayCruiseLoss.toFixed(1)} ${displayUnit} |
Reach True Weight |
| 3. Consolidation |
${Math.round(consolidationDays)} Days |
0 ${displayUnit} |
Prevent rebound |
| 4. Stabilization |
Life |
Maintenance |
Protein Thursdays |
`;
// 5. Draw Chart
drawChart(weightKg, idealWeight, attackDays, cruiseDays, consolidationDays, system);
}
function drawChart(startWeight, targetWeight, attackDays, cruiseDays, consolDays, system) {
var canvas = document.getElementById('dukanChart');
var ctx = canvas.getContext('2d');
// Reset canvas
canvas.width = canvas.parentElement.offsetWidth;
canvas.height = 300;
ctx.clearRect(0, 0, canvas.width, canvas.height);
var width = canvas.width;
var height = canvas.height;
var padding = 40;
// Data Points (Time in days, Weight in kg)
// Point 0: Start (Day 0, StartWeight)
// Point 1: End Attack (Day Attack, StartWeight – AttackLoss)
// Point 2: End Cruise (Day Attack+Cruise, TargetWeight)
// Point 3: End Consol (Day Attack+Cruise+Consol, TargetWeight)
// We need to convert weights for display if imperial, but logic is easier in kg
var attackLoss = (startWeight – targetWeight) * (attackDays / (attackDays + cruiseDays)); // Rough approx for chart visual
// Actually let's use the calculated logic from before roughly
// Attack drops fast. Cruise drops steady.
// Let's define Y axis range
var maxWeight = startWeight * 1.05;
var minWeight = targetWeight * 0.95;
var weightRange = maxWeight – minWeight;
// Define X axis range (Total Days)
var totalDays = attackDays + cruiseDays + consolDays;
// Add some buffer
var maxDays = totalDays * 1.1;
// Helper to map coordinates
function getX(day) {
return padding + (day / maxDays) * (width – 2 * padding);
}
function getY(weight) {
return height – padding – ((weight – minWeight) / weightRange) * (height – 2 * padding);
}
// Points
var p0 = {x: 0, y: startWeight};
// Attack drop (approx 10-15% of total loss usually happens fast, but let's use the logic)
// Logic: Attack loss was calculated in main function. Let's re-estimate for chart simplicity
var totalLoss = startWeight – targetWeight;
var attackDrop = (totalLoss > 0) ? (totalLoss * 0.15) : 0; // Visual approx
var p1 = {x: attackDays, y: startWeight – attackDrop};
var p2 = {x: attackDays + cruiseDays, y: targetWeight};
var p3 = {x: attackDays + cruiseDays + consolDays, y: targetWeight};
// Draw Axes
ctx.beginPath();
ctx.strokeStyle = '#ccc';
ctx.moveTo(padding, padding);
ctx.lineTo(padding, height – padding); // Y axis
ctx.lineTo(width – padding, height – padding); // X axis
ctx.stroke();
// Draw Line
ctx.beginPath();
ctx.strokeStyle = '#004a99';
ctx.lineWidth = 3;
ctx.moveTo(getX(p0.x), getY(p0.y));
ctx.lineTo(getX(p1.x), getY(p1.y));
ctx.lineTo(getX(p2.x), getY(p2.y));
ctx.lineTo(getX(p3.x), getY(p3.y));
ctx.stroke();
// Draw Points
ctx.fillStyle = '#28a745';
[p0, p1, p2, p3].forEach(function(p) {
ctx.beginPath();
ctx.arc(getX(p.x), getY(p.y), 5, 0, 2 * Math.PI);
ctx.fill();
});
// Labels
ctx.fillStyle = '#333′;
ctx.font = '12px Arial';
ctx.textAlign = 'center';
// X Axis Labels
ctx.fillText("Start", getX(p0.x), height – padding + 15);
ctx.fillText("End Attack", getX(p1.x), height – padding + 15);
ctx.fillText("End Cruise", getX(p2.x), height – padding + 15);
ctx.fillText("End Consolidation", getX(p3.x), height – padding + 15);
// Y Axis Labels (Convert if imperial)
var unit = system === 'metric' ? 'kg' : 'lbs';
var val0 = system === 'metric' ? p0.y : p0.y * 2.20462;
var valTarget = system === 'metric' ? p2.y : p2.y * 2.20462;
ctx.textAlign = 'right';
ctx.fillText(val0.toFixed(0) + unit, padding – 5, getY(p0.y) + 5);
ctx.fillText(valTarget.toFixed(0) + unit, padding – 5, getY(p2.y) + 5);
}
function copyResults() {
var trueWeight = document.getElementById('trueWeightDisplay').innerText;
var attack = document.getElementById('attackDuration').innerText;
var cruise = document.getElementById('cruiseDuration').innerText;
var consol = document.getElementById('consolidationDuration').innerText;
var text = "My Dukan Diet Plan:\n" +
"True Weight Goal: " + trueWeight + "\n" +
"Attack Phase: " + attack + "\n" +
"Cruise Phase: " + cruise + "\n" +
"Consolidation Phase: " + consol;
var tempInput = document.createElement("textarea");
tempInput.value = text;
document.body.appendChild(tempInput);
tempInput.select();
document.execCommand("copy");
document.body.removeChild(tempInput);
var btn = document.querySelector('.btn-copy');
var originalText = btn.innerText;
btn.innerText = "Copied!";
setTimeout(function(){ btn.innerText = originalText; }, 2000);
}