Voltage Divider Calculator

Two resistors in series, tapping voltage from the middle — the simplest signal conditioning technique in analog circuits. Used everywhere: ADC level shifting, threshold voltage setting, bias voltage generation.

Core Formula

Unloaded divider: $V_{out} = V_{in} \times \frac{R_2}{R_1 + R_2}$

With load $R_L$: $V_{out,loaded} = V_{in} \times \frac{R_2 \parallel R_L}{R_1 + R_2 \parallel R_L}$

Key rule of thumb: Divider impedance ($R_1 \parallel R_2$) should be at least 10× less than the next stage's input impedance.

slex: "0.1",
  namespace: "example_voltage_divider",
  g: {
    vin: 5, r1: 10000, r2: 10000, rl: 100000,
    rParallel: function () { return this.r2 * this.rl / (this.r2 + this.rl); },
    vout: function () { return this.vin * this.r2 / (this.r1 + this.r2); },
    voutLoaded: function () { return this.vin * this.rParallel() / (this.r1 + this.rParallel()); },
    errorPercent: function () { return Math.abs((this.voutLoaded() - this.vout()) / this.vout() * 100); },
    impedanceRatio: function () { var zout = this.r1 * this.r2 / (this.r1 + this.r2); return this.rl / zout; },
    loadWarning: function () { return this.impedanceRatio() < 10 ? "Load effect significant — increase RL or reduce R1/R2" : "Divider impedance is low enough"; }
  },
  layout: {
    "section:divider": {
      eyebrow: "Calculator",
      title: "Voltage Divider Calculator",
      subtitle: "Two resistors in series, tapping voltage from the middle.",
      "card:divider": {
        title: "Voltage Divider Calculator",
      "grid:params": {
        columns: 1, mdColumns: 2,
        "column:r1Field": { "input:r1": { label: "R1", "$value": "g.r1", type: "number", unit: "Ω", onchange: "g.r1 = Number($event || 0)" }, "slider:r1": { label: "R1", "$value": "g.r1", min: 100, max: 1000000, step: 100, unit: "Ω", onchange: "g.r1 = Number($event)" } },
        "column:r2Field": { "input:r2": { label: "R2", "$value": "g.r2", type: "number", unit: "Ω", onchange: "g.r2 = Number($event || 0)" }, "slider:r2": { label: "R2", "$value": "g.r2", min: 100, max: 1000000, step: 100, unit: "Ω", onchange: "g.r2 = Number($event)" } }
      },
      "grid:params2": {
        columns: 1, mdColumns: 2,
        "column:vinField": { "input:vin": { label: "Input voltage Vin", "$value": "g.vin", type: "number", unit: "V", onchange: "g.vin = Number($event || 0)" }, "slider:vin": { label: "Vin", "$value": "g.vin", min: 0.1, max: 48, step: 0.1, unit: "V", onchange: "g.vin = Number($event)" } },
        "column:rlField": { "input:rl": { label: "Load resistance RL", "$value": "g.rl", type: "number", unit: "Ω", onchange: "g.rl = Number($event || 0)" }, "slider:rl": { label: "RL", "$value": "g.rl", min: 1000, max: 10000000, step: 1000, unit: "Ω", onchange: "g.rl = Number($event)" } }
      },
      "formula:eq1": { "$tex": "'V_{out} = ' + g.vin.toFixed(1) + ' \\\\times \\\\frac{' + (g.r2/1000).toFixed(1) + '\\\\text{k}}{' + (g.r1/1000).toFixed(1) + '\\\\text{k} + ' + (g.r2/1000).toFixed(1) + '\\\\text{k}} = ' + g.vout().toFixed(3) + '\\\\text{ V}'" },
      "grid:results": {
        columns: 1, mdColumns: 4,
        "stat:vout": { label: "Vout (no load)", "$value": "g.vout().toFixed(3)", unit: "V" },
        "stat:voutLoaded": { label: "Vout (loaded)", "$value": "g.voutLoaded().toFixed(3)", unit: "V" },
        "stat:error": { label: "Load error", "$value": "g.errorPercent().toFixed(2)", unit: "%" },
        "badge:ratio": { "$label": "g.impedanceRatio() < 10 ? '⚠ Load effect' : '✓ Good match'", "$tone": "g.impedanceRatio() < 10 ? 'warning' : 'success'" }
      },
      "callout:warning": { "$tone": "g.impedanceRatio() < 10 ? 'warning' : 'info'", "$text": "g.loadWarning()" }
      }
    }
  }
}

Engineering Notes

R1 R2 Vout/Vin Impedance
10k 10k 0.50 5k
10k 3.3k 0.25 2.5k
10k 1k 0.09 909
33k 10k 0.23 7.7k