100% client-side · your geometries never leave your browser
Universal Geometry Inspector — paste WKT, WKB, GeoJSON, polyline, geohash, H3, S2
Drop in any geospatial geometry and instantly see what it is: the format is auto-detected, the geometry is validated (with one-click fixes), converted to every other format, and drawn on a map. It all happens 100% in your browser — your geometries are never uploaded, logged, or sent to any server.
Supported formats
One paste box, 12 encodings. Auto-detection ranks the likely formats (a hex string could be WKB or a geohash), and you can always override the guess.
- GeoJSON
- RFC 7946 JSON — the lingua franca of web maps (Leaflet, Mapbox GL, OpenLayers) and GeoJSON APIs.
- WKT
- Well-Known Text — the human-readable OGC form, e.g. POLYGON((…)); what PostGIS ST_AsText returns.
- EWKT
- Extended WKT — WKT with an SRID prefix, e.g. SRID=4326;POINT(…); PostGIS’s native text output.
- WKB
- Well-Known Binary — compact hex/base64 bytes that spatial databases store and exchange.
- EWKB
- Extended WKB — WKB carrying an embedded SRID, as emitted by PostGIS ST_AsEWKB.
- TWKB
- Tiny WKB — a quantized, lossy binary designed to shrink geometry payloads on the wire.
- Encoded Polyline (precision 5)
- Google Encoded Polyline, precision 5 — the squiggly route strings returned by Directions APIs.
- Encoded Polyline (precision 6)
- Encoded Polyline, precision 6 — the higher-resolution variant used by OSRM and Valhalla.
- Geohash
- Base-32 string naming a rectangular cell; each extra character zooms into a smaller cell.
- H3 Cell
- Uber’s hexagonal hierarchical grid index — a cell id such as 8928308280fffff.
- S2 Cell
- Google’s spherical quad-cell token — the grid behind geofencing and Pokémon GO wayspots.
- Lat/Lng Text
- A loose “lat, lng” pair copied straight from a maps app or a spreadsheet cell.
Understanding validation errors
Valid syntax does not mean valid geometry. After parsing, the inspector runs semantic checks and explains each problem in plain language — most with an auto-fix. Here are the ones you will meet most often.
- Ring not closed
- A polygon ring must start and end at the same point. If the first and last coordinates differ, the ring is “open”. WKT and GeoJSON both require closed rings; the inspector can close them for you by repeating the first point.
- Winding order / right-hand rule
- RFC 7946 wants outer rings counter-clockwise and holes clockwise. Get it backwards and some renderers fill the outside of your polygon or drop the holes. A one-click rewind re-orients every ring correctly.
- Self-intersection
- An edge that crosses another edge (a “bow-tie” polygon) is invalid under the OGC Simple Features rules and breaks area, buffer, and point-in-polygon math. The inspector detects the crossings so you can redraw the offending vertices.
- Latitude / longitude swapped
- Everything here is longitude-then-latitude (x, y). Paste “lat, lng” by mistake and your point lands in the wrong hemisphere. When a coordinate only makes sense swapped — a longitude past ±90, say — the inspector warns and offers to swap the axes.
- Antimeridian crossing
- A line or polygon that spans the ±180° meridian (near Fiji, the Bering Strait, or the date line) can render as a stripe across the whole map unless it is split. The inspector flags the crossing so you can decide whether to cut the geometry at ±180°.
Doing this in code?
The inspector is handy for a quick look, but here is the same round-trip in the tools you probably already use.
PostGIS & Python one-liners
Parse WKT and read it back as GeoJSON in PostGIS:
SELECT ST_AsGeoJSON(
ST_GeomFromText(
'POLYGON((-87.63 41.87, -87.62 41.87, -87.62 41.88, -87.63 41.88, -87.63 41.87))',
4326
)
); Convert WKT to GeoJSON in Python with Shapely:
from shapely import from_wkt, to_geojson
print(to_geojson(from_wkt("POINT (-87.63 41.88)"))) More single-purpose spatial tools
Every tool here runs on the same client-side engine — nothing you paste ever leaves your browser. If you have a narrower job, one of these focused pages will get you there faster.