nk-missile-tests: putting four decades of flight tests on a globe
An interactive visualization of flight tests of all missiles launched by North Korea from 1984 to 2026
At a glance
- What is it?
- nk-missile-tests is a browser based globe that plots every North Korean missile flight test recorded since April 1984, with a searchable timeline, outcome filters and live satellite positions from CelesTrak. The data comes from the CNS North Korea Missile Test Database, with landing points calculated rather than published.
- Who is it for?
- nk-missile-tests fits an analyst or journalist who wants to explore four decades of North Korean flight test records spatially and chronologically at once, since the globe and the timeline are the same view of the same dataset, and since the underlying database is a serious academic source rather than a scraped list.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 11 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 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A globe, a timeline and one dataset
nk-missile-tests is an interactive visualisation of flight tests of all missiles launched by North Korea from 1984 to 2026, and the real-time positions of North Korea's satellites are also visualised on the globe. That is the whole product, and the value of it is that the same records are reachable two ways. The spatial view shows where a launch happened and how far the vehicle travelled, and the temporal view shows the sequence of tests year by year, which is where the pattern in a programme becomes visible. The page lists the controls in a table, and the set of interactions is broader than a typical map. Dragging or swiping rotates the globe, the mouse wheel or a pinch zooms, and there are also on-screen zoom and tilt buttons for touch devices. Holding shift while dragging tilts the view up and down, and clicking a test label on the map selects that test.
Searching, filtering and the histogram
The rest of the controls are about narrowing the view. You can enter a date or a test name in the text field to search for a test, and dragging the timeline bar selects a year, with a graph icon that shows or hides a histogram. Then there are two sets of filters. The SUCCESS, FAILURE and UNKNOWN buttons filter tests out by outcome, and the missile check marks filter by missile name. Having an explicit UNKNOWN category is worth pausing on, because in a dataset like this an unrecorded outcome is as likely to be a gap in the record as a genuine unknown, and a visualisation that forces you to choose UNKNOWN as a visible category is more honest than one that quietly drops those rows. Selecting a test from the map or the timeline is what turns the globe from a picture into a tool, and the ABOUT button is where the database and the references are documented.
Where the data comes from, and what is missing from it
The data is sourced from the CNS North Korea Missile Test Database, which is described as the first database to record flight tests of all missiles launched by North Korea capable of delivering a payload of at least 500 kilograms, which is 1102.31 pounds, a distance of at least 300 kilometers, which is 186.4 miles. The database captures advancements in North Korea's missile programme by documenting all such tests since the first one occurred in April 1984, and the documentation says it will be routinely updated as events warrant. The database is created by the James Martin Center for Nonproliferation Studies for the Nuclear Threat Initiative. The threshold matters for reading the visualisation, because it is a capability floor and not a description of everything launched, so the globe is a picture of the tests above that floor rather than of the whole programme.
Landing points are calculated, and that is a caveat not a detail
The most important limitation in the project is stated in the same section that describes the sources. The CNS North Korea Missile Test Database does not include the exact landing locations, so the project has added bearing information from other sources such as the Japan Ministry of Defense, and landing locations are calculated based on the locations of launching facilities and distances travelled. So the points on the globe are not observations of where a vehicle came down, they are an inference from a launch site and a range, and a range is itself an estimate in most of these records. That does not make the visualisation wrong, it makes it a map of what is known and derived, and any user quoting a specific landing point from it should say that it is a calculated position. The same logic applies to the trajectories, which are drawn from the launch facility and the distance rather than from a tracked flight path.
Satellite positions, and the library that computes them
The satellite layer is a separate data source. The data of the satellite orbits is sourced from CelesTrak, a web-based service for satellite and space debris tracking, and the positions of North Korea's satellites are calculated with orb.js, made by Isana Kashiwai and licensed under the MIT licence, so the satellite layer is live rather than a snapshot while the missile test layer is historical. The two layers sit on the same globe, which is what makes the project visually striking, and it is also the part most likely to be misunderstood, since a drifting satellite marker next to a fixed test marker does not imply any relationship between them. The README is careful to describe the satellites as real-time positions, which is the honest description of what they are.
How it is built
The repository is a static site with no build system worth the name, and the top level of the tree says so directly. There is an `index.html`, a `js/` directory, a `css/` directory, a `data/` directory, an `images/` directory and a `LICENSE` file. The primary language of the repository is recorded as JavaScript, and the project is published on GitHub Pages at the address in the homepage field, with a live demo linked from the README. The project is largely inspired by the Arms Globe Visualization project by the Google Data Arts Team, and it uses the code from it, which explains both the interaction model and the visual language, since rotating a globe with tilt and zoom controls is a recognisable pattern from that project. The licence is Apache 2.0, which is the permissive choice and the right one for a visualisation that other people may want to fork.
Where this is the wrong choice
The limits are clear. First, this is a visualisation, not a dataset, and if you want the records themselves to analyse you should go to the CNS database directly, because the data directory in this repository is shaped for the globe rather than for analysis. Second, the calculated landing points mean that the map is good for patterns and weak for precision, and a reader who does not read the ABOUT section may treat every marker as a recorded landing. Third, the coverage is bounded by the 500 kilogram and 300 kilometre threshold in the source database, so a reader who assumes it is complete will be misled about short range launches. Fourth, the update cadence is not the project's to control, since the documentation says the database will be routinely updated as events warrant, and the visualisation has to be rebuilt when that happens, so a live demo can lag the most recent test. And fifth, the globe is a good interface for a few hundred events, which is roughly the scale here, and it is not the interface for comparing thousands, where the histogram and the filters start to do more work than the sphere can.
Editorial conclusion
nk-missile-tests fits an analyst or journalist who wants to explore four decades of North Korean flight test records spatially and chronologically at once, since the globe and the timeline are the same view of the same dataset, and since the underlying database is a serious academic source rather than a scraped list. It is the wrong tool if you need authoritative landing coordinates, because the database does not include them and the project calculates them, so treat the points as estimates, and the wrong tool if you want raw data, because what ships here is a visualisation with a data directory rather than a published dataset. Before you rely on a specific event, read the ABOUT section in the app for the database and the reference sources, and check how the launch year filter interacts with the outcome filters, since an UNKNOWN outcome is as likely to be a data gap as a real result. The last push was on 2026-10-12 and the licence is Apache-2.0.
Frequently asked questions
What does the nk-missile-tests visualisation show?
It shows flight tests of all missiles launched by North Korea from 1984 to 2026 on an interactive globe, with the real-time positions of North Korean satellites visualised on the same globe. A searchable list, a timeline, a histogram and filters by outcome and by missile name narrow the view.
Where does the missile test data in nk-missile-tests come from?
From the CNS North Korea Missile Test Database, created by the James Martin Center for Nonproliferation Studies for the Nuclear Threat Initiative. It records all tests since April 1984 of missiles capable of delivering at least 500 kilograms a distance of at least 300 kilometers, and is updated as events warrant. Satellite orbit data comes from CelesTrak.
Are the landing points in nk-missile-tests exact?
No. The CNS database does not include exact landing locations, so the project adds bearing information from sources such as the Japan Ministry of Defense and calculates landing locations from the launch facility locations and the distances travelled.
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/nagix-nk-missile-tests)Was this useful?