The browser-based region-of-interest editor for computer vision workflows. Draw detection zones, annotate floor plans, define camera coverage areas — tag and classify each region with custom labels and metadata — then export coordinates without installing anything or creating an account.
Professional zone-drawing tools in a zero-install browser app. No cloud dependency, no lock-in, no account.
Draw zones with rectangles, polygons, polylines, circles, ellipses, and keypoints. Every shape you need to mark a region precisely — click-to-place, no drag friction.
Tag each region with custom labels, categories, and free-text descriptions for downstream processing. Organise regions into named layers — detection zones, exclusion areas, floor sections — and toggle visibility per layer to manage complex scenes without clutter.
Link adjacent region boundaries so edits stay consistent. When two zones share a wall or edge, moving one vertex updates both — essential for floor plans and tight spatial layouts.
Built-in ruler, area, and angle tools for annotating spatial relationships — measure distances between zones, calculate floor section areas, verify camera angles on a plan.
Runs entirely in your browser — no server, no account, no data upload. Load an image, define your regions, and save locally even without an internet connection. When you need to manage scenes across devices, the optional Dashboard is there — but never required.
Export your scene as a flat PNG (image + all regions composited), native JSON (full fidelity with layers and metadata), COCO JSON, or YOLO TXT. Useful for documentation, feeding a CV pipeline with zone coordinates, or visualising an existing detector's configuration.
Publish your annotated scene to a shareable URL with one click. Send a view-only link for review, or share an edit link so collaborators can publish their own changes. Sharing is always opt-in — RegionKit works fully offline without it.
Every publish saves a new versioned snapshot. Browse the full history of a scene, see which versions include an image, and restore any previous snapshot with a single click — your work is never lost.
Sign in once to unlock the Dashboard — group scenes into projects, access them from any device, and keep your team's annotation work in sync without juggling JSON files. The standalone editor still runs offline, always.
Entrance Zone
Updated May 31
Parking Areas
Updated May 30
Loading Bay
Updated May 28
Emergency Exit
Updated May 26
Full keyboard shortcut coverage so your hands never leave the keyboard.
Anyone who needs to define spatial regions on images for a computer vision system.
Load a camera still frame, define detection zones, tripwires, and exclusion regions as named polygons, then export the coordinates for your pipeline. Iterate on zone geometry without redeploying code.
Annotate floor plans with coverage areas, detection perimeters, and zone boundaries. Layers keep zone types separated — monitoring areas on one layer, exclusion zones on another — without losing spatial context.
Analyse spatial regions in images for occupancy studies, path analysis, or any experiment requiring structured region data. Draw, label, and export ROIs for quantitative spatial reasoning.
No download. No sign-up. Load an image and start defining zones immediately.
Open RegionKit — it's freeNeed to manage multiple scenes? Sign in to the Dashboard →
Need to deploy RegionKit behind a firewall, on an air-gapped network, or as part of a larger CV platform? Get in touch — we're happy to help with self-hosted setups.
Publish a scene once — fetch zone coordinates from any script or service. Reading a published scene requires no authentication.
Base URL: api.regionkit.app
/api/scenes/{id} Fetch the latest published scene — no auth required
/api/scenes/{id}?v=N Fetch a specific version snapshot
/api/scenes/{id}/versions List all published versions with timestamps
/api/scenes Create a new scene — returns id and editToken
/api/scenes/{id} Update a scene (requires X-Edit-Token header)
import requests
SCENE_ID = "abc123xyz" # from the share URL
scene = requests.get(
f"https://api.regionkit.app/api/scenes/{SCENE_ID}"
).json()
for ann in scene["annotations"]:
if not ann["visibility"]:
continue
label = ann.get("label", "unlabelled")
kind = ann["type"] # "polygon", "rectangle", "circle" …
data = ann["data"]
if kind == "polygon":
pts = data["points"] # flat list [x0,y0, x1,y1, …]
coords = list(zip(pts[::2], pts[1::2]))
print(f"[{label}] polygon {len(coords)} vertices")
elif kind == "rectangle":
print(f"[{label}] rect x={data['x']} y={data['y']} "
f"{data['width']}×{data['height']}px")
elif kind == "circle":
print(f"[{label}] circle cx={data['x']} cy={data['y']} "
f"r={data['radius']}px")
The response body is a NativeExport object with
annotations[],
layers[], and
controlPoints[].
Each annotation carries a type
("polygon",
"rectangle",
"circle", …),
a data object with shape geometry in image pixels,
and label /
tags for downstream classification.
You can also export directly to COCO JSON or YOLO TXT from the editor for pipeline formats that expect those.
Common questions about defining regions of interest with RegionKit.