We've all had this moment: you drag a layer into QGIS and… nothing. No error, no shape on the map — just empty space. Kestrel tells you why.
Drop a file on it and it reads back the CRS / UTM zone, the data's real-world location, and a plain-English list of anything that would stop it from drawing. A quick, friendly sanity check for the everyday "wait, where did my layer go?" — and it never changes your data, it just takes a careful look.
- Format & driver (Shapefile, GeoPackage, GeoJSON, GeoTIFF, …)
- CRS — name, EPSG code, UTM zone, projected vs. geographic, units, datum, and the region the CRS is valid for
- Location (WGS84) — the extent reprojected to lon/lat, so you can confirm the data lands where you expect on Earth
- Map preview — a tiny offline world map marks where the data sits, so "where on Earth?" is a one-second glance
- Details — geometry type, feature count and fields (vector); size, bands, data type, pixel size and NoData (raster); native extent
- Diagnostics — common reasons a layer won't show up in QGIS:
- No CRS defined / missing
.prj - Coordinates that don't match the declared CRS (e.g. lat/lon tagged as a projected CRS — the classic "lands in the ocean")
- Empty layers, zero-area extents, "Null Island" (0, 0) coordinates
- Data outside the CRS's valid area, the wrong UTM hemisphere/zone, or an extent that wraps the antimeridian
- Invalid / self-intersecting geometry, and layers in mismatched coordinate systems
- Multiple layers in a GeoPackage (you may be loading the wrong one)
- No CRS defined / missing
Zipped or plain shapefiles, GeoPackage (.gpkg, multi-layer), GeoJSON, KML/KMZ/GML/GPX,
CSV / Excel with coordinate columns (it finds the lon/lat or x/y and infers the CRS), and
rasters via rasterio (GeoTIFF, IMG, VRT, JPEG2000, …). Unknown extensions are tried as
vector first, then raster, so most things just work.
Get it from the Kestrel website, or straight from the Releases page (no Python required):
KestrelSetup.exe— installer (recommended): per-user, no admin needed; adds a Start-Menu shortcut and an uninstaller.Kestrel-windows.zip— portable: unzip anywhere and runKestrel\Kestrel.exe.
It's a one-folder build, so it starts fast (about a second) after the first launch. The app is unsigned, so Windows SmartScreen may warn on first launch — choose More info → Run anyway.
The installer also adds a right-click → "Inspect with Kestrel" entry for geospatial files
(on Windows 11 it's under Show more options). Portable/zip users can enable it once with
Kestrel.exe --register (and remove it with --unregister).
- GUI: double-click
run.bat, or runpy gui.py. (Right-clickrun.bat→ Send to → Desktop to make a desktop shortcut.) - Command line:
py cli.py path\to\data.gpkgprints the same report in the terminal.
Needs Python 3.10+ and the packages in requirements.txt:
py -m pip install -r requirements.txt
py -m pip install pyinstaller pyinstaller-hooks-contrib
build.bat REM -> dist\Kestrel\Kestrel.exe (one-folder app)
build_installer.bat REM -> dist\KestrelSetup.exe (needs Inno Setup 6)
The build recipe is Kestrel.spec (bundles the GDAL/PROJ data) and the installer
script is Kestrel.iss.
MIT © 2026 Dozer3530

