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.
Two ways to build with the globe. 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.
Look
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