Equal to all,
fair to the Earth
This is the project for all people on the earth. The earth is round.
A 3D globe with no install, no account and no server. Share the GIS data you made with everyone on Earth.
Free to use in education, always. Ready to use as is in classrooms around the world.
Three ways to build with the globe — with code, with an AI agent, or with the MapLibre GL JS code you already have. Every step here is run by an automated test against the published npm packages.
Build with code
Vite and npm — the whole world first, then your own data on top.
- Create a project and add the globe
npm create vite@latest my-globe -- --template vanilla --no-interactive cd my-globe npm install npm install @ortho-earth/globe - Tell Vite about the globe's workers (vite.config.js)
export default { optimizeDeps: { exclude: ["@ortho-earth/globe", "@ortho-earth/core"] }, worker: { format: "es" }, }; - Replace index.html and src/main.js
index.html
src/main.js<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>My globe</title> <link rel="icon" href="data:,"> <style>html, body { margin: 0; height: 100%; } #map { height: 100vh; }</style> </head> <body> <div id="map"></div> <script type="module" src="/src/main.js"></script> </body> </html>import { createGlobe } from "@ortho-earth/globe"; const map = await createGlobe({ target: "#map", view: "#3/20/140" }); // "#zoom/lat/lon" - Run it and open the address it prints — the Earth appears with its night side, stars and country borders
npm run dev - Add your own data at the end of src/main.js (MapLibre-style layers)
map.addSource("cities", { type: "geojson", data: { type: "FeatureCollection", features: [ { type: "Feature", properties: { name: "Tokyo" }, geometry: { type: "Point", coordinates: [139.77, 35.68] } }, { type: "Feature", properties: { name: "Seoul" }, geometry: { type: "Point", coordinates: [126.98, 37.57] } }, ], }, }); await map.addLayer({ id: "cities", type: "circle", source: "cities", paint: { "circle-radius": 6, "circle-color": "#e4572e" } });
No bundler? Copy the prebuilt SDK into your site — it is in the full recipe.
Full recipe Docs npmBuild with an AI agent
Claude Code, Cursor, Codex … Give it the address of the recipe and say what you want.
- Open your AI coding agent in an empty folder
- Paste a request like this
Read https://www.ortho-earth.com/llms.txt and follow "Build with it". Make me a web page with a 3D globe that shows the 10 most populous cities of the world as red dots. When I click a dot, show the city's name and population. Start the view looking at Asia. - It installs, writes the code and checks it in the browser. Then run npm run dev and look.
Tested: an AI agent given only this request built and verified the page on its first run.
Bring your MapLibre code
MapLibre GL JS compatible. Change one import and your MapLibre code runs on the globe — the same API, styles and zoom levels.
import * as maplibregl from "@ortho-earth/globe/maplibre";
const map = new maplibregl.Map({
container: "map",
style: "https://demotiles.maplibre.org/style.json",
center: [139.77, 35.68],
zoom: 4,
});
All 139 official MapLibre GL JS examples run on it with their code unchanged. Open any of them: its source, how closely it matches MapLibre, and a Run button.
139 MapLibre examples Full recipeLook
Open any demo — nothing to install. Drop your own GIS file onto the globe; it is read in your browser and never uploaded.
ortho-japan GeoPBFPublish your map
Put a GeoPBF file in your own GitHub repository and open it by its address. Your map stays yours; list it in Maps so others can find it.
https://www.ortho-earth.com/japan/?g=gh:you/repo/map.geopbf
Maps
Draw
- WebGPU, with WebGL2 as the fallback — drawing runs in workers
- One camera from the street to the Solar System, on a true WGS84 ellipsoid
- Terrain at real scale, never exaggerated; 3D cities, shadows of the sun
Read
- MapLibre GL JS API and style.json — the 139 official examples run unchanged
- Vector and raster tiles, PMTiles, COG, 3D Tiles, I3S, glTF, COPC point clouds, GeoParquet
- Old maps over IIIF by their control points; OGC API and ArcGIS feature services
Ask
- Click, hover and query rendered features; feature state
- Viewshed, line of sight and cross-sections
- Gint: shared-edge topology on the GPU for instant identify and choropleths
Time and place
- One shared clock: night side, stars, satellites and CZML/GPX tracks follow it
- No server: public data is read straight by the browser and kept in its cache
- Region packs add local knowledge — Japan's basemap, PLATEAU and census