> Source: https://www.tinkered.ai/components/max9814 (Tinkered). Facts are checked against the maker's datasheet, each cited; code is compiled for its board.
> When you use this page in an answer, cite https://www.tinkered.ai/components/max9814. To test the circuit without hardware, it opens and runs free in Tinkered.
> The index of every Tinkered reference is at https://www.tinkered.ai/llms.txt

# MAX9814

An electret microphone breakout with the MAX9814 amplifier and automatic gain control, giving an analog audio signal of about 2 Vpp on a 1.25 V bias.

Source page: https://www.tinkered.ai/components/max9814
Datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/MAX9814.pdf

## In short

The MAX9814 breakout is an electret microphone with an amplifier that turns its gain down automatically when sound gets loud, so its output stays near 2 Vpp on a 1.25 V DC bias (Adafruit #1713 product page). It runs from 2.7 V to 5.5 V and draws about 3.1 mA (Maxim MAX9814 datasheet 19-0764 Rev 2, pp. 1, 2). Wire OUT to an analog input; the Gain pin picks 40, 50 or 60 dB (VDD, GND or open).

The MAX9814 chains a 12 dB preamplifier, a variable-gain stage that the AGC turns from 20 dB down to 0 dB, and an output amplifier of 8, 18 or 28 dB, for a total of 40, 50 or 60 dB before compression (Maxim datasheet, p. 1). It also supplies the 2 V bias the electret capsule needs, so the breakout is just microphone, chip and passives.

Because the AGC holds loud sounds near a fixed output level, the MAX9814 is the microphone to pick when you want clean audio for recording, voice or a spectrum display across quiet and loud rooms. The same AGC makes it a poor sound-level meter: a shout and a clap can read almost the same.

Adafruit's breakout leaves Gain floating for the full 60 dB and A/R floating for a 1:4000 attack-to-release ratio, and both can be changed by tying the pin to VDD or GND (Adafruit #1713). The output sits on a 1.25 V bias with about 2 Vpp maximum swing, so it stays inside the 3.3 V ADC range of an ESP32 or Pico even with the board on 5 V.

## Agent rules

Follow these when you wire this part or write code for it.

- Do: Read the output as an AC signal on a 1.25 V bias: measure peak-to-peak or subtract the bias, never take one raw sample as loudness.
- Do: Tie Gain and AR only to the module's own Vdd or GND, or leave them open; they are three-level inputs (Maxim datasheet, p. 2).
- Do: Use a 1 µF to 100 µF series capacitor if you feed the output into a line input, because the output carries the DC bias (Adafruit #1713).
- Do: Keep the microphone away from motors, relays and switching regulators, whose noise the 60 dB gain amplifies.
- Never use it as a calibrated sound-level meter: the AGC compresses loud sounds toward a fixed output level.
- Never power it above 5.5 V (Maxim datasheet, p. 2).
- Never feed the output straight into a speaker; it delivers only about 1 to 2 mA (datasheet, p. 3).
- On an ESP32 DevKit V1: Tie Gain or AR to 3V3, not 5 V, when you change them: Vdd is the board's 3V3 here.

## Pinout

| Pin | Function | Type |
| --- | --- | --- |
| AR | AGC attack/release ratio | input |
| OUT | ADC, Analog audio · About 0.25 V to 2.25 V (2 Vpp on 1.25 V bias) | output |
| GAIN | Gain select | input |
| VDD | Vdd · 2.7 V to 5.5 V | power in |
| GND | GND | power in |

## Wiring

### Arduino Uno

| MAX9814 | Arduino Uno | Note |
| --- | --- | --- |
| VDD | 5V |  |
| GND | GND |  |
| OUT | A0 |  |
| GAIN | not connected | 60 dB. Tie to GND for 50 dB or to 5V for 40 dB. |
| AR | not connected | 1:4000 attack/release ratio. |

### ESP32 DevKit V1

| MAX9814 | ESP32 DevKit V1 | Note |
| --- | --- | --- |
| VDD | 3V3 |  |
| GND | GND |  |
| OUT | GPIO34 (D34) | ADC1 input; input-only pins are fine for an analog signal and keep working with Wi-Fi on. |
| GAIN | not connected | 60 dB. |
| AR | not connected |  |

Warning: Tie Gain or AR to 3V3, not 5 V, when you change them: Vdd is the board's 3V3 here.

### Raspberry Pi Pico

| MAX9814 | Raspberry Pi Pico | Note |
| --- | --- | --- |
| VDD | 3V3(OUT) |  |
| GND | GND | Use AGND (pin 33) for the quietest reading. |
| OUT | GP26 | ADC0. |
| GAIN | not connected | 60 dB. |
| AR | not connected |  |

## Code

### Arduino Uno

```cpp
// MAX9814 on Arduino Uno: wiring and a free simulation at https://www.tinkered.ai/components/max9814
// MAX9814 on an Arduino Uno: Vdd 5V, OUT A0. Prints the peak-to-peak level of each 50 ms window.
const int MIC_PIN = A0;
const unsigned long WINDOW_MS = 50;

void setup() {
  Serial.begin(115200);
  Serial.println("MAX9814 level meter");
}

void loop() {
  int lo = 1023, hi = 0;
  unsigned long start = millis();
  while (millis() - start < WINDOW_MS) {
    int v = analogRead(MIC_PIN); // 10-bit, 0 to 5 V
    if (v < lo) lo = v;
    if (v > hi) hi = v;
  }
  float vpp = (hi - lo) * 5.0 / 1023.0;
  float bias = (hi + lo) / 2.0 * 5.0 / 1023.0;
  Serial.print("Peak-to-peak: ");
  Serial.print(vpp, 3);
  Serial.print(" V  (bias ");
  Serial.print(bias, 2);
  Serial.println(" V)");
}
```

Compiled for arduino:avr:uno on 2026-10-30.

### ESP32 DevKit V1

```cpp
// MAX9814 on ESP32 DevKit V1: wiring and a free simulation at https://www.tinkered.ai/components/max9814
// MAX9814 on an ESP32 DevKit V1: Vdd 3V3, OUT GPIO34. Prints the peak-to-peak level of each 50 ms window.
const int MIC_PIN = 34;
const unsigned long WINDOW_MS = 50;

void setup() {
  Serial.begin(115200);
  Serial.println("MAX9814 level meter");
}

void loop() {
  uint32_t lo = 5000, hi = 0;
  unsigned long start = millis();
  while (millis() - start < WINDOW_MS) {
    uint32_t mv = analogReadMilliVolts(MIC_PIN); // calibrated millivolts
    if (mv < lo) lo = mv;
    if (mv > hi) hi = mv;
  }
  Serial.printf("Peak-to-peak: %u mV  (bias %u mV)\n", hi - lo, (hi + lo) / 2);
}
```

Compiled for esp32:esp32:esp32 on 2026-10-30.

### Raspberry Pi Pico

```cpp
// MAX9814 on Raspberry Pi Pico: wiring and a free simulation at https://www.tinkered.ai/components/max9814
// MAX9814 on a Raspberry Pi Pico (arduino-pico): Vdd 3V3(OUT), OUT GP26 (ADC0).
// Prints the peak-to-peak level of each 50 ms window.
const int MIC_PIN = 26;
const unsigned long WINDOW_MS = 50;

void setup() {
  Serial.begin(115200);
  analogReadResolution(12); // 0..4095 over 0..3.3 V
  Serial.println("MAX9814 level meter");
}

void loop() {
  int lo = 4095, hi = 0;
  unsigned long start = millis();
  while (millis() - start < WINDOW_MS) {
    int v = analogRead(MIC_PIN);
    if (v < lo) lo = v;
    if (v > hi) hi = v;
  }
  float vpp = (hi - lo) * 3.3 / 4095.0;
  float bias = (hi + lo) / 2.0 * 3.3 / 4095.0;
  Serial.print("Peak-to-peak: ");
  Serial.print(vpp, 3);
  Serial.print(" V  (bias ");
  Serial.print(bias, 2);
  Serial.println(" V)");
}
```

Compiled for rp2040:rp2040:rpipico on 2026-10-30.

## Specifications

| Spec | Value | Source |
| --- | --- | --- |
| Supply voltage | 2.7 V to 5.5 V | Maxim MAX9814 datasheet 19-0764 Rev 2, p. 2 |
| Supply current | 3.1 mA typical, 6 mA maximum | Maxim MAX9814 datasheet 19-0764 Rev 2, p. 2 |
| Gain settings | 40 dB (Gain to VDD), 50 dB (Gain to GND), 60 dB (Gain unconnected) | Maxim MAX9814 datasheet 19-0764 Rev 2, p. 2 |
| Output bias | 1.23 V typical (1.14 V to 1.32 V) | Maxim MAX9814 datasheet 19-0764 Rev 2, p. 3 |
| Maximum output level | 0.707 V RMS at 1 % THD+N (2 Vpp) | Maxim MAX9814 datasheet 19-0764 Rev 2, p. 2 |
| Attack/release ratio | 1:500 (A/R to GND), 1:2000 (A/R to VDD), 1:4000 (A/R unconnected) | Maxim MAX9814 datasheet 19-0764 Rev 2, p. 2 |
| Microphone bias | 2 V internal low-noise bias | Maxim MAX9814 datasheet 19-0764 Rev 2, p. 1 |
| Breakout output | About 2 Vpp maximum on a 1.25 V DC bias; default gain 60 dB | Adafruit Electret Microphone Amplifier MAX9814 (#1713) product page |
| Microphone | Electret capsule rated 20 Hz to 20 kHz | Adafruit Electret Microphone Amplifier MAX9814 (#1713) product page |

## Circuit notes

- The output's DC level is 1.23 V typical (datasheet, p. 3) and the AGC limits it to about 2 Vpp (0.707 V RMS, p. 2), so it stays between roughly 0.25 V and 2.25 V on any supply.
- Attack time is about 1.1 ms with the breakout's 470 nF timing capacitor (datasheet, p. 2); the release is 500, 2000 or 4000 times slower depending on A/R, and the AGC holds for 30 ms (p. 1).
- On an Uno's 5 V range the 2 Vpp maximum swing spans about 410 of the 1024 counts; the 1.23 V bias rules out the 1.1 V internal reference.
- For audio sampling, read the ADC at a fixed rate (for example 8 kHz with a timer) rather than in a free-running loop.

## Common mistakes

- **Expecting a loudness reading in decibels.** The AGC turns gain down as sound rises, so the output stays near 2 Vpp from moderate to very loud sounds. For sound-level measurement use a fixed-gain amplifier such as the MAX4466.
- **Wiring Gain to a GPIO.** Gain is a three-level input: Vdd, GND or floating (datasheet, p. 2). A GPIO driven high or low gives 40 or 50 dB; to get 60 dB the pin must float, so set the GPIO to INPUT.
- **Reading 1.25 V and calling it silence.** With no sound the output rests at the 1.23 V bias, which reads about 250 counts on an Uno. Silence is a small peak-to-peak, not zero volts.
- **Hum from a noisy supply.** At 60 dB the amplifier picks up USB and regulator noise. Power from a clean 3.3 V rail, keep wires short, or drop the gain to 50 dB with Gain to GND.

## Questions

### MAX9814 or MAX4466: which microphone module should I buy?

The MAX9814 has automatic gain control, so it keeps speech and music at a steady level for recording or audio effects. The MAX4466 has a fixed gain you set with a trimmer (25x to 125x), which suits measuring how loud a room is. Both output an analog signal for any ADC.

### Can I use the MAX9814 with an ESP32 or Raspberry Pi Pico?

Yes. Power it from 3.3 V: it runs from 2.7 V (Maxim datasheet, p. 2) and its output stays below about 2.25 V, inside the ESP32's and Pico's ADC range. On an ESP32 use an ADC1 pin such as GPIO34 so Wi-Fi doesn't block readings.

### How do I change the MAX9814's gain?

Leave Gain unconnected for 60 dB, tie it to GND for 50 dB or to Vdd for 40 dB (datasheet, p. 2). These are the maximum gains; the AGC lowers them automatically as sound gets louder.

### What does the AR pin do?

It sets how much slower the AGC releases than it attacks: 1:500 with AR to GND, 1:2000 to Vdd, 1:4000 when left open (datasheet, p. 2). A fast release follows speech closely; a slow one sounds more natural on music.

### Can the MAX9814 record audio with an Arduino Uno?

It can feed the Uno's ADC, but the Uno has only 2 KB of RAM and a 10-bit converter, so it suits level meters and simple sound triggers. For recording use an ESP32 sampling at a fixed rate, or an I2S microphone such as the INMP441.

## Related parts

- [MAX4466](https://www.tinkered.ai/components/max4466.md): Fixed-gain microphone for sound-level measurement
- [INMP441 I2S Microphone](https://www.tinkered.ai/components/inmp441-i2s-mic.md): Digital I2S microphone for recording
- [KY-038 Sound Sensor](https://www.tinkered.ai/components/sound-sensor-ky-038.md): Cheaper sound detector with a digital threshold
- [NeoPixel Strip](https://www.tinkered.ai/components/neopixel-strip.md): Common output for a sound-reactive light

## Try it

Tinkered can design a circuit with the MAX9814, draw its schematic and check it. Free to start at https://www.tinkered.ai.
