Choosing an Epsilon for Differential Privacy

Epsilon bounds how much one record can change a published result. Set delta first, usually to 1/n or smaller. Then compute the Gaussian noise each epsilon demands, because epsilon 0.1 needs 80 times more noise than epsilon 8. Add up the budget over all queries before you release anything.

By Michael Lip · Updated 2026-10-28 · LockML / Guides

What epsilon controls

A mechanism is (epsilon, delta)-differentially private when one person's record can change the probability of any published outcome by at most a factor of e^epsilon, except with probability delta. Epsilon is the size of that change. Delta is the chance that the guarantee fails outright.

Epsilon is not a property of your data. It is a promise you publish. Two releases with the same epsilon are only comparable when they use the same delta and the same mechanism class.

Step 1: set delta before epsilon

Delta must be smaller than the chance that any single record matters. For a table of n records, the usual convention is delta = 1/n or smaller, so the failure probability stays below one record's worth of risk. Write the value down as a number, not as "small".

Delta is also the term that sets the noise floor. The table below uses delta = 0.00001 for a table of up to 100,000 records, which is the same as delta = 1/n.

Step 2: compute the noise that each epsilon demands

For the Gaussian mechanism the classic bound is sigma = sqrt(2 ln(1.25/delta)) times the L2 sensitivity, divided by epsilon. Sensitivity is the largest change one record can cause in the query answer. The table below uses sensitivity 1.0, so the noise multiplier equals sigma.

EpsilonSigma (noise)Noise multiplierSignal-to-noise
0.148.4548.450.02
0.59.699.690.10
14.844.840.21
22.422.420.41
41.211.210.83
80.610.611.65

The same computation for epsilon 8 gives sigma 0.61, and for epsilon 0.1 it gives sigma 48.45. The ratio is 80. That is the real cost of a smaller epsilon: at 0.1 the noise is 80 times larger than at 8, so a per-record style answer becomes unreadable and only large aggregates survive.

This table comes from the classic closed-form bound. That bound is only valid for epsilon below 1. For epsilon above 1, or when the noise budget is tight, use an exact analytic calibration instead. The Gaussian mechanism noise calibrator computes both and prints the saving.

Step 3: count composition before you ship

Each answer spends part of the budget. Twenty queries at epsilon 0.1 in sequence cost epsilon 2.0 and delta 0.0002 in total. The same twenty queries over twenty disjoint sets of records cost only epsilon 0.1, because each record is used once.

So the question "what epsilon should I use" is really "what total epsilon may I spend, and how many queries will I run". Pick the total first, then divide.

Step 4: choose from the release, not from a blog post

Match epsilon to who can see the output:

Record four numbers for every release: epsilon, delta, mechanism, and query count. A budget without delta cannot be audited.

Common mistakes

Related LockML tools

Use the privacy budget calculator to add up composition for a query plan, the Gaussian mechanism noise calibrator for the noise scale, and the differential privacy answer page for the definitions.

By the same builder: GitHub — theluckystrike BeLikeNative — Grammar AI EarlyThunder — Dev Blog Bug Bounty Reality Zovo — AI Dev Tools