BirdNET-Cloud
Bat Station Remote Tuning Reference
A guide to the advanced detection parameters for bat monitoring stations
This document describes the tunable parameters available for BirdNET-Cloud bat stations through the Remote Tuning panel in the dashboard (station settings → Remote tuning → Add override). Each parameter can be set per station without SSH access or a station restart on your part — the station applies changes automatically within a few minutes.
These are advanced controls. The defaults are chosen to work well across a wide range of sites and species. You should only change them if you have a specific reason — for example, persistent false positives from insects or rain, or missing detections of a known low-frequency species. When in doubt, leave a parameter unset so it uses its default.
How bat detection works
Understanding the pipeline makes the parameters below far easier to reason about. Each recorded segment passes through two stages:
- The classifier. A region-specific BattyBirdNET neural network listens to the ultrasonic audio and proposes a species with a confidence score. This stage answers “what does this sound like?”
- The pulse-train gate. Before a proposed detection is accepted, a signal-analysis stage checks that the audio actually contains a genuine bat echolocation pass, a sequence of well-spaced ultrasonic pulses, rather than a single rain click, an insect tone, or a wind smear. This stage answers “is this really a bat?” and is where most of the tunable parameters live.
Most false positives (rain, katydids, crickets, mechanical noise) are rejected by the pulse-train gate, not the classifier. Most missed bats are caused by a gate parameter set too aggressively for the species or site. The parameters below let you balance those two failure modes for your conditions.
A note on the frequency band: the single most impactful, and most easily misused, parameter is the lower band edge. Several bats (Hoary and Silver-haired bats, for example) call as low as 20–27 kHz. If the pulse-detection band floor is set above their call frequency, the classifier will still recognize them at high confidence, but the pulse-train gate will find zero pulses and reject every one. Raise the band floor only if you are certain low-frequency bats are not present at your site.
The pulse-train gate
These parameters govern the core false-positive filter. A real echolocation pass is a sequence of short, well-spaced ultrasonic pulses; rain is a single broadband click; insects are narrow continuous tones. The gate examines a roughly one-second window around each classifier hit and confirms a bat-like pulse sequence before accepting the detection.
Gate mode
Variable
BIRDNET_BAT_PULSE_GATE
Default
drop
Range / values
drop | log | off
What it does
Controls what the pulse-train gate does with a classifier hit that lacks a valid pulse train. “drop” suppresses it (fewer false IDs). “log” keeps everything but records what it would have dropped — useful for observing the gate’s effect before committing. “off” disables the gate entirely.
When to adjust
Set to “log” for a night or two when first tuning a new site, review how many detections would be dropped, then switch back to “drop”. Use “off” only for diagnostics.
Minimum pulses
Variable
BIRDNET_BAT_MIN_PULSES
Default
4
Range / values
Integer, typically 2–8
What it does
The number of distinct ultrasonic pulses that must be present in the analysis window for a detection to be accepted. A rain click produces one pulse; a real pass produces many.
When to adjust
Lower toward 2–3 if brief passes or single-call species are being missed. Raise toward 5–6 if noise is still slipping through as false detections. Setting this too high is a common cause of missed bats.
Analysis window
Variable
BIRDNET_BAT_PULSE_WINDOW_MS
Default
1000
Range / values
Milliseconds, typically 500–2000
What it does
The width of the time window (in milliseconds) around each classifier hit that is examined for a pulse train.
When to adjust
Rarely changed. A wider window gives slow, sparse passes more room to accumulate the required pulse count; a narrower window is stricter.
Pulse detection threshold
Variable
BIRDNET_BAT_PULSE_DB
Default
4.0
Range / values
Decibels above local noise floor
What it does
How far above the surrounding noise floor a peak must rise to count as a pulse. Higher values require louder, clearer pulses.
When to adjust
Raise if faint background noise is being counted as pulses. Lower if quiet or distant passes are being missed.
Inter-pulse interval — minimum
Variable
BIRDNET_BAT_IPI_MIN_MS
Default
3.0
Range / values
Milliseconds
What it does
The shortest allowed gap between consecutive pulses. Pulses closer together than this are treated as a single event or noise, not two pulses.
When to adjust
Rarely changed. Lower only if working with very high-repetition-rate calls (e.g. terminal feeding buzzes) that you want counted pulse-by-pulse.
Inter-pulse interval — maximum
Variable
BIRDNET_BAT_IPI_MAX_MS
Default
300.0
Range / values
Milliseconds
What it does
The longest allowed gap between consecutive pulses that still counts as part of the same pulse train. Gaps longer than this break the sequence.
When to adjust
Raise for slow-flying species with widely spaced calls if their passes are being fragmented and rejected. Lower to be stricter about what counts as a continuous pass.
Frequency band
These two parameters define the frequency range the pulse detector searches. They are the primary discriminator against low-frequency noise — and, if set incorrectly, the most common cause of missed low-frequency bats.
Lower band edge
Variable
BIRDNET_BAT_BAND_LO_KHZ
Default
22.0
Range / values
kHz, typically 18–30
What it does
The lower frequency edge (in kHz) of the band searched for pulses. Insect chorus, hum, and broadband clicks mostly die out below ~18–20 kHz, so a floor around 22–24 kHz excludes them while keeping genuine echolocation (roughly 25–90 kHz).
When to adjust
Lower toward 20 kHz if low-frequency bats (Hoary, Silver-haired) are being missed — they call as low as ~20 kHz. Raise only if low-frequency noise is getting through AND you are certain no low-frequency bats are present. This is the highest-impact parameter in this document; a floor set too high silently rejects entire species.
Upper band edge
Variable
BIRDNET_BAT_BAND_HI_KHZ
Default
90.0
Range / values
kHz, typically 80–125
What it does
The upper frequency edge (in kHz) of the band searched for pulses. Covers the great majority of bat echolocation.
When to adjust
Raise toward 110–125 kHz if monitoring very high-frequency species whose calls sit above 90 kHz. Note the usable ceiling is set by the microphone’s sample rate (an AudioMoth at 250 kHz gives ~125 kHz of usable bandwidth).
Pulse-shape filters (rain, insects, wind)
These parameters reject specific classes of non-bat noise based on the shape of individual pulses. They are the knobs to reach for when a station is producing false detections tied to weather or insects.
Tonality limit (insect filter)
Variable
BIRDNET_BAT_TONAL_MAX
Default
0.5
Range / values
0.0–1.0 (1.0 = disabled)
What it does
A real echolocation pulse is a frequency sweep (broadband); insect stridulation (katydids, crickets) is a narrow tone. A pulse is rejected if more than this fraction of its energy sits within ~1 kHz of its peak frequency — i.e. it is too tonal to be a bat.
When to adjust
Lower (e.g. 0.4) to kill more insect noise, at the risk of dropping genuine constant-frequency bat calls. Raise toward 1.0 to disable the check if it is rejecting real bats in an insect-quiet environment.
Continuity limit (wind/rain smear filter)
Variable
BIRDNET_BAT_MAX_RUN_MS
Default
35.0
Range / values
Milliseconds (very high = disabled)
What it does
A real pulse is short (≤ ~5 ms) followed by a silent gap. Wind, rain, and mechanical noise produce a continuous broadband smear — energy on for hundreds of milliseconds. If the longest unbroken run of in-band energy exceeds this many milliseconds, the window is treated as a smear and rejected.
When to adjust
Raise to be more permissive if real passes are being rejected as smears. Set very high (e.g. 100000) to disable. Lower to be stricter about wind and rain.
Maximum pulse bandwidth (rain-click filter)
Variable
BIRDNET_BAT_MAX_BW_KHZ
Default
999.0 (off)
Range / values
kHz (999 = disabled)
What it does
Rain-droplet clicks are ultra-broadband — they spread across a very wide frequency range in a single instant. Bat pulses are focused sweeps. A pulse whose instantaneous spectral bandwidth exceeds this value is rejected as a click. Disabled by default so existing stations are unaffected until deliberately tuned.
When to adjust
Enable (try ~40 kHz, then lower toward 20) only on a station with a persistent rain-click false-positive problem. Set too low, it will reject genuine broadband FM sweeps — so lower it gradually and watch for missed bats.
Capture and confidence
Minimum confidence
Variable
BIRDNET_BAT_MIN_CONFIDENCE
Default
0.65
Range / values
0.0–1.0
What it does
The minimum classifier confidence score for a detection to be considered at all (before the pulse-train gate). Higher values keep only the classifier’s most certain identifications.
When to adjust
Raise toward 0.8 if you want only high-certainty IDs and can accept missing marginal ones. Lower toward 0.5 to surface more candidates (the pulse-train gate will still filter noise), at the cost of more borderline IDs.
Segment length
Variable
BIRDNET_BAT_SEGMENT_SECONDS
Default
10
Range / values
Seconds, typically 5–15
What it does
The length of each recorded audio segment that is captured and analyzed as a unit.
When to adjust
Rarely changed. Shorter segments give slightly finer time resolution and faster Live View turnover; longer segments are marginally more efficient. The default suits nearly all deployments.
Keep rejected samples (diagnostic)
Variable
BIRDNET_BAT_KEEP_REJECTED
Default
0 (off)
Range / values
Integer (number of samples to retain)
What it does
For diagnostics: retains a random sample of spectrograms that the pulse-train gate rejected, so you can review what is being filtered out and whether the gate is too aggressive. 0 keeps none.
When to adjust
Set to a small number (e.g. 20–50) temporarily when investigating whether the gate is dropping real bats at a site. Return to 0 for normal operation to avoid accumulating diagnostic images.
Hybrid stations (bird + bat)
A hybrid station runs a bird microphone and a bat (ultrasonic) microphone simultaneously. One additional parameter applies specifically to hybrids.
Bird daytime-only (duty split)
Variable
BIRDNET_BIRD_DAYTIME_ONLY
Default
false (off)
Range / values
true | false
What it does
When enabled on a hybrid, the bird analyzer only runs during daylight (dawn to dusk), leaving the whole night to the bat detector. The bat pipeline already runs only at night, so this creates a clean day-birds / night-bats duty split and avoids wasting processing on bird analysis when birds are not calling.
When to adjust
Enable on a hybrid station where you want a clean handoff between the two pipelines. The handoff follows real sunrise and sunset from the station’s GPS coordinates. Leave off to analyze birds continuously.
Practical tuning guidance
A few principles that will save time in the field:
- Change one parameter at a time, and give it at least one full night before judging the effect. Bat activity varies enormously night to night.
- If you are getting false positives, identify the source first. Insect tones → tonality limit. Rain clicks → maximum pulse bandwidth. Wind smears → continuity limit. Reaching for the wrong knob will cost you real detections.
- If you are missing bats, suspect the lower band edge and the minimum-pulses count first — these are the two parameters most likely to silently reject a real species.
- Use “log” gate mode or the keep-rejected diagnostic to see what the gate is filtering before you commit to a stricter setting.
- To reset any parameter to its default, simply remove the override in the dashboard — the station will return to the documented default value automatically.
BirdNET-Cloud · Bat Station Remote Tuning Reference · pixcams.com
