ADC Resolution Calculator

Enter an ADC’s bits and reference voltage to get its step size, quantization error and ideal SNR, convert between volts and codes, and follow every substitution.

Converter and range

Whole number from 1 to 32 — the converter’s nominal bit width.
Input range

Measurement point (optional)

Leave empty to skip the measurement.

How many bits do you need? (optional)

Step size and noise

LSB step size

Formulas and substitution

LSB = FSR ÷ 2ᴺ · max error = ½ LSB · SNR = 6.02N + 1.76 dB

    Every number you enter stays in this browser — nothing is uploaded.

    FAQ

    Why do some sources divide by 2^N and others by 2^N − 1?

    They are two different models of the same converter. Datasheets and the classic quantization theory define LSB = FSR ÷ 2^N, with the first code transition at half a step — that is the model this page uses. The Vref ÷ (2^N − 1) form comes from mapping the top code exactly onto Vref, common in microcontroller tutorials. At 12 bits the two differ by about 0.02%, far below any real reference’s tolerance; just do not mix the two when checking numbers across sources.

    Does 12-bit resolution mean 12-bit accuracy?

    No. Resolution is only the width of the code — how finely the range is divided. Accuracy is limited by the converter’s INL and offset/gain errors, the reference’s tolerance and noise, and the circuit around it. That is why datasheets quote ENOB: a 12-bit SAR typically delivers 10–11 effective bits. The 74 dB ideal SNR shown here is the ceiling no real 12-bit converter reaches.

    How does a ±Vref input change the math?

    The span doubles to 2 × Vref, so the same converter resolves steps twice as wide: LSB = 2 × Vref ÷ 2^N. Codes run from the negative rail to the positive one — code 0 is −Vref, the mid code 2^(N−1) is 0 V, and the top code sits one step below +Vref. Select the bipolar range above and zero volts will land exactly on the mid code.

    What can I do when the step size is too coarse?

    Oversampling and averaging buys resolution when the signal carries a little noise: averaging 4× as many samples gains about one effective bit, 16× gains two, provided the noise is white and uncorrelated — a perfectly clean, perfectly still signal just repeats the same code. Beyond that, move to a converter with more bits or add a programmable-gain stage so the signal fills more of the range.

    Understanding ADC Resolution and Step Size

    An Analog-to-Digital Converter (ADC) translates a continuous analog voltage into a discrete digital code. The precision of this translation depends on two primary parameters: the nominal bit width (Resolution N (bits)) and the reference voltage. Together, these values dictate the smallest voltage change the converter can distinguish, known as the Least Significant Bit (LSB) step size.

    The ADC Resolution Calculator models an ideal quantizer where the first code transition occurs at half a step (±½ LSB). In this model, the Least Significant Bit is defined by dividing the full-scale voltage span by the total number of quantization levels:

    LSB = FSR ÷ 2ᴺ

    This tool calculates the step size, quantization noise, and theoretical signal-to-noise ratio (SNR) for both unipolar and bipolar input ranges. It also allows you to convert specific measurement points between analog voltages and digital codes, and determine the minimum bit resolution required to resolve a target voltage change.


    Input Parameters and Configuration

    To compute the characteristics of your converter, provide the following inputs in the interface:

    • Resolution N (bits): A whole number from 1 to 32 representing the nominal bit width of the converter.
    • Reference voltage: A positive number representing the reference voltage.
    • Reference unit: The unit of measurement for the reference voltage.
    • Input range: Select "Unipolar · 0 to Vref" or "Bipolar · −Vref to +Vref".
    • Displayed decimals: The number of decimal places to show in the results.
    • Convert (Measurement point - optional): A toggle to select the conversion mode between "Voltage → code" and "Code → voltage".
    • Input voltage (optional): The voltage value to convert into a digital code.
    • Code (counts) (optional): A whole number from 0 to the top code of the converter to convert into a voltage.
    • Voltage unit: The unit of measurement for the input voltage or code voltage.
    • Smallest change to resolve (optional): A positive target voltage step used to calculate the required bit resolution.
    • Step unit: The unit of measurement for the smallest change to resolve.

    You can use the "Load example" button to quickly populate these fields with standard values, or click "Clear" to reset all inputs.


    Mathematical Formulas and Substitutions

    The calculator displays fully worked mathematical substitutions for every calculation. The underlying formulas are defined as follows:

    Step Size and Noise Metrics

    • Full-scale range (FSR): For a unipolar configuration, FSR = Vref. For a bipolar configuration, FSR = 2 × Vref.
    • Quantization levels: The total number of discrete levels is calculated as 2ᴺ.
    • Top code: The maximum digital output code is 2ᴺ − 1.
    • LSB step size: LSB = FSR ÷ 2ᴺ.
    • Max quantization error (±½ LSB): ±LSB ÷ 2.
    • Quantization noise (rms): LSB ÷ √12.
    • Ideal SNR (full-scale sine): SNR = 6.02 × N + 1.76 dB.
    • Dynamic range: 6.02 × N dB.

    Measurement Point Conversions

    • Unipolar code: code = round(Vin ÷ LSB).
    • Bipolar code: code = round((Vin + Vref) ÷ LSB).
    • Unipolar voltage: V = code × LSB.
    • Bipolar voltage: V = code × LSB − Vref.
    • Quantization error: code voltage − input voltage.
    • Resolution sizing: N ≥ log₂(FSR ÷ step), rounded up to the next whole number of bits.

    Worked Example: 12-Bit Unipolar Converter

    To verify the calculations, consider a 12-bit converter with a 3.3 V reference voltage in a unipolar range. Loading these example values yields the following results:

    • Quantization levels: 2¹² = 4,096 levels.
    • Top code: 4,095.
    • LSB step size: 3.3 V ÷ 4,096 ≈ 805.6641 µV.
    • Max quantization error (±½ LSB): ±402.832 µV.
    • Quantization noise (rms): 805.6641 µV ÷ √12 ≈ 232.5752 µV rms.
    • Ideal SNR (full-scale sine): 6.02 × 12 + 1.76 ≈ 74.01 dB.
    • Dynamic range: 6.02 × 12 ≈ 72.25 dB.

    If an input voltage of 1.65 V is entered at the measurement point, it sits exactly mid-scale. The tool maps this to code 2,048 (binary 1000 0000 0000, hexadecimal 0x800) with zero quantization error.


    Rules, Edge Cases, and Error Handling

    When performing calculations, the tool applies specific rules for out-of-bounds inputs and clipping:

    • High Rail Clipping: If the input voltage sits above the high rail, the output saturates at the top code. The tool displays the warning: "The input sits above the high rail: the output saturates at the top code, and the error shown is the true residual — the ±½ LSB bound no longer applies."
    • Low Rail Clipping: If the input voltage sits below the low rail, the output saturates at code 0. The tool displays the warning: "The input sits below the low rail: the output saturates at code 0, and the error shown is the true residual — the ±½ LSB bound no longer applies."
    • Mid-Scale Input: If the input voltage is exactly mid-scale, the tool notes: "Exactly mid-scale: half the span maps to code ‹code› with zero quantization error."

    Interface Error Messages

    If an input violates the physical or mathematical limits of the converter, the tool displays one of the following errors:

    • Non-numeric input: "‹field›: “‹token›” is not a number."
    • Resolution out of bounds: "The resolution must be a whole number of bits between 1 and 32."
    • Reference voltage zero or negative: "The reference voltage must be greater than zero."
    • Non-integer digital code: "A code is a whole number of counts."
    • Digital code out of bounds: "The code must be between 0 and ‹max› for a ‹bits›-bit converter."
    • Target step size zero or negative: "The smallest change to resolve must be greater than zero."
    • Numeric overflow: "A value or intermediate result exceeds the supported number range."

    Privacy and Local Processing

    Every number you enter stays in this browser — nothing is uploaded. All calculations are performed locally on the user's device, ensuring your design parameters and measurement data remain private.


    Frequently Asked Questions

    Why do some sources divide by 2^N and others by 2^N − 1?

    They are two different models of the same converter. Datasheets and the classic quantization theory define LSB = FSR ÷ 2^N, with the first code transition at half a step — that is the model this page uses. The Vref ÷ (2^N − 1) form comes from mapping the top code exactly onto Vref, common in microcontroller tutorials. At 12 bits the two differ by about 0.02%, far below any real reference’s tolerance; just do not mix the two when checking numbers across sources.

    Does 12-bit resolution mean 12-bit accuracy?

    No. Resolution is only the width of the code — how finely the range is divided. Accuracy is limited by the converter’s INL and offset/gain errors, the reference’s tolerance and noise, and the circuit around it. That is why datasheets quote ENOB: a 12-bit SAR typically delivers 10–11 effective bits. The 74 dB ideal SNR shown here is the ceiling no real 12-bit converter reaches.

    How does a ±Vref input change the math?

    The span doubles to 2 × Vref, so the same converter resolves steps twice as wide: LSB = 2 × Vref ÷ 2^N. Codes run from the negative rail to the positive one — code 0 is −Vref, the mid code 2^(N−1) is 0 V, and the top code sits one step below +Vref. Select the bipolar range above and zero volts will land exactly on the mid code.

    What can I do when the step size is too coarse?

    Oversampling and averaging buys resolution when the signal carries a little noise: averaging 4× as many samples gains about one effective bit, 16× gains two, provided the noise is white and uncorrelated — a perfectly clean, perfectly still signal just repeats the same code. Beyond that, move to a converter with more bits or add a programmable-gain stage so the signal fills more of the range.