How to use the ADC voltage calculator
- Pick your board preset — Arduino Uno (5 V, 10-bit), ESP32 (3.3 V, 12-bit) or Raspberry Pi Pico (3.3 V, 12-bit) — or set your own reference voltage and resolution (8, 10, 12 or 16 bits).
- Choose Reading → voltage to turn an
analogRead()value into volts, or Voltage → reading to predict what the ADC will report. - If you measure something bigger than the reference (a 12 V battery, for example), tick Input voltage divider and enter R1 and R2.
- Read the pin voltage, the real input voltage, the size of one step (LSB) and the highest voltage you can safely measure.
Formula
An n-bit ADC splits the range 0 V to V_ref into 2ⁿ equal steps. Each step is called an LSB (least significant bit).
The Arduino example sketch divides by 1023 instead of 1024. Both are fine — the difference is less than one step. Choose the convention in the calculator to match your code.
ADC specs of popular boards
| Board | Resolution | Reference (full scale) | 1 LSB | Reading range |
|---|---|---|---|---|
| Arduino Uno / Nano | 10-bit | 5 V (or 1.1 V internal) | 4.88 mV (1.07 mV) | 0–1023 |
| ESP32 | 12-bit | about 3.3 V at the default 11 dB attenuation | about 0.81 mV | 0–4095 |
| Raspberry Pi Pico | 12-bit | 3.3 V supply | 0.81 mV | 0–4095 (read_u16() gives 0–65535) |
Choosing divider resistors
- Make sure the maximum input shown by the calculator is above the highest voltage you will ever connect, with some margin.
- Keep the resistors in the kΩ range. Very small values waste battery current; very large values (hundreds of kΩ) give noisy, low readings because the ADC needs current to charge its sampling capacitor. The ATmega328P datasheet recommends a source resistance of 10 kΩ or less.
- If you must use large resistors, put a 100 nF capacitor from the ADC pin to GND.
- Use the voltage divider calculator to try other resistor pairs.
Common mistakes
- Putting more than the supply voltage on an ADC pin. 5 V on an ESP32 or Pico pin can damage it. Always use a divider for higher voltages.
- No common ground. The sensor or battery negative must connect to the board's GND, or the reading is meaningless.
- A floating input. An unconnected analog pin reads random values — that is normal, not a fault.
- Mixing up resolutions. The same voltage gives 512 on an Uno but about 2048 on an ESP32 or Pico. Match the formula to the board.
- Trusting 16-bit numbers. MicroPython's
read_u16()on the Pico is scaled to 0–65535, but the real ADC is still 12-bit.
Measuring temperature? Pair this tool with the NTC thermistor calculator. Monitoring a robot battery? Read our robot battery guide and estimate runtime with the battery life calculator. To choose a board, see Arduino vs ESP32 vs Raspberry Pi Pico, and find sensors and boards in our products.





