MATCH

feature matching in the browser — nothing is uploaded © OpenStreetMap · Copernicus Sentinel · ESA
Most image formats, plus TIFF, JP2 and PDFi
JPEG, PNG, WebP, GIF and BMP are decoded by the browser. TIFF, GeoTIFF, JPEG 2000 and PDF are not — those use geotiff.js, an openjpeg build and pdf.js, each fetched only when a file needs it. A big TIFF is read downsampled, so its size costs little. A GeoTIFF that already knows where it is says so.
Draw the box round what the image showsi
Not the region it sits in. A reference much coarser than the image stops matching: measured on one scan, a reference 3.4× coarser gave 2 matches where 1.3× gave 180. If it finds nothing it halves the area once and tries again.
Sentinel-2, 10 mi
Free to use commercially, which the sharper basemaps are not: Esri restricts commercial use and EOX's cloudless mosaic is non-commercial. Expect weaker matches than against sub-metre imagery — a 10 m reference cannot resolve what a 2 m photograph shows.
A rendered map against OSM gave 134 inliers here and recovered the rotation to 0.04°; a photograph against OSM gave 2 and got it 59° wrong. Both sides being line work is the reason.

A 19th-century engraved plate is a different matter. Tested against a National Library of Australia sheet: 2 inliers, and land/sea masking did not rescue it. Modern renderings match; antique engraving does not, yet.
Your images never leave this machine.i
They are read into a canvas and matched on your own GPU, which is also why there is no server bill behind this page. Fetching a reference sends the area you chose — not the image — so the right tiles come back. Choosing your own reference sends nothing at all.

, reduced to 1024 px for matching.
Shear says whether an affine was the right model: near zero means the pair differs by little more than a scale and a rotation. A large value means the ground is tilted or the lens is wide, and the transform this page fits is not enough.

ABOUT, AND WHO MADE THE PARTS

Free while it is a prototype. Everything here runs on your own machine, so there is no server cost to pass on. A paid tier is planned for the things that cannot work that way — larger maps, batches, sharper reference imagery and higher-order transforms for scans with paper distortion. Nothing you can do today will move behind it.

A prototype means a prototype: check the result before you rely on it. The fit is an affine, which cannot represent paper distortion or a projection change.

DATA

Reference imagery Copernicus Sentinel-2 L2A, © ESA. Free and open, commercial use permitted.
Imagery catalogue Earth Search by Element 84, over AWS Open Data.
Map rendering © OpenStreetMap contributors, ODbL. Tiles from the OSMF, whose usage policy rules out production traffic — a hosted version will render its own.
Place search Nominatim, OpenStreetMap Foundation. Non-commercial terms; a paid geocoder replaces it.

METHOD

Feature detection SuperPoint — DeTone, Malisiewicz & Rabinovich, Magic Leap, 2018.
Feature matching LightGlue — Lindenberger, Sarlin & Pollefeys, ETH Zürich, ICCV 2023.
Fit Affine by RANSAC, refined by least squares on the inliers.

SOFTWARE

onnxruntime-web (Microsoft, MIT) runs the models on WebGPU · geotiff.js (MIT) reads TIFF and the Sentinel-2 COGs · openjpeg via @cornerstonejs (BSD) reads JPEG 2000 · pdf.js (Mozilla, Apache 2.0) renders PDF · proj4js (MIT) converts coordinates · Leaflet (BSD) draws the picker.

The models were exported to ONNX for this tool; the export script and its notes are part of the project.

WHERE IS IT?

Search for a place, or drag on the map to draw a box. Any scale: a city block, a country, a continent. Measured over the British Isles at 1200 km, 450 of 453 matches were consistent — at that scale the coastline is what matches, and it matches better than streets.

Drag on the map to draw a box.