Adafruit STEMMA Soil Sensor - I2C Capacitive Moisture Sensor (ID:4026)
Most low-cost soil sensors are resistive style, where there are two prongs and the sensor measures the conductivity between the two. These work OK at first, but eventually, start to oxidize because of the exposed metal. Even if they're gold plated! The resistivity measurement goes up and up, so you constantly have to re-calibrate your code. Also, resistive measurements don't always work in loose soil.
This design is superior with a capacitive measurement. Capacitive measurements use only one probe, don't have any exposed metal, and don't introduce any DC currents into your plants. This sensor uses a built-in capacitive touch measurement system built into the ATSAMD10 chip, which will give you a reading ranging from about 200 (very dry) to 2000 (very wet). As a bonus, it also gives you the ambient temperature from the internal temperature sensor on the microcontroller, it's not high precision, maybe good to + or - 2 degrees Celsius.
To make it so you can use the sensor with just about any microcontroller, it has an I2C interface. Connect a 4-pin JST-PH cable to your microcontroller or single board computer to 3-5V power, Ground, I2C SDA and I2C SCL and then run provided Arduino or CircuitPython code to read the temperature and capacitive measurement. No soldering required!
Please note: This is just the sensor, you'll also need a JST 4-PH cable to go along for plugging it in!