explaingit

anonymousraid/osint-mapping-tool

18JavaScriptAudience · researcherComplexity · 2/5ActiveSetup · easy

TLDR

Local-first browser app for OSINT research. Build a node graph of identifiers, drop pins on a map, and save everything to a single .osint.json file.

Mindmap

mindmap
  root((OSINT-Mapping-Tool))
    Inputs
      Identifier entries
      Map pins
      Custom icons
    Outputs
      Node graph canvas
      Annotated map
      .osint.json file
    Use Cases
      Investigate a person
      Trace event locations
      Teach OSINT in class
    Tech Stack
      React
      Vite
      xyflow
      Leaflet
      Google Maps

Things people build with this

USE CASE 1

Map social accounts, phone numbers, and locations for an OSINT investigation in one canvas

USE CASE 2

Drop pins for places relevant to a case and link them to social handles

USE CASE 3

Save research as a portable .osint.json file you can share or version control

USE CASE 4

Teach OSINT methods with a local-first tool that does not upload data anywhere

Tech stack

ReactVitexyflowLeafletJavaScript

Getting it running

Difficulty · easy Time to first run · 5min

Needs Node 18+; Google Maps mode requires a free Google Cloud API key, OpenStreetMap needs none.

In plain English

OSINT Mapping Tool is a small web app for organizing open-source intelligence research, the kind of work where someone is gathering scraps of public information about a person, a place, or an event. The app runs in your browser and saves everything to a single file on your own computer, so nothing gets uploaded to a server. It has two main views. The Information tab is a node graph: each piece of information you write down (an Instagram handle, a phone number, a license plate, a family member) becomes a labeled bubble on a canvas, and you draw lines between bubbles to record how they relate. Dragging a connection line into empty space creates a new connected bubble automatically. The README lists twenty built-in identifier types across categories like Social, Contact, Personal, Vehicle, and Other, each with its own form fields, and brand icons for common platforms like Instagram, Facebook, X, TikTok, and Discord. You can also upload your own icons. The Map tab lets you click anywhere on a map to drop a pin. If the location matches a known place, the app fills in the name and address for you. You can pick between Google Maps, which needs you to set up a free API key from Google Cloud and gives richer place details, or OpenStreetMap, which needs no signup at all but with coarser results. Pins can be linked back to identifiers from the Information tab, so a coffee shop pin could carry a note like tagged here by @johndoe on March 14 with the matching account attached. The tech stack is React 18 with Vite, the node graph library xyflow, and either Google Maps or Leaflet for the map. Projects save out to a plain .osint.json file you can share or keep under version control, and the app also takes recent snapshots in the browser so you do not lose work if you close the tab without saving. To run it, you need Node 18 or newer, then clone, npm install, and npm run dev.

Copy-paste prompts

Prompt 1
Run OSINT-Mapping-Tool locally with npm and walk me through adding 5 identifiers and linking them
Prompt 2
Switch OSINT-Mapping-Tool from OpenStreetMap to Google Maps and explain how to get the API key
Prompt 3
Add a new identifier type to OSINT-Mapping-Tool for a Telegram handle with the right brand icon
Prompt 4
Write a script that reads a .osint.json file produced by OSINT-Mapping-Tool and exports a CSV of all linked pins
Open on GitHub → Explain another repo

Generated 2026-05-22 · Model: sonnet-4-6 · Verify against the repo before relying on details.