Point in Polygon Checker

Paste a boundary polygon and a list of latitude/longitude points to see which fall inside. GeoJSON or plain lat,lon lines, holes and multipolygons supported, results as text, CSV, or JSON.

Try:
Result

About this tool

This point-in-polygon checker tests a batch of latitude/longitude points against one geofence polygon and reports whether each point is inside, outside, or exactly on the boundary. It is built for quick geofencing QA: paste a boundary, paste points from a spreadsheet or a GeoJSON export, choose how boundary points should be classified, and copy the text, CSV, or JSON result.

The polygon input accepts:

Point input accepts CSV-style lat,lon[,label] lines, JSON arrays/objects, and GeoJSON Point, MultiPoint, Feature, or FeatureCollection values. For non-GeoJSON formats you can choose lat,lon or lon,lat; GeoJSON always uses standard [longitude, latitude] ordering.

Worked example

Use this square polygon:

0,0
0,10
10,10
10,0

and these points:

5,5,Center
10,5,Edge
20,20,Far away

With Boundary = Inside and Output = Text, the result is:

3 points: 2 inside, 1 outside
#1  5, 5 (Center)  inside
#2  10, 5 (Edge)  inside
#3  20, 20 (Far away)  outside

Switch to CSV for spreadsheet-friendly point,latitude,longitude,label,status rows, or JSON for structured test results.

FAQ

Does it support holes and multipolygons?

Yes. GeoJSON polygons can include interior rings; a point inside a hole is reported outside. MultiPolygon inputs are treated as a union of polygons, so a point is inside when it falls inside any polygon part and not inside that part's holes.

Which coordinate order should I pick?

Use Latitude, Longitude for ordinary pasted rows such as 40.0,-105.0. Choose Longitude, Latitude when your non-GeoJSON source is written in GIS x,y order. GeoJSON ignores this setting because GeoJSON coordinates are always [longitude, latitude].

How are points exactly on the polygon edge handled?

The On-boundary points count as control decides that. Pick Inside to match common geofence behavior, Outside for strict containment, or Boundary when you want edge hits reported as their own status in the output.

Can I draw a polygon on a map or import KML/GPX?

No. This is a deterministic text/GeoJSON checker, not an interactive map editor. Convert KML or GPX to GeoJSON first, or paste simple coordinate lines. It also uses decimal degrees only and does not reproject coordinates from other CRSs.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool geofence-check '0,0
0,10
10,10
10,0   (or GeoJSON: {"type":"Polygon","coordinates":[[[0,0],[10,0],[10,10],[0,10],[0,0]]]})' 'points=40.0,-105.0,Depot
41.25,-106.5,Warehouse'

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/geofence-check/?polygon=0%2C0%0A0%2C10%0A10%2C10%0A10%2C0%20%20%20%28or%20GeoJSON%3A%20%7B%22type%22%3A%22Polygon%22%2C%22coordinates%22%3A%5B%5B%5B0%2C0%5D%2C%5B10%2C0%5D%2C%5B10%2C10%5D%2C%5B0%2C10%5D%2C%5B0%2C0%5D%5D%5D%7D%29&points=40.0%2C-105.0%2CDepot%0A41.25%2C-106.5%2CWarehouse&coord_order=lat_lon&boundary=inside&output=text

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.