The VL53L0X and VL53L1X are two of the most common miniature Time-of-Flight distance sensors used with ESP32 boards. Both come from STMicroelectronics, both use an invisible 940 nm infrared laser, both communicate over I²C, and both measure absolute distance by timing the return of emitted light.
They look similar on breakout boards, but the VL53L1X is not simply a renamed VL53L0X. It is a newer, more capable sensor with longer range, faster measurement capability and a programmable region of interest.
There is one important software catch for Home Assistant users in 2026: ESPHome has native support for the VL53L0X, but not the VL53L1X. VL53L1X currently requires an external ESPHome component or custom Arduino/ESP-IDF code.
Quick Comparison
| Feature | VL53L0X | VL53L1X |
|---|---|---|
| Maximum quoted range | Up to 2 m | Up to 4 m |
| Typical full field of view | 25° | 27° |
| Programmable ROI / reduced FoV | No | Yes |
| Maximum ranging frequency | Lower; timing-budget dependent | Up to 50 Hz |
| Long-range performance | Moderate | Much better |
| Ambient-light performance | Good for its generation | Improved |
| Default I²C address | 0x29 | 0x29 |
| XSHUT pin | Yes | Yes |
| Native ESPHome component | Yes | No |
| Arduino library support | Excellent | Excellent |
| Best fit | Simple short-range ESPHome projects | Longer-range / narrower-FoV / advanced projects |
Which One Should You Buy?
If you are starting a normal Arduino or ESP-IDF project, buy the VL53L1X unless the VL53L0X is significantly cheaper. The VL53L1X gives you roughly double the headline range, much faster possible update rates and the ability to narrow the sensing region.
If your priority is a simple ESPHome node that you want to configure entirely in YAML with no external component, the VL53L0X is still the easier choice.
| Your project | Better choice |
|---|---|
| Home Assistant + stock ESPHome | VL53L0X |
| Arduino distance measurement | VL53L1X |
| Robot obstacle detection | VL53L1X |
| Short-range presence / object sensing | Either |
| Narrow target through an opening | VL53L1X |
| Several sensors on one ESP32 | Either; use XSHUT + reassigned addresses |
| Water-level experiment in a dry enclosure | VL53L1X for range, but condensation remains a concern |
| Lowest software effort | VL53L0X |
How Time-of-Flight Sensing Works
Unlike an HC-SR04 ultrasonic sensor, the VL53 family does not measure the travel time of sound. It emits extremely short infrared light pulses and measures the returned photons using a SPAD receiver array.
940 nm IR pulse
│
▼
target
│
reflected light
│
▼
SPAD receiver
│
▼
time-of-flight calculation
│
▼
distance
Because the result comes from light rather than sound, the sensor is compact, silent and suitable for close-range object measurement where an ultrasonic transducer would be physically large or have a difficult blind zone.
VL53L0X: What It Is Good At
ST rates the VL53L0X for absolute distance measurements up to 2 m, but that headline figure depends heavily on target reflectance and lighting.
ST’s current datasheet shows why real projects should not treat 2 m as a guaranteed working distance. With a 33 ms timing budget, a bright white target indoors can typically be detected beyond 2 m, while a darker 17% reflective target is much more demanding. Outdoor infrared light also reduces reliable range.
ESPHome’s own VL53L0X documentation is deliberately conservative: it notes that although 2 m is possible, you can generally expect roughly 60 cm without needing especially favourable target conditions.
- Very easy I²C wiring.
- Mature Arduino libraries.
- Native ESPHome component.
- Useful for short-range object sensing.
- XSHUT support makes multi-sensor designs practical.
- Configurable timing budget and long-range mode in ESPHome.
VL53L1X: What Changed
The VL53L1X extends the same basic FlightSense concept with a newer optical design and a receiving array that supports programmable region-of-interest control.
- Up to 4 m quoted ranging distance.
- Up to 50 Hz ranging frequency.
- 27° typical full FoV.
- Programmable ROI size to reduce the effective field of view.
- Programmable ROI position for more advanced host-controlled sensing.
- Improved long-range and ambient-light capability compared with the VL53L0X generation.
For robotics, machine position sensing and narrow-target measurement, the ROI capability is often more important than the extra metres of range.
Field of View: 25° vs 27° Is Not the Important Difference
On paper, the VL53L0X has a 25° system field of view and the VL53L1X has a typical 27° full field of view. If that were the whole story, the difference would be minor.
The important feature is that the VL53L1X can reduce its effective field of view by selecting a smaller ROI on the SPAD array.
Wide FoV:
\ /
\ /
\ /
\ /
target
Reduced ROI / narrow FoV:
| |
| |
| |
target
This helps when you need to look through an aperture, ignore nearby side objects or measure a narrow target without letting the sensor see too much of the surrounding scene.
Why Field of View Matters More as Distance Increases
A ToF sensor does not behave like a perfectly narrow laser pointer. Its sensing cone covers a larger physical area as distance increases.
At short distances, the sensor may see only the intended object. At longer distances, the same angular field of view can include enclosure edges, walls, pipework or another object closer to the sensor.
This is one reason the VL53L1X ROI function can improve real installations even when you do not need its full 4 m range.
Range: Do Not Compare Only the Headline Number
| Condition | What happens |
|---|---|
| Bright white target indoors | Best-case range |
| Dark target | Range falls |
| Strong sunlight / IR | Range and measurement quality fall |
| Small target inside larger FoV | Background can influence result |
| Dirty or fogged cover window | Signal quality falls |
| Longer timing budget | Usually improves sensitivity at the cost of update speed |
If a project absolutely requires 3–4 m measurement, the VL53L1X is clearly the better starting point. If your object is always 20–50 cm away, the VL53L0X can be completely adequate.
Speed and Timing Budget
ToF sensors trade measurement time against performance. A longer timing budget gives the sensor more opportunity to collect useful reflected photons, which can improve stability and long-range performance.
The VL53L0X datasheet uses a typical default ranging budget around 33 ms and documents a minimum range measurement period around 8 ms. The VL53L1X is designed for faster operation and ST specifies ranging frequency up to 50 Hz.
For Home Assistant, 50 Hz is normally pointless. A level sensor or room automation often needs one reading every second or even every few seconds. Robotics and motion control are where the VL53L1X’s faster updates matter.
ESP32 Wiring Is Almost Identical
ESP32 VL53L0X / VL53L1X breakout
3.3V ---------- VIN / VCC*
GND ---------- GND
GPIO21 --------- SDA
GPIO22 --------- SCL
free GPIO ------ XSHUT
*Check the specific breakout board.
Some boards include their own regulator/level shifting.
The bare ST devices are not simply 5 V logic parts. Many popular breakout boards add regulation and level shifting, so always check the board rather than assuming every module labelled VL53L0X or VL53L1X has identical power requirements.
Default I²C Address: Both Use 0x29
Both sensors normally start at I²C address 0x29. This is fine with one device, but creates an address collision if you connect two identical sensors to the same I²C bus.
Sensor 1 → 0x29
Sensor 2 → 0x29
Sensor 3 → 0x29
All enabled at once
→ I²C address collision
How Multiple ToF Sensors Share One I²C Bus
The normal solution is the XSHUT pin. Hold every sensor in shutdown, enable them one at a time, assign a new I²C address, then enable the next sensor.
Boot:
VL53 #1 XSHUT = LOW
VL53 #2 XSHUT = LOW
VL53 #3 XSHUT = LOW
Enable #1
0x29 → change to 0x30
Enable #2
0x29 → change to 0x31
Enable #3
0x29 → change to 0x32
Result:
0x30
0x31
0x32
The changed address is not permanently stored in the sensor, so this sequence must happen again after power-up.
VL53L0X with ESPHome: Native Support
This is where the older VL53L0X has a major practical advantage. ESPHome has a built-in vl53l0x platform with support for the XSHUT/enable pin, timing budget, signal-rate limit, timeout and long-range mode.
i2c:
sda: GPIO21
scl: GPIO22
scan: true
sensor:
- platform: vl53l0x
name: "ToF Distance"
address: 0x29
enable_pin: GPIO25
update_interval: 1s
long_range: true
timeout: 200us
measurement_timing_budget: 33000us
For a normal Home Assistant distance sensor, you can start with a much simpler configuration and only tune timing/range settings if the default measurement is not stable enough.
Multiple VL53L0X Sensors in ESPHome
ESPHome can use the enable pins to bring several VL53L0X devices up sequentially and assign unique addresses.
sensor:
- platform: vl53l0x
id: tof_left
name: "Left Distance"
address: 0x30
enable_pin: GPIO25
update_interval: 500ms
- platform: vl53l0x
id: tof_center
name: "Center Distance"
address: 0x31
enable_pin: GPIO26
update_interval: 500ms
- platform: vl53l0x
id: tof_right
name: "Right Distance"
address: 0x32
enable_pin: GPIO27
update_interval: 500ms
This is one of the cleanest reasons to choose the VL53L0X for an ESPHome-only build: the multi-sensor setup is already handled by the native component.
VL53L1X with ESPHome: External Component Required
As of ESPHome 2026.9, there is still no built-in VL53L1X sensor platform in the official ESPHome component set.
Several community external components exist. Some wrap the Pololu VL53L1X driver and expose long/medium/short distance modes, timing budget and continuous ranging.
external_components:
- source:
type: git
url: https://github.com/jasonwbarnett/esphome-vl53l1x-pololu
ref: v1.0.0
components: [vl53l1x_pololu]
i2c:
sda: GPIO21
scl: GPIO22
vl53l1x_pololu:
distance_mode: long
timing_budget: 100ms
inter_measurement: 150ms
sensor:
- platform: vl53l1x_pololu
distance:
name: "VL53L1X Distance"
An external component can work very well, but it adds one more dependency to maintain. Pin the component to a known release or commit for a permanent installation rather than silently tracking every upstream change.
Arduino Support
If you are writing ordinary Arduino code rather than ESPHome YAML, both sensors are straightforward. Pololu maintains widely used Arduino libraries for both VL53L0X and VL53L1X, and ST provides official driver/API packages.
In Arduino projects, the software-support advantage of the VL53L0X mostly disappears, which is why the VL53L1X becomes the more attractive default.
Short, Medium and Long Distance Modes on VL53L1X
The VL53L1X supports operating modes that trade maximum range against immunity to ambient light and short-range performance.
- Short mode: best ambient-light immunity and short-range operation.
- Medium mode: middle ground.
- Long mode: maximum distance under suitable conditions.
Do not automatically select long mode. If your target is only 30 cm away in a bright environment, short mode may give a more robust result.
Using ToF for Water-Level Measurement
Both sensors can measure the distance from the top of a container to a liquid surface, but they are not automatically ideal water-tank sensors.
- Condensation on the optical window can ruin measurements.
- Steam or mist can scatter the infrared light.
- A small tank opening can interfere with a wide FoV.
- The liquid surface may reflect differently depending on angle and contamination.
- Neither common breakout board is inherently waterproof.
The VL53L1X’s programmable ROI is useful in a narrow opening because you can reduce the sensing area, but for a damp outdoor tank a waterproof ultrasonic or hydrostatic sensor may still be more appropriate.
Our ESP32 Water Tank Level Monitor guide covers waterproof ultrasonic and pressure-sensor approaches in more detail.
ToF vs Ultrasonic
| VL53 ToF | Ultrasonic | |
|---|---|---|
| Technology | Infrared light | Sound |
| Sensor size | Very small | Larger transducers |
| Narrow openings | Often better; VL53L1X ROI helps | Can suffer reflections |
| Soft acoustic targets | Not relevant in the same way | Can absorb sound |
| Transparent / optically difficult target | Can be problematic | May work better |
| Condensation on sensor face | Problematic | Also problematic depending on transducer |
| Outdoor waterproof modules | Less common | Very common |
Accuracy: Do Not Confuse Resolution with Accuracy
A module may report distance in millimetres, but that does not mean every reading is accurate to ±1 mm.
Measurement quality depends on signal strength, target reflectance, range, ambient infrared light, optical crosstalk, cover glass and timing budget. For precise mechanical measurement, calibrate the actual assembled system against known distances.
Cover Glass and Enclosures
Putting a transparent window over the sensor can introduce optical crosstalk between the emitter and receiver. ST publishes dedicated cover-window guidance for its single-zone ToF sensors.
- Keep the optical window clean.
- Avoid thick unknown plastics directly over the sensor.
- Follow ST’s cover-glass exclusion-zone guidance if the product is enclosed.
- Do not place the sensor behind smoked or IR-blocking material without testing.
- Recalibrate offset/crosstalk if the mechanical optical path changes.
Common Problem: Distance Jumps Randomly
- Target is near the practical range limit.
- Target reflectance is too low.
- Strong sunlight or another IR source is reducing signal quality.
- The field of view includes a closer side object.
- The module is looking through a dirty or unsuitable cover window.
- The timing budget is too short for the target.
- I²C wiring or power is unstable.
Before adding heavy software filtering, test the sensor against a large matte target at a known distance indoors. That separates optical problems from electrical ones.
Common Problem: Sensor Always Reads a Nearby Object
This is often a field-of-view problem rather than a broken sensor. The sensor may be seeing the edge of the enclosure, a mounting bracket or the side of a pipe.
With VL53L0X, reposition the sensor or change the mechanical aperture. With VL53L1X, a smaller ROI can often solve the problem in software.
Common Problem: Two Sensors Both Appear at 0x29
That is normal after reset. The new I²C address is volatile. Your firmware must use XSHUT to enable and re-address each sensor every time the system powers up.
Common Problem: VL53L1X YAML Does Not Compile in ESPHome
Do not copy platform: vl53l1x and expect stock ESPHome to recognise it. There is no native official VL53L1X platform in ESPHome 2026.9.
Install a maintained external component and use that component’s exact YAML schema, or use Arduino/ESP-IDF instead.
Best Choice by Application
| Application | Recommendation | Reason |
|---|---|---|
| Home Assistant room node | VL53L0X | Native ESPHome support is simple |
| Robot obstacle sensing | VL53L1X | Range, speed and ROI |
| Narrow chute / bin / opening | VL53L1X | ROI can reject side objects |
| Desk occupancy / short object detection | VL53L0X | Cheap and adequate |
| 3–4 m indoor measurement | VL53L1X | VL53L0X is not the right range class |
| Multi-sensor ESPHome array | VL53L0X | Native XSHUT/address handling |
| Custom Arduino product | VL53L1X | Better hardware with mature libraries |
Final Recommendation
VL53L1X is the better sensor. If you are choosing hardware for a new Arduino, ESP-IDF or custom embedded project, its longer range, faster measurement and programmable ROI justify choosing it over the older VL53L0X in most cases.
VL53L0X remains the better ESPHome convenience choice. Native support means a small Home Assistant distance sensor can be configured entirely in YAML, including XSHUT-based multi-sensor addressing.
So the decision is less about whether the VL53L1X is technically superior—it is—and more about how much you value stock ESPHome support. For a 20–100 cm Home Assistant project, VL53L0X is still completely sensible. For a new general-purpose ToF design, choose VL53L1X.
Related ESP32 Guides
- ESP32 Water Tank Level Monitor with Home Assistant & ESPHome
- ESP32 ADC Calibration: Voltage Dividers, Attenuation and Accurate Readings
- TCA9548A I²C Multiplexer with ESP32
Datasheets and External Resources
- ST VL53L0X product page — official specifications and current documentation.
- ST VL53L0X datasheet — range, field of view, timing and accuracy conditions.
- ST VL53L1X product page — 4 m range, 50 Hz operation and programmable ROI.
- ST VL53L1X datasheet — official electrical and ranging specifications.
- ESPHome VL53L0X component — native YAML configuration, long-range mode, timing budget and XSHUT support.
- VL53L1X ESPHome external component — community continuous-ranging implementation based on the Pololu driver.