Launch Simulator
Working with flight data
Two different datasets come off the launch pages, and both are free to download with no account. The simulated flight is a second-by-second reconstruction of an ascent, exported from Data Mode as a telemetry table, a full data file or a ground track. The launch record is the real published data about a launch: the vehicle, its price and capacity, the individual booster's flight history, and where the launch sits in the running totals. This page shows how to open both in common software and what you can do with them, including for classroom and research projects.
The simulated flight
A reconstruction, not measured vehicle telemetry. Exported from Data Mode on the launch tracker or the simulator.
What each file contains
The flight, second by second
One row per second from liftoff to orbit: time, altitude, speed, vertical speed, flight-path angle, tangential acceleration (m/s² and g), dynamic pressure (Pa and kPa), downrange distance, and latitude/longitude. A few lines at the top starting with # note the vehicle, pad and the models used.
When a weather forecast exists for the launch (roughly, within 16 days of lift-off) there are two extra columns, dynamic_pressure_measured_pa and dynamic_pressure_measured_kpa. See below for what makes them different.
Everything, for code
The same per-second samples plus all the metadata: vehicle, pad, target orbit, launch azimuth, the flight events, the Max-Q figure, the derived insertion orbit, and the exact models used. Ideal for reading into a program.
The path over Earth
The launch's ground track as longitude, latitude and altitude, plus a marker at the pad. Opens as a 3D line draped over the planet in Google Earth.
Two dynamic pressures, and why they differ
Dynamic pressure, q, is the aerodynamic load on a vehicle: q = ½ρv², where ρ is air density and v is speed. Its peak, Max-Q, is the most structurally demanding moment of an ascent. The export gives it two ways.
dynamic_pressure_pa uses a textbook atmosphere: density falling exponentially from 1.225 kg/m³ at sea level with an 8.5 km scale height, and the vehicle's ground speed standing in for its airspeed. It is available for every flight and is what most back-of-envelope calculations use.
dynamic_pressure_measured_pa uses the atmosphere actually forecast over that pad at that hour, and it corrects both halves of the formula:
- ρ comes from the real sounding. Density at each pressure level is computed from the ideal gas law using that level's own pressure and forecast temperature, then interpolated in log space between levels because density falls close to exponentially with height. On a real day this runs several percent away from the textbook value, and the gap is often widest at 9 to 13 km, which is exactly where Max-Q happens.
- v becomes airspeed, not ground speed. Dynamic pressure is defined against the air, so the wind at each altitude is subtracted from the vehicle's velocity as a vector. A headwind raises q and a tailwind lowers it, and neither shows up at all if you use ground speed. This is usually the larger of the two corrections: jet-stream winds of 40 to 50 m/s at 11 km are ordinary, against a vehicle doing 400 to 600 m/s there.
Across a sample of real launches the two figures differed by roughly -6% to +15%, in both directions depending on which way the vehicle was flying relative to the wind. Neither column is more "correct" in the abstract: the model column is reproducible and vehicle-independent, and the measured column is specific to the conditions on the day. Having both in the same file is the point.
Three things to know before using the measured column. Flight altitude is treated as height above the pad and offset by the pad's own elevation before the profile is read, which matters at a site like Jiuquan that sits about a kilometre up. The column is left blank above the top of the forecast profile (around 24 km) rather than extrapolated, so it stops where the data stops. And the ascent it is applied to is still a reconstruction, not measured vehicle telemetry, so it is a better answer to "what would this flight have felt" rather than a record of what it did feel.
The launch record
This one is not simulated. It is what the launch databases actually publish about a real launch, passed through unchanged apart from four figures we compute and label. Download it from the Launch record panel on the launch tracker after opening a launch.
One launch, one row
Sixty-four columns covering the vehicle, its price and capacity, the flight record of both the rocket and its operator, the individual booster's serial number and reuse history, the landing, the pad, and the mission. Lines at the top starting with # explain the source and every derived column.
The full nested record
The same launch with nothing flattened: the booster array intact (a Falcon Heavy has three), the operator's published countdown milestones, the press-kit links, and the revision history of who changed the launch entry and why.
Every listed launch
The same columns for every launch currently on the tracker, one row each, upcoming or recent depending on which list you are viewing. This is the one to start from for a comparison across vehicles or operators.
Reading the columns
Two things are worth knowing before you compute anything with these.
An empty cell means the source has no value. Coverage is uneven and varies a lot by operator: across a typical feed, vehicle height and diameter are present on about 95% of launches, mass and thrust on about 90%, published price on about 70%, and booster serial numbers on about 40% (essentially all the ones that land and fly again). Nothing is interpolated, averaged from a similar vehicle, or defaulted to zero to fill a gap, so an empty cell is a real absence and should be treated as one rather than as a zero.
Four columns are computed by ISSC, not published by anyone. They are listed in the # header of every file:
cost_per_kg_leo_usd_kgislaunch_cost_usd / capacity_leo_kg. This is a best case: it assumes a completely full rocket, which almost no real mission is, and the price is a published list price rather than what any particular customer paid.vehicle_liftoff_twrisvehicle_thrust_kn * 1000 / (vehicle_launch_mass_t * 1000 * 9.80665), the thrust-to-weight ratio at the moment of lift-off. It has to be above 1 or the rocket does not leave the pad.vehicle_success_rateandagency_success_rateare successes divided by total attempts. Watch the denominator: a new vehicle at 3 for 3 is not more reliable than one at 400 for 410.
Any of these four is left empty rather than published when the inputs produce a physically impossible answer, which does happen: bad rows exist upstream, and a plausible-looking wrong number is worse than a missing one.
Opening the data in different software
Pick the tool you already use. Nothing here needs an ISSC account or any paid software.
Spreadsheets CSV
Works in Excel, Google Sheets, LibreOffice Calc and Apple Numbers.
- Download the Telemetry CSV from the flight's data view.
- Open it: double-click the file, or in your spreadsheet use File > Open (or File > Import in Google Sheets).
- The lines at the top that start with
#are notes about the flight (vehicle, pad, Max-Q, the models used). The data table itself starts at thetime_sheader row. - Select two columns (for example
time_sandaltitude_km) and insert a chart to plot the ascent.
Python CSV + JSON
The CSV loads cleanly in pandas (the comment="#" option skips the note lines):
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("falcon-9-ascent-telemetry.csv", comment="#")
plt.plot(df["time_s"], df["altitude_km"])
plt.xlabel("Time (s)"); plt.ylabel("Altitude (km)")
plt.show()
# Max dynamic pressure (Max-Q) and when it happens
row = df.loc[df["dynamic_pressure_kpa"].idxmax()]
print("Max-Q:", round(row["dynamic_pressure_kpa"], 1), "kPa at T+", int(row["time_s"]), "s")
The JSON carries the metadata and the same samples:
import json
data = json.load(open("falcon-9-flight-science.json"))
print(data["vehicle"]["name"], "->", data["orbitSummary"]["periodMin"], "min orbit")
print("Provenance:", data["provenance"]["source"])
Google Earth KML
- Download the Ground track (KML) file.
- Open Google Earth on the web (or Google Earth Pro on desktop).
- Choose File > Import (web: the menu > Import KML file) and select the file.
- The ascent track appears as a line arcing away from the launch pad. You can also import the same file into Google Maps My Maps, or into GIS tools like the free QGIS.
No code, no install CSV
Paste columns straight into a graphing calculator like Desmos, or use your spreadsheet's built-in charts. You do not need to program anything to see the shape of a climb to orbit.
Straight from the API
If you would rather not click a button, the same data is available as JSON over plain HTTP. No key, no account, no rate limit beyond ordinary politeness. Everything is same-origin on issc.space and CORS is not needed for server-side use.
The launch schedule JSON
https://issc.space/api/launches
https://issc.space/api/launches?window=previous
The full upcoming or recently-completed manifest with the whole record for each launch: vehicle, booster, counters, the operator's published countdown, press-kit links and revision history. Rocket and operator records are hoisted into vehicles and agencies dictionaries keyed by id, because they repeat across a manifest where one operator flies several times a week; each launch carries a vehicleId and agencyId pointing into them.
Weather over the pad JSON
https://issc.space/api/launch-weather?id=<launch id>
The forecast at the launch site for the hour nearest lift-off, and hourly for six hours either side: wind and gusts, cloud, visibility, chance of precipitation, and CAPE, the measure of how much energy the atmosphere has available to build thunderstorms. It also carries winds aloft at roughly 1.5, 5.5 and 10 km. That last one matters more than it looks: 10 km is about where a rocket meets maximum dynamic pressure, so it is the wind the vehicle flies through at its most structurally stressed moment. Data from Open-Meteo. Forecasts only exist within about 16 days of lift-off; outside that the route says so rather than returning nothing.
The orbit a launch actually reached JSON
https://issc.space/api/launch-orbit?id=<launch id>
Every other figure on the site describes what a launch intended to do. This one describes what it did: perigee, apogee, inclination and period, computed from the public satellite catalogue published by CelesTrak, for launches between one and thirty days old.
The catalogue has no launch-database id to join on, so the match is inferred and the route is honest about how. Objects from one launch share an international designator prefix, and each object's own revolution count and mean motion say roughly how long ago it was inserted, which gives an estimated launch time derived from its motion rather than from any label. Candidates are then filtered by whether the orbital plane is even reachable from that pad and whether the shape is the kind of orbit the mission was going to, and the assignment is solved across the whole recent manifest so one designator can only ever belong to one launch. Every response carries matchOffsetHours, confidence and contested so you can weigh the match yourself. When nothing fits, the route says nothing fits rather than returning the closest thing.
What you can do with it
A real-ish flight is a rich dataset. A few things it is good for:
Plot the ascent
Chart altitude and speed against time and see how a rocket actually trades vertical climb for the sideways speed that orbit needs.
Find Max-Q
The peak of the dynamic-pressure curve is the moment of greatest aerodynamic stress. Locate it, and see why it happens where speed is rising but the air is thinning.
Weigh the wind
Plot the modelled and measured dynamic pressure against each other and see how much of the difference is real air density and how much is the wind the vehicle is flying into.
Watch the gravity turn
The flight-path angle tips from straight up toward the horizon. Plot it to see the pitch program that gets a vehicle to orbit efficiently.
Check the physics
Differentiate speed to get acceleration, or use the insertion altitude and speed with the vis-viva equation to confirm the orbital period yourself.
Map the ground track
Drape the track over Earth and see why launch azimuth and the planet's own eastward spin decide which way a rocket heads.
Compare vehicles
Export a Falcon 9 and a Starship, overlay their curves, and compare how different vehicles climb.
Classroom and projects
A ready-made dataset for a physics lesson, a data-science exercise, or a school project. Free to use and share.
Measure reuse
Every booster's serial number, flight number and turnaround gap is in the schedule export. Plot turnaround against flight number and you can see, from public data, whether reuse is actually getting faster.
Compare cost to orbit
Price per kilogram to low Earth orbit, for every vehicle on the manifest that publishes both figures. It is a best case, and the file says so, but it is the number the whole industry argues about.
Check plan against outcome
Pull a launch's intended orbit from the schedule and its achieved orbit from the catalogue, and see how close a real ascent lands to its target.
Study scrub weather
Pull the pad forecast for launches that flew and launches that were scrubbed, and look for what separates them. Wind aloft and storm energy are where to start.
Learn a data tool
Practise pandas, a spreadsheet, or Google Earth on something more interesting than made-up numbers.
Honest note on the data: this is a faithful reconstruction synced to the real countdown, not a live feed from the vehicle (no free public source of real-time rocket telemetry exists). Falcon 9 flights use per-second telemetry archived from real webcasts; other vehicle families are reconstructed from published figures and are approximate. Dynamic pressure is computed from an exponential-atmosphere model, and the orbit summary from the vis-viva equation using typical insertion values. Every export states its own provenance in the file. Launch data is from The Space Devs' Launch Library 2.