PlanetHex

A world, a system, a subsector, a sector.
Start where you meant to.

A Traveller generator that works at four levels and keeps them in step. Everything comes from a seed, so a world found on a subsector is the same world opened on its own — the surface is rebuilt rather than stored, and what you write over it is all that is kept.

PlanetHex

PlanetHex

PlanetHex

PlanetHex

Planet

Profile
Display
World
Narrative

Points of interest

    Local detail

    Point of interest

    Kind

    Save

    Map images

    The flat map as a picture, 2048 pixels wide, one per level.

    Other formats

    The world for something other than PlanetHex to read.

    PlanetHex

    PlanetHex generates a planet from a seed and shows it two ways at once: as a flat hex map on the unfolded icosahedral net, and as a globe. Both read the same surface, so a coastline on one is the coastline on the other.

    Nothing about the surface is stored. A planet is its seed, its profile, and whatever you have written on it, and the ground is rebuilt from those every time it is opened.

    The panels

    Left
    Everything you can change, and nothing else. Four sections that fold away: Profile for sector, hex, UWP and seed, Display for the detail level and the view, World for the figures the profile rolled, and Narrative. Click a heading to open or close it.
    Middle
    The flat map, with the worked-out figures for the world beneath it.
    Right, top
    The globe, drawn at the size and the axial tilt the profile gives it, and always at the finest detail whatever the slider says. It is the one panel that draws the weather: cloud where the world has water to lift and air to lift it into, heavy over the equator and along the storm track of the fifties, thin over the dry belts that make the deserts. It does not move — it is one afternoon, fixed by the seed, and Clouds in the Display section clears it when you want the coastline instead.
    Right, bottom
    Local detail: the hex you are pointing at and the ground around it, drawn far finer than the map can resolve. This is not a magnified copy of the map — it reads the surface several levels deeper.

    Making a world

    New starts a fresh planet with a new seed, a rolled profile, a starport placed on coastal land near its equator, and a city for each further point of the population digit.

    The seed says which world this is. The same seed always gives the same ground. The UWP says what kind of world it is: Roll takes a new one from Traveller's world creation rules, or type over any digit. Gravity sets how tall the ground stands, air and water weather it, hydrographics decides how much of it is underwater, and axial tilt and pressure size the ice caps.

    Detail chooses how finely the map draws the world: 362, 1442, 5762, 23042, or 92162 hexes. It does not change the world. A coarser setting draws fewer hexes of the same planet, so the slider is safe to move and safe to move back. The globe ignores it and draws at a level of its own, since a hex of the coarse settings covers a swathe of a sphere you are seeing all of at once.

    Clouds draws the globe under its weather, and clearing it gives the bare world back. It is the globe's alone: the map and the local panel are read through, and a sky over them would be in the way.

    Smooth beside the slider draws the ground without the seams between its hexes. At the fine levels a seam is thinner than a pixel and the map turns to haze; switch it on and the colours meet, switch it off and the hexes come back. The selection and the point of interest rings are drawn either way.

    View chooses how all three panels colour the world, and it is only paint: the coastline, the ice and the heights are the same either way.

    Orbital
    What the world would look like coming in. Green where things grow, brown where the ground is bare but weathered, grey where it is bare rock, white where the water is frozen. It reads temperature rather than height, so a world is jungle at its equator and tundra near its poles, with dry belts in the subtropics where the rain has already fallen. Axial tilt sets how far apart those temperatures are: lean the axis past 54° and the poles take more sun over a year than the equator does, and the world comes out iced at the waist and green at the ends. This is what a new world opens in.
    Survey
    Height as colour: blue sea, ground, grey and white peaks. A map, and what to use when what you want to know is how high the ground is.

    The World figures — tilt, day, orbit, temperature — arrive rolled and are yours to overrule. One you have typed over is outlined in gold, and reset beside the heading hands them all back to the roll.

    The pointer

    Map
    Click a hex to select it. Drag to pan, wheel to zoom. Whatever you point at is what the local panel draws.
    Globe
    Drag to turn it, wheel to zoom, click a hex to select it. It picks its own spin back up once you have been still for a moment.
    Local detail
    Click one of the fine hexes to put a point of interest on it, or to open the one already there. contours and 3d beside the heading change how the ground is drawn, as described below.

    Contours

    contours over the local panel draws lines through the ground at a fixed height apart, the way a walking map does: close together is steep, far apart is gentle, and a closed ring is a summit or a hollow. One line always lies on the coast, since the lines are counted from sea level, and the rest are drawn at whatever round interval suits the ground in view. The figure is given under the scale bar, in the same heights the readout shows. Lines under water are drawn pale and lines above it dark, so that neither is lost in the colour behind it.

    Each line runs between the hexes it separates rather than across them, so the ground either side of it is entirely above or entirely below that height. The seams between hexes step aside while the lines are on, which leaves the contours as the only lines on the patch; switch them off and the hexes come back.

    Relief

    3d shows the same ground lit and standing up, seen from thirty degrees above: a block of land with the sun low over your left shoulder, the sea filled in at its own level, and cut earth down the sides. The surface runs smoothly through the same heights the hexes are coloured from, because a hillside is not made of hexagons. The flat view is the hex map; this is the country it stands for.

    Height is exaggerated by a fixed amount rather than stretched to fill the panel, so gentle ground is drawn as gentle ground and two patches of one world can be read against each other. Distance across the panel is still true, which is why the scale bar stands in this view; distance up it is foreshortened.

    Contours belong to the flat view, and their switch greys out while 3d is on: what a contour says about a slope, a lit hillside shows. The outline round the selected map hex goes too, since it is there to tie the patch to the map and this view is not a map. Points of interest are still marked and named, but they cannot be placed here — a click cannot be put back onto ground that may be hidden behind nearer ground. Switch 3d off to place one.

    Points of interest

    A starport is a place on the world, a city is a place the profile does not name, and a comment is a note about one. Each has a name and as much prose as you care to write, and each is marked on the map and the globe in its own colour: red, teal and grey. They are placed in the local panel, because the map's hexes are hundreds of miles across and far too large to say where anything is.

    A new world arrives with its cities on it — one per point of the population digit, the starport counting as the first of them. They are put where the ground is worth living on: where things grow, on a coast where there is one, off the mountains and the ice, and spread out rather than heaped in one bay. A world with no land to speak of puts them on the water. Each carries its share of the world's people in its notes, the largest first. A world names its places in one voice: the flavour — polyglot, anglic, Vilani, named for a founder, or just numbered — is drawn once per planet, so its cities sound like each other. Those shares are not meant to add up to the population on the summary panel: plenty of people live outside a city, and on a world with a good starport plenty live in orbit.

    Cities are ordinary points of interest once placed. Move them, rename them, write them up, delete them.

    Editing a digit that bears on where people live — starport, size, atmosphere, hydrographics or population — places them all again on the ground the new profile makes. Government, law level and tech level say nothing about it and leave the map alone, and so does half a UWP typed on the way to a whole one. Anything you have renamed or written on comes back with it.

    One to a point. Clicking an empty point offers Move Here, which brings an existing one over with its name and its notes intact. The left panel lists what is on the world — starports first, then cities from the largest down, then comments. Choosing one goes to it: the panels all move to its hex and the local view draws the ground around it. Click it there to open it.

    The readout over the local panel gives every hex two answers about its ground, because they are two questions. Terrain is how high it is — lowland, upland, mountain, peak. Ground is what it is made of — rainforest, steppe, cold desert, bare rock, sea ice. Two hexes at the same height, one at the equator and one at sixty degrees, are the same terrain and quite different ground. Both travel in the hex table and the GeoJSON a save writes.

    The local panel draws a settlement as its limits: two teal lines, the edge of the town and the line inside it where the building closes up, cut the same way the contours are and drawn in the 3d view too, lying on the ground and following it. The terrain underneath is left alone, and on a world of billions the lines say where the city ends where a colour could only say that it did not. Only there: a hex of the map is sixty thousand square kilometres, and the largest city on Earth would be an eighth of one, so the map would be claiming a great deal more concrete than there is.

    Hex names

    A hex is named F07R33C08 — face, row, and column, counted on the finest lattice, so the name is the same whatever the Detail slider is set to. A point finer than the map draws carries the depth after a slash. Write one down and it will still mean the same ground tomorrow.

    Saving

    A save is a folder holding one planet. Save asks first what to put in it: the planet's own JSON always, the flat map as a picture at any of the five detail levels, and any of the other formats below. The first Save also asks where the planet goes, and later ones do not ask again. Load opens the JSON. Nothing is sent anywhere — no server is involved and no planet leaves this machine.

    What you tick is remembered, so the save you want is the save you get next time without setting it up again. The dialogue says how many files it is about to write, since the finest levels take a few seconds each.

    Exporting

    The other formats are there so the world can be read by something that is not PlanetHex. They all describe the world at the detail level the Detail slider is on, since that is the map in front of you.

    Vector map
    The hex map as an SVG: lines rather than pixels, so it prints at any size and can be taken apart in Inkscape, Illustrator, or Affinity.
    Equirectangular plate
    The world drawn again with longitude across and latitude down, which is the one layout every mapping program, globe renderer, and terrain tool understands. It is drawn pixel by pixel off the surface rather than hex by hex, so it shows the coastline the world actually has. A grey heightmap comes with it for the tools that want to build the ground themselves.
    Virtual tabletop scene
    The map as a large picture with the grid figures a Foundry or Roll20 scene asks for written beside it. The hex grid lines up within a face of the net and not across the seams between faces, which is what unfolding an icosahedron costs.
    Hex polygons
    Every hex as a shape in latitude and longitude, with its height, terrain, and whatever sits on it. GeoJSON, so QGIS, Leaflet, and anything else that reads it opens the world as a map rather than as a picture of one. Points of interest come as their own points.
    Hex table
    The same again as a CSV: one row per hex, for a spreadsheet or for a few lines of your own script.
    Traveller sector line
    The world as one line of a sector file, tab separated, with the trade codes worked out from the profile. Paste it into a sector file among its neighbours and the world appears on the map. Bases, travel zone, and stars are left blank, because PlanetHex describes the world and not the system; the population multiplier, belts, and gas giants are rolled from the seed.
    World sheet
    One page about the world in Markdown and in HTML: the profile spelled out position by position, the worked figures, your narrative, and every point of interest by name and by hex. The HTML carries its own styling and prints.

    Where anything but the planet is exported, a small -export.json goes in with it holding what a picture cannot say for itself: which world it is, how many kilometres a hex is, and which shade of grey the heightmap puts sea level at.

    unsaved appears at the top of the left panel when the open planet has changes that are not written down, and anything that would discard them asks first.

    Saving and loading need a Chromium browser — Chrome or Edge — or the desktop build, which carries one. Firefox and Safari can draw a world but cannot write one.

    Licence

    MIT License
    
    Copyright (c) 2026 Steve Burrows
    
    Permission is hereby granted, free of charge, to any person obtaining a copy
    of this software and associated documentation files (the "Software"), to deal
    in the Software without restriction, including without limitation the rights
    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    copies of the Software, and to permit persons to whom the Software is
    furnished to do so, subject to the following conditions:
    
    The above copyright notice and this permission notice shall be included in all
    copies or substantial portions of the Software.
    
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    SOFTWARE.

    The application icon is the hexagons glyph from Tabler Icons by Pawel Kuna, used under the MIT licence. Its notice ships with the desktop build as LICENSE-tabler-icons.txt beside the executable.

    PlanetHex generates worlds by the procedure in the Traveller SRD: the Universal World Profile, the order the digits are rolled in, the modifiers each takes from the ones before it, and the trade classifications read off the result. That procedure is expressed here as code rather than copied as text. No text, table, artwork, form, or map from any Traveller publication is reproduced, and no setting material ships with the application.

    PlanetHex is an unofficial, non-commercial fan work, not affiliated with or endorsed by Mongoose Publishing or any other Traveller publisher.

    Fair use

    Made under Mongoose Publishing's Fair Use Policy, which asks for this notice:

    The Traveller, 2300AD, Twilight: 2000 and Dark Conspiracy games in all forms are owned by Mongoose Publishing. Copyright 1977 - 2025 Mongoose Publishing. Traveller is a registered trademark of Mongoose Publishing. Mongoose Publishing permits web sites and fanzines for this game, provided it contains this notice, that Mongoose Publishing is notified, and subject to a withdrawal of permission on 90 days notice. The contents of this site are for personal, non-commercial use only. Any use of Mongoose Publishing's copyrighted material or trademarks anywhere on this web site and its files should not be viewed as a challenge to those copyrights or trademarks. In addition, any program/articles/file on this site cannot be republished or distributed without the consent of the author who contributed it.

    Release notes Suggestions