Features
Everything BirdNET-NG can do today.
Audio Capture
Deploy microphones anywhere — Raspberry Pi nodes or Android phones — and let them record autonomously.
- 3-second WAV chunks at 48kHz mono (BirdNET's native window)
- Three capture modes: ALSA (real hardware), simulated (sine wave), replay (pre-recorded files)
- Local outbox queue (sql.js SQLite) — never blocks on network, drains with exponential backoff
- MQTT transport with auto-reconnect, QoS 1, and hub-side acknowledgment
- On-device audio filtering: adaptive noise floor + spectral peak SNR detection — rejects silence and non-bird audio before uploading
- Recording profiles: continuous, dawn chorus, night migration, low power — with sunrise/sunset scheduling from GPS coordinates (NOAA algorithm)
- 30-second heartbeat keepalive (decouples online status from audio sending)
AI Inference
BirdNET deep learning model identifies 6,500+ bird species.
- Geo-aware filtering: species range narrowing based on GPS + date
- Confidence-based re-processing: uncertain detections (0.4–0.7) get a second pass with extended window, frequency isolation, and cross-chunk correlation
- Scalable workers: Python 3.11 + TFLite, scale horizontally with
docker compose up --scale worker=N - Worker dashboard: connected workers, queue depth, processing stats
Species Intelligence
Rich context around every detection.
- Species catalog: sortable cards with detection count, confidence, first/last seen, satellite count, accuracy. Sort by name uses primary language; search works across all 38 languages
- Species profile pages: 90-day trend, hourly activity, seasonal presence, satellite breakdown, confidence distribution
- Expected species: eBird integration cross-references what you should be seeing vs. what you've detected
- First-of-season detection: automatic seasonal tracking with green badge on detection cards
- First-of-day detection: per-species per-satellite daily tracking with blue badge
- Rarity model: frequency-based rarity scoring with watchlist alerts
- Species images: bird thumbnails from Wikipedia, downloaded in background, stored permanently in MinIO
Detection & Timeline
Browse, verify, and explore your detections.
- Detection list: filter by satellite, status, species, confidence — with server-side sorting and pagination. Species search works across all 38 languages
- SpectrogramPlayer: click-to-seek, drag-to-select loop region, signal boost (1x–20x), speed control (0.25x–2x), volume, download
- Timeline: chronological recording sessions with inline chunk bars, species filter pills, expand/collapse sessions
- Community verification: vote Yes/No/Unsure with keyboard shortcuts, consensus threshold, accuracy stats
- Detection comments: inline expandable thread per detection
- Shareable links: HMAC-signed public URLs with species image, translated names, stats, and lightbox (no login required)
- Link previews: Open Graph meta tags for rich previews on Discord, Slack, Telegram, WhatsApp, Twitter, Facebook
Analytics & Visualization
Understand your data at a glance.
- Dashboard: 7-day detection trend, hourly activity bars, biodiversity snapshot, fleet status
- Detection map: satellite markers (colored by status), detection clusters, heatmap layer, time range filter — species names in user's language
- Biodiversity indices: Shannon H', Simpson 1-D, Pielou's evenness — per satellite and global
- Migration patterns: month-by-species heatmap showing seasonal presence
- Weather correlation: Open-Meteo temperature + precipitation overlaid on detection activity
- Location comparison: side-by-side satellite stats, Jaccard similarity, shared/unique species, hourly activity
- Activity heatmaps: hour-by-day-of-week grids per satellite and globally
Smart Alerts
Get notified about what matters.
- Three trigger types: detection (species, confidence, time window, rare/first-of-season/first-of-day), absence (no activity for N minutes), trend (diversity or count drop/increase)
- Six notification channels: Email (SMTP), Slack (Block Kit), Telegram (Bot API), Google Chat (Cards v2), Discord (embeds), Webhook (HMAC-signed)
- Per-rule cooldown to prevent alert spam
- Alert messages in tenant's language — species names, labels, and rarity reasons translated based on tenant settings
- Notification links point to public share pages (no login required for recipients)
- Species images in notifications via Wikipedia direct URLs
- Platform health banner: persistent warning when core services are down
- Scheduled exports: cron-based automatic CSV/JSON/eBird/iNaturalist delivery via any channel
Data Export
Get your data out in standard formats.
- CSV and JSON export with filters
- eBird checklist generation
- iNaturalist observation export
- xeno-canto recording submission
- Scheduled automatic exports with cron scheduling
Satellites & Fleet Management
Monitor and configure your entire network.
- Fleet table: sortable, searchable, filterable with expandable detail rows
- Telemetry: CPU, storage, battery, uptime, GPS, recording state
- Per-satellite config overrides: override any tenant setting per device, with admin lock
- Recording profile push: assign and push profiles via MQTT
- Remote update: trigger Pi satellite updates from the web UI via MQTT
- Satellite registration: register from web UI with complete
.envgeneration - Schedule preview: resolved sun times and recording windows per satellite
Android App
Turn any phone into a satellite.
- Native AudioRecord plugin (bypasses WebView audio limitations)
- GPS gate with auto-update interval (30s–10min)
- Background mode for continuous recording
- In-app log viewer, keep-screen-on toggle
- Hub filter settings received and applied via MQTT
- Schedule display (read-only, from hub)
Multi-Tenancy & Auth
Multiple teams share infrastructure with full data isolation.
- Row-level isolation via
tenant_idon all data tables - Global users with per-tenant membership and roles (viewer < member < admin < owner)
- Platform admin: cross-tenant access, hidden from tenant member lists
- JWT cookie sessions (httpOnly, 7-day expiry) + Bearer API key auth
- Invite system: single-use links with role assignment, 72h expiry
- Login security: rate limiting (20/IP/15min), account lockout (5 failures), last login tracking
User Management & Settings
Full control for admins and users.
- Account page: edit profile, change password, delete account
- User preferences: primary/secondary bird name languages, date/time format, voting mode
- Platform users: search, block/unblock, reset password, add to tenant, edit, delete
- Tenant settings: confidence thresholds, audio filter config, heartbeat interval, offline timeout, retention, watchlist, tenant language
- Platform settings: self-registration toggle, tenant creation toggle, invite links toggle, Wikimedia API config, species image cache management with not-found investigation panel and per-species retry
- Audit log: 30+ action types covering login, registration, profile changes, satellite management, settings, votes, webhooks, cache operations — with real client IPs
- System monitoring: platform admin view of all running service instances (API, dispatcher, workers), infrastructure health, data summary, queue stats
- Tenant ownership transfer
Internationalization (i18n)
The full interface in your language.
- English and French translations with 500+ keys covering every page
- Language switcher in sidebar
- Locale-aware formatting: relative times, date/time, language names via Intl APIs
- Singular/plural support via
Intl.PluralRules(e.g. "1 detection" vs "5 detections") - Bird names in 38 languages via BirdNET label files (primary + secondary display)
- Map popups and heatmap labels localized
- Start-of-week preference (Monday/Sunday/Saturday) for heatmap grids
Infrastructure
- Docker Compose: 8-container stack (9 with split mode) behind Traefik reverse proxy
- Hub split mode: stateless API (scalable) + single-instance dispatcher
- Four FQDNs: web, MQTT, MinIO console, documentation site
- MQTT over WSS (port 443, no extra firewall ports)
- Service registry: Redis-based auto-discovery with System monitoring page
- 23 database migrations, run automatically on hub startup
- Versioned documentation site with version switcher