TopoSaic is a free desktop app that turns real terrain into printable puzzles. Pick a place, shape the model beside a live 3D preview — relief, colors, roads, railways, lifts, trails, water, airports, buildings — and export watertight jigsaw pieces as STL and color 3MF. Everything runs on your machine.
TopoSaic v0.8.0 · Windows, macOS & Linux
Local-first, from map to model. TopoSaic downloads public map tiles, builds the model on your machine, and saves files where you choose. No account, no upload — nothing leaves your computer.
In the app
Pick a place, then work against a live 3D view — relief, water, land cover, mapped roads and paths, piece count, and how it splits for your build plate. When the job finishes, the preview is replaced by the generated terrain and the print-ready files.
Slicer examples
These Bambu Studio captures show color 3MF files from completed TopoSaic jobs: three 4×4 puzzles with all 16 pieces separated, plus two views of a solid urban model around Shibuya Station. Every model uses real elevation, land-cover, and OpenStreetMap data.
What it makes
Every model is watertight and drawn from public elevation, land-cover, and OpenStreetMap data — cached locally so repeat tweaks reuse the same download.
Round jigsaw tabs and sockets with narrow-necked knobs, like a standard jigsaw. Layouts run from 2×2 to 16×16 — the default 10×10 makes 100 pieces.
Worldwide Mapzen elevation, plus sharper Mapterhorn regional tiles with a finest-detail mode that targets 0.25 m samples for areas up to 2 km wide. Every download caches on your machine.
A preview appears in seconds — drag to orbit, scroll or pinch to zoom. It shows terrain height at true print scale, oriented to match the map, and swaps in the full-detail mesh when the job finishes.
10 m ESA WorldCover satellite data paints the model: tree cover, bare ground, snow, and water become editable forest, rock, snow, and water colors in the exported 3MF. Or let the ground pick its own palette, clustered from Sentinel-2 imagery of that exact place.
Choose road detail, draw railways, aerial lifts, and ferries as separate layers, or import GPX and KML trails. Rivers, streams, and canals sit flush with the terrain; bridges span ravines instead of dropping into them. A coastal map can print its sea as one level plane, at mean sea level or the nearest station's tide.
Runways, airstrips, stopways, taxiways, taxilanes, aprons, and helipads, graded along the centre line the way real pavement is built rather than draped over every bump in the elevation data. Off unless you ask for it.
Raises OpenStreetMap footprints by tagged height, then floor count, then an 8 m default — with their own editable roof-and-wall material and straight mapped edges.
Exports binary STL and standards-based 3MF with per-triangle colors. Roads rise by one configurable print layer; STL stays single-color but keeps the raised geometry.
Save named setups, move them between machines as JSON, and inspect or clear each map cache. Jobs and downloads stay local; failed map requests never become valid cache entries.
Surface controls
Roads, railways, aerial lifts, imported trails, and water have their own controls. Fold rail and lift colors into another layer when filament slots matter, or keep each one distinct.
Wall mounting
Cut a blind mount into the full terrain tile or display base, then export the matching wall-side part. TopoSaic checks the backing depth and keeps the mount below the visible face.
Choose straight pin sockets, angled slide-lock pin sockets, or the recommended French-cleat receiver. A full-width cleat spreads the load across the tile or base.
Each job can include a matching peg or cleat on a screw plate as STL and 3MF. The receiver and wall hardware share the same size and fit settings.
Set engagement depth, wall offset, fit clearance, screw-hole size, countersink depth, and screw-head clearance. Wide mounts can add one screw near each end.
French-cleat jobs include a thin spacer with matching screw pilots. Place the frames edge to edge to align split bases, terrain tiles, or a full super-tile wall.
Super-tile mode
Export a grid of up to 12×12 print passes as one continuous terrain set. The map draws the full grid before export, anchored at the top-left or center tile. Every tile shares the same elevation datum and vertical scale, so the same real elevation prints at the same height on every tile.
North, south, east, and west buttons step the selection one full tile; the auto grid exports every tile in one pass. Straight tile bounds keep the whole set aligned.
Optional external tabs and sockets join shared edges between terrain tiles — the full set still keeps a flat outside border.
The tray follows the grid: one outer frame, split into matching printable parts with open joined edges — or give each tile its own complete framed tray.
Three ways to export
Watertight jigsaw pieces from 2×2 to 16×16. Round knobs with narrow necks assemble into the full relief map.
The same mapped relief as one watertight STL and 3MF, with a straight outer edge and no puzzle seams.
A flat well of smooth, equal-height contour inlays, with the place name and coordinates raised on the front lip. Exports its own watertight STL and color 3MF.
Printing in color? The color printing guide covers setting the palette, choosing which filament each layer prints from, picking a layer height that suits terrain, and importing cleanly into Bambu Studio or OrcaSlicer. The other guides cover which mapped layers to draw, and how to save setups and finished files.
Get TopoSaic
Install the app, pick a place, and print a puzzle. The whole engine runs on your machine with no account. Grab the latest from TopoSaic Releases.
.exe setup · .msi installer
Uses the Universal CRT that Windows 10 and 11 include — no Visual C++ Redistributable. GUI subsystem, so no console window ever opens; fetches Microsoft's WebView2 bootstrapper only if the system lacks WebView2.
.dmg disk image · .app.zip
Signed with a Developer ID certificate, Apple-notarized, with stapled tickets — opens without Gatekeeper warnings.
portable .AppImage
Make it executable before opening:
chmod +x TopoSaic-*-linux-x86_64.AppImage
./TopoSaic-*-linux-x86_64.AppImage
The desktop app keeps SQLite and generated jobs in its standard application-data directory, and opens a native Save As dialog for every file — it never drops files into Downloads without asking. On launch it checks for a newer release and shows a signed update notice; updates install in the app, and the check sends no project or location data.
For developers
Most people don't need this — download the desktop app instead. The steps below are for developers who want to run or modify TopoSaic. Requires Rust 1.96+ and Node.js 22.13+.
Start the Rust API, then the web UI in a second terminal:
# terminal 1 — Rust API on http://127.0.0.1:8787
$ cargo run -p toposaic-api
# terminal 2 — website on http://127.0.0.1:3100
$ npm install
$ npm run dev
The Tauri app starts the Rust engine in-process, so it needs no second terminal:
$ npm install
$ npm run tauri dev # develop
$ npm run tauri build # build installers
Set TOPOSAIC_DATA_DIR to move SQLite and generated jobs off the default data directory, and TOPOSAIC_CACHE_DIR to relocate the downloaded map cache.
More projects from theatr.us