OSINT Mapping Tool: Node Graph and Click-to-Pin Map for OSINT Research
An OSINT Mapping tool for research.
At a glance
- What is it?
- OSINT Mapping Tool is a browser-based React application that provides a node graph for linking OSINT identifiers (social handles, phones, vehicles, and more) with a click-to-pin map supporting Google Maps or OpenStreetMap, saving all project data to a local .osint.json file with nothing leaving the browser.
- Who is it for?
- OSINT Mapping Tool suits individual researchers who want a local, offline-capable tool to organize identifiers and geographic data without sending anything to a third-party server. The GPL-3.0 license requires any derivative distributed publicly to carry the same license.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 89 days ago.
- What is it written in?
- Mainly JavaScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 1, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What OSINT Mapping Tool Provides and Who It Is For
OSINT Mapping Tool is a small web application built for OSINT (Open Source Intelligence) research. It gives investigators two coordinated workspaces: a node graph where identifiers are nodes that can be wired together, and a map where locations are pinned and linked back to those identifiers. All data stays in the browser or in local JSON files: nothing is uploaded to a server.
The target user is a solo OSINT researcher or a small team that needs to organize information about a person, entity, or incident. The node graph handles the relationship layer (this phone number belongs to this Instagram account, this vehicle is registered to this person) while the map handles the geographic layer (this account was tagged here, this vehicle was spotted at this location).
The stack is React 18, Vite, @xyflow/react for the node graph, and either Leaflet with OpenStreetMap tiles or the Google Maps JavaScript SDK for the map. Node 18 or later and npm are the only installation requirements for local development.
The Information Tab: Twenty Identifier Types and Freeform Wiring
The Information tab is a canvas-based node graph. Each node represents one piece of OSINT information. The README lists 20 built-in identifier types organized into five categories: Social (Instagram, Facebook, X/Twitter, YouTube, TikTok, LinkedIn, Snapchat, Discord, Telegram, Spotify), Contact (phone number, email address), Personal (name, date of birth), Vehicle (make, model, year, color, owner), and Other.
Each type has its own form fields and a branded icon. An Instagram node has fields for username, follower count, post count, and bio. A Vehicle node has fields for make, model, year, color, and owner. Custom icons can be uploaded for types not included in the built-in list.
Connections are made by dragging a handle from one node to another. Dragging to empty space opens a quick-add popup that spawns a new node already connected to the source, a behavior the README describes as Blender-style for users familiar with that workflow. Right-clicking the canvas opens the same popup without creating a wire. Nodes can carry notes in a free-text field alongside their typed attributes.
The Map Tab: Geocoded Pins and Location-to-Identifier Links
The Map tab is a click-to-pin interface. Clicking any location on the map drops a pin. When the geocoder recognizes the location as a known place (a coffee shop, a school, a park), the pin's name, address, and category icon are filled in automatically.
Pins can be linked back to identifier nodes from the Information tab. A coffee shop pin can carry a note such as "tagged here by the Instagram account in the Information tab on March 14" with that account node attached. This creates a bidirectional record: the identifier node knows about the location, and the location pin knows which identifier it is associated with.
Two map providers are available. Google Maps offers richer point-of-interest data and live place details (ratings, hours) but requires an API key from Google Cloud Console with three APIs enabled: Maps JavaScript API, Geocoding API, and Places API. OpenStreetMap uses Leaflet for tiles and Nominatim for search and reverse geocoding, requires no key, and works with no Google account at all. The README acknowledges that OpenStreetMap POI detection is coarser than Google's and that per-pin place details are not available, but notes that everything else (pin creation, linking, saving) works the same.
Installing and Running with npm or Docker
For local development with Node 18 or later:
git clone https://github.com/anonymousRAID/OSINT-Mapping-Tool
cd OSINT-Mapping-Tool
npm install
npm run devThe dev server starts at http://localhost:5173. To build a production bundle:
npm run build
npm run previewThe production preview serves the built files at port 4173.
For Docker Compose, copy .env.example to .env, fill in the Google Maps credentials if needed, and run:
docker compose up --buildThe container starts the development server at http://localhost:5173. The .env file is optional: if both Google Maps values are left blank, the container starts in OpenStreetMap mode. The README notes that changing .env after the container is created requires running docker compose up again (not docker compose start) to recreate the container with the new environment.
Saving Projects and the Auto-Recovery Snapshot
Projects are saved by clicking Save in the top-right corner. The download is a single file named after the project, with the extension .osint.json. The format is plain JSON with a schema version field, which the README states ensures old files continue loading after application upgrades.
While working, the application also takes periodic snapshots to localStorage. If the browser's back button is accidentally hit without saving, the project appears under "Continue recent" on the landing screen with an "unsaved" badge. Up to five recent projects are kept per browser. The README notes this behavior was added after the author lost work to the back button more than once.
The .osint.json file is gitignored in the repository, so dropping a project file into the repository folder will not accidentally end up in a commit. Projects can be version-controlled manually by placing them in a separate directory outside the repository, or shared by sending the JSON file directly.
The application has no user accounts, no cloud sync, and no collaboration features. Two people cannot edit the same project simultaneously. Each researcher maintains their own project file and merges findings manually.
Limitations, Legal Context, and License
OSINT Mapping Tool is a data organization tool, not a data collection tool. It does not query social media platforms, run searches, or scrape web pages. It takes information the researcher has already gathered and provides a structured way to link and visualize it. This matters for the legal question: using the tool itself is no different from organizing notes in a spreadsheet. Whether the underlying research is legal depends entirely on how the data was collected and what jurisdiction applies.
For teams that need collaborative OSINT mapping, tools like Maltego provide a shared workspace with automated data source integrations and a larger library of entity types. Maltego is a commercial product with per-seat licensing. OSINT Mapping Tool is free, fully local, and requires no account, at the cost of no integrations, no automated data enrichment, and no real-time collaboration.
The project is licensed under GPL-3.0. Distributing a modified version publicly requires releasing the modifications under the same license. Using the unmodified application locally is unrestricted.
Editorial conclusion
OSINT Mapping Tool suits individual researchers who want a local, offline-capable tool to organize identifiers and geographic data without sending anything to a third-party server. The GPL-3.0 license requires any derivative distributed publicly to carry the same license. Google Maps mode needs an API key from Google Cloud Console with Maps JavaScript API, Geocoding API, and Places API enabled; OpenStreetMap mode works with no key at all, which is the right default for a first run. The last push was on 2026-07-05 and the repository is not archived.
Frequently asked questions
Does OSINT Mapping Tool require a Google Maps API key?
No. OpenStreetMap mode works with no API key and no sign-up. Switch the map provider to OpenStreetMap from the settings gear icon in the Map tab. Google Maps mode requires a Google Cloud API key with Maps JavaScript API, Geocoding API, and Places API enabled, and offers richer POI data and live place details that OpenStreetMap does not provide.
What file format does OSINT Mapping Tool use for saving projects?
Projects save as .osint.json files, which are plain JSON with a schema version field. The README states that older files continue to load after upgrades. Projects are downloaded to the local machine when you click Save; nothing is sent to a server. The application also keeps a localStorage snapshot for recovery if the browser is accidentally navigated away.
How do I connect identifiers to map locations in OSINT Mapping Tool?
Drop a pin on the Map tab to create a location, then link it to one or more identifier nodes from the Information tab. A coffee shop pin, for example, can carry a note and a direct reference to a social media account node from the node graph, creating a record of the association between the location and the identifier.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/anonymousraid-osint-mapping-tool)