This wiki article covers the water level sensor (sometimes called a leak detection sensor). Included are wiring diagrams, code examples, pinouts, and technical data. This sensor connects to an an analog input pin and provides an integer value generally from 0 to 500 indicating the level of water.  When used with a digital pin and a pull up resistor, it can give an indication of the presence of water without reporting its depth.


  • Sensor/Module Image Gallery
  • Description and Technical Data
  • Device Pinout
  • Projects that use this Sensor/Module
  • Code Examples
    • Code example for Arduino
    • Code example for Raspberry Pi

Sensor Module Image Gallery

Description and Technical Data

The water level sensor / leak detection sensor is a 3-pin module that outputs an analog signal (generally 0 to 500) that indicates the approximate depth of water submersion.  When used in conjunction with a pull up resistor, it can be used as a digital device to indicate the presence or water.

Tech Specs for the Water Level Sensor module: 

  •  Operating Voltage: +5V
  • Working Current : <20mA
  • Sensor Type : Analog or Digital
  • Water Detection Area :. 1.58in X .63in (40mm X 16mm)
  • Mounting Hole Size : .12in (3mm)
  • Operating Humidity: 10% to 90% (non-condensating)
  • Working Temperature: -22f to 122f (-30c to 50c)
  • Weight :. 3 grams
  • Product Dimensions : 2.56in X .79in (65mm x 20mm)

Device Pinout & Schematics

This module has three pins: GND, Vcc+, and Signal.


water level sensor pinout for arduino


Our Projects that Use this Sensor

The following Geek Pub projects include the water level sensor (leak detection sensor):

Code Examples

You’ll find below code examples of using the KY-010 photo interrupter / light barrier module with both Arduino and Raspberry Pi (Python).

Water Level Sensor / Leak Detection Sensor Code Example for Arduino

In this water level sensor module (leak detection sensor) example code.  We will detect a range of integers from 0 to 500 and display Empty, Low, Medium, or High to the serial console.  See the related project for using an LCD character display.

Arduino Wiring:

  • Water Level Sensor GND to Arduino GND
  • Water Level Sensor Signal to Arduino PIN A5
  • Water Level Sensor Vcc+ to Arduino 5V

int resval = 0;  // holds the value
int respin = A5; // sensor pin used

void setup() {

  // start the serial console

void loop() {

  resval = analogRead(respin); //Read data from analog pin and store it to resval variable

  if (resval <= 100) {
    Serial.println("Water Level: Empty");
  else if (resval > 100 && resval <= 300) {
    Serial.println("Water Level: Low");
  else if (resval > 300 && resval <= 330) {
    Serial.println("Water Level: Medium");
  else if (resval > 330) {
    Serial.println("Water Level: High");


The following code example is for the Raspberry Pi using the Python programming language. This code will write “Detected!” to the terminal window when water is detected.

Raspberry Pi Wiring:

  • Coming Soon!
Coming Soon!

We hope this wiki article has been helpful to you. Please leave a comment below if you have any questions or comments, as we try to keep these articles constantly up to date.

Back to List of Arduino Sensors and Modules