GDPR Fine Risk Calculator
ANA›Life Services Authority›National Calculator Authority›GDPR Fine Risk Calculator
.calc-container { max-width: 640px; margin: 2rem 0; padding: 1.5rem; background: #fff; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); font-family: system-ui, -apple-system, sans-serif; } .calc-container h3 { font-family: Georgia, serif; font-size: 1.15rem; color: #1a1a1a; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-row { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; flex-wrap: wrap; } .calc-row label { min-width: 160px; font-size: 0.9rem; color: #333; font-weight: 500; } .calc-row input[type="number"], .calc-row select { flex: 1; min-width: 120px; max-width: 200px; padding: 0.5rem 0.6rem; border: 1px solid #ccc; border-radius: 4px; font-size: 0.9rem; font-family: system-ui, sans-serif; color: #1a1a1a; background: #fafaf8; } .calc-row input:focus, .calc-row select:focus { outline: none; border-color: var(--ac, #3d5a80); box-shadow: 0 0 0 2px rgba(26,74,138,0.12); } .calc-row .unit { font-size: 0.82rem; color: #888; min-width: 30px; } .calc-btn { display: inline-block; margin-top: 0.5rem; padding: 0.55rem 1.5rem; background: var(--ac, #3d5a80); color: #fff; border: none; border-radius: 4px; font-size: 0.9rem; font-weight: 600; cursor: pointer; font-family: system-ui, sans-serif; } .calc-btn:hover { opacity: 0.9; } .calc-result { margin-top: 1.25rem; padding: 1rem 1.25rem; background: #f0f6fc; border-left: 3px solid var(--ac, #3d5a80); border-radius: 0 6px 6px 0; display: none; } .calc-result.visible { display: block; } .calc-result-label { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; color: #666; margin-bottom: 0.25rem; } .calc-result-value { font-size: 1.6rem; font-weight: 700; color: var(--ac, #3d5a80); } .calc-result-detail { font-size: 0.85rem; color: #555; margin-top: 0.5rem; line-height: 1.5; } .calc-note { margin-top: 1rem; font-size: 0.8rem; color: #888; font-style: italic; } .calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-top: 0.75rem; } .calc-grid-item { padding: 0.6rem 0.8rem; background: #f8f9fa; border-radius: 4px; border: 1px solid #eee; } .calc-grid-item .label { font-size: 0.75rem; color: #888; text-transform: uppercase; letter-spacing: 0.04em; } .calc-grid-item .value { font-size: 1.1rem; font-weight: 600; color: #1a1a1a; } @media (max-width: 720px) { .calc-row { flex-direction: column; align-items: flex-start; gap: 0.3rem; } .calc-row label { min-width: auto; } .calc-row input[type="number"], .calc-row select { max-width: 100%; width: 100%; } .calc-grid { grid-template-columns: 1fr; } } .calc-chart { margin: 1rem 0; text-align: center; } .calc-chart svg { max-width: 100%; height: auto; } .calc-chart-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.6rem 1.2rem; margin-top: 0.6rem; font-size: 0.8rem; color: #555; } .calc-chart-legend span { display: inline-flex; align-items: center; gap: 0.3rem; } .calc-chart-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; font-style: normal; } .calc-related { max-width: 640px; margin: 2rem 0 1rem; padding: 1.25rem 1.5rem; background: #f8f9fa; border: 1px solid #e8e8e8; border-radius: 8px; } .calc-related h3 { font-family: Georgia, serif; font-size: 1rem; color: #1a1a1a; margin: 0 0 0.75rem; padding-bottom: 0.4rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-related-list { list-style: none; padding: 0; margin: 0 0 0.75rem; display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem 1.5rem; } .calc-related-list li a { font-size: 0.88rem; color: var(--ac, #3d5a80); text-decoration: none; } .calc-related-list li a:hover { text-decoration: underline; } .calc-browse-all { margin: 0.5rem 0 0; font-size: 0.9rem; font-weight: 600; } .calc-browse-all a { color: var(--ac, #3d5a80); text-decoration: none; } .calc-browse-all a:hover { text-decoration: underline; } @media (max-width: 720px) { .calc-related-list { grid-template-columns: 1fr; } }
GDPR Fine Risk Calculator
Estimates potential GDPR fine exposure under Articles 83(4) and 83(5) of the GDPR, based on violation severity, annual turnover, number of data subjects affected, and mitigating or aggravating factors.
Annual Global Turnover (€)
Violation Tier
Lower Tier – Art. 83(4): Up to €10M or 2% turnover (e.g. processor obligations, consent records, DPO) Upper Tier – Art. 83(5): Up to €20M or 4% turnover (e.g. basic principles, data subject rights, transfers)
Number of Data Subjects Affected
Data Sensitivity
Standard personal data Sensitive / special category data (Art. 9) Children's data or criminal records (Art. 10)
Duration of Infringement
Short-term (days to weeks) Medium-term (months) Long-term (over a year)
Cooperation with Supervisory Authority
Full cooperation (mitigating) Neutral / partial cooperation Non-cooperative (aggravating)
Prior Infringements
No prior infringements One prior infringement Multiple prior infringements
Remediation Actions Taken
Proactive – breach contained and remediated before authority involvement Reactive – remediated after authority notification Minimal or no remediation
Calculate Fine Risk
function gdpCalc() { // --- Read inputs --- var turnover = parseFloat(document.getElementById('gdp-turnover').value); var tier = document.getElementById('gdp-violation-tier').value; var subjects = parseFloat(document.getElementById('gdp-subjects').value); var sensitivity = parseFloat(document.getElementById('gdp-sensitivity').value); var duration = parseFloat(document.getElementById('gdp-duration').value); var cooperation = parseFloat(document.getElementById('gdp-cooperation').value); var prior = parseFloat(document.getElementById('gdp-prior').value); var remediation = parseFloat(document.getElementById('gdp-remediation').value);
// --- Validation --- var errors = []; if (isNaN(turnover) || turnover 0) { document.getElementById('gdp-result').style.display = 'block'; document.getElementById('gdp-result').innerHTML = '⚠ ' + errors.join('⚠ ') + ''; return; }
// --- Statutory caps (Art. 83(4) and 83(5)) --- var absoluteCap, percentageCap; if (tier === 'lower') { absoluteCap = 10000000; // €10 million percentageCap = 0.02; // 2% of global annual turnover } else { absoluteCap = 20000000; // €20 million percentageCap = 0.04; // 4% of global annual turnover }
// Statutory maximum = higher of absolute cap or percentage cap (Art. 83 wording: "whichever is higher") var statutoryMax = Math.max(absoluteCap, turnover * percentageCap);
// --- Base fine: proportional to data subjects on a logarithmic scale --- // Regulators consider scale of harm; log10 scale normalises large subject counts. // Base fine starts at 10% of statutory max for 1 subject, scaling to 100% at 10M+ subjects. var subjectScale; if (subjects '; html += 'Violation Tier' + (tier === 'lower' ? 'Lower – Art. 83(4)' : 'Upper – Art. 83(5)') + ''; html += 'Statutory Maximum Fine' + fmtEur(statutoryMax) + ''; html += 'Base Fine (subject scale)' + fmtEur(baseFine) + ''; html += 'Adjusted Fine (all factors)' + fmtEur(adjustedFine) + ''; html += 'Estimated Fine Exposure' + '' + fmtEur(finalFine) + ''; html += 'Risk Band' + '' + riskBand + ' (' + (riskRatio * 100).toFixed(1) + '% of cap)'; html += '';
html += '⚠ This is a modelling estimate only. Actual fines are determined by supervisory authorities on a case-by-case basis.
';
document.getElementById('gdp-result').style.display = 'block'; document.getElementById('gdp-result').innerHTML = html; }
#### Formula
1. Statutory Maximum StatutoryMax = max(AbsoluteCap, AnnualTurnover × PercentageCap) Lower Tier (Art. 83(4)): AbsoluteCap = €10M, PercentageCap = 2% Upper Tier (Art. 83(5)): AbsoluteCap = €20M, PercentageCap = 4%
2. Subject Scale Factor SubjectScale = min( log₁₀(subjects + 1) / log₁₀(10,000,000), 1.0 ), floored at 0.05
3. Base Fine BaseFine = StatutoryMax × SubjectScale
4. Adjusted Fine AdjustedFine = BaseFine × SensitivityMultiplier × DurationMultiplier × CooperationMultiplier × PriorMultiplier × RemediationMultiplier
5. Final Fine Exposure FinalFine = min(AdjustedFine, StatutoryMax)
Risk Band: RiskRatio = FinalFine / StatutoryMax <25% → Low | 25–55% → Moderate | 55–80% → High | >80% → Critical
#### Assumptions & References
- GDPR Art. 83(4): Fines up to €10,000,000 or 2% of total worldwide annual turnover (whichever is higher) for lower-tier infringements (e.g. processor obligations, DPO, certification bodies).
- GDPR Art. 83(5): Fines up to €20,000,000 or 4% of total worldwide annual turnover (whichever is higher) for upper-tier infringements (e.g. basic principles, data subject rights, international transfers).
- Art. 83(2) factors considered: nature/gravity/duration of infringement, number of data subjects affected, categories of data, cooperation with supervisory authority, prior infringements, and remediation measures.
- Reference: European Data Protection Board, Guidelines 04/2022 on the calculation of administrative fines under the GDPR.
More Calculators
- Performance Rating Distribution Calculator
- Goal Attainment Score Calculator
- CVE CVSS Score Interpreter & Risk Calculator
- Pathfinder Encounter CR Calculator
- Pathfinder Character XP & Leveling Calculator
- Pesticide Dilution Calculator
- Pathfinder Skill Check Probability Calculator
- Privileged Access Risk Score Calculator
- Identity Theft Recovery Cost Estimator
- Vulnerability Risk Score Calculator
- Security Awareness Training ROI Calculator
- Cybersecurity Insurance Premium Estimator
Read Next
Study Time Planner Authority Network America › Life Services Authority › National Calculator Authority .calc-container { max-width: 640px;...