GDPR Fine Risk Calculator

ANALife Services AuthorityNational 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

More Calculators

Read Next

Study Time Planner Authority Network America › Life Services Authority › National Calculator Authority .calc-container { max-width: 640px;...

References