Beautiful, custom-styled map posters from OpenStreetMap, generated entirely in your browser. No backend, no API keys, no signups.
Live demo: https://baditaflorin.github.io/osm-poster/
- 11 hand-designed style presets (Blueprint, Vintage, Parchment, Tron, …)
- 12 toggleable OSM data layers (water, rivers, parks, greenery, buildings, industrial, railways, paths, airports, place names, streets, POIs)
- 9-swatch palette with live color picking, layer-aware halo logic
- Map rotation + 3D pitch (auto-extrudes buildings when tilted)
- Center marker (pin / heart / star / dot) — anchored geographically
- GPX route overlay (drag a .gpx file onto the map)
- Compass rose, scale bar, paper grain / halftone overlays
- 4 frame border styles, 6 aspect ratios (Portrait / Square / Landscape / Story / A4 / Banner)
- Commemorative mode for weddings, anniversaries, new homes
- Seedable randomize for reproducible palettes
- Export: PNG, SVG, or print-ready PDF in screen / A2 / A3 / A4 / 4K sizes
- Shareable URL (state encoded in hash) + localStorage autosave
- Undo / redo history (⌘Z / ⌘⇧Z)
- Keyboard shortcuts (
Rrandomize,Eexport,[]cycle presets,Mtoggle marker,?help,Ffullscreen)
We author the MapLibre style JSON ourselves — every layer, color, road
weight, and label is generated in the browser from your state. The map
data (water polygons, road lines, building footprints, POIs) comes from
OpenFreeMap's free vector tiles; everything visual is ours.
See docs/ADRS.md for the architectural decisions behind each feature.
- MapLibre GL JS — vector rendering, 3D, sources
- OpenFreeMap — free vector tiles, no API key
- Nominatim — geocoding
- html-to-image — PNG/SVG export
- jsPDF — lazy-loaded for PDF export
Single static HTML file. Serve with anything:
python3 -m http.server 8000This project is MIT-licensed — see LICENSE. Use it, fork it, embed it, sell posters with it, ship a derivative, no permission needed beyond keeping the copyright notice. It is OSI-approved open source in the strictest sense: no copyleft, no field-of-use restriction, no patent gotcha.
The license covers this codebase. The map data shown by the app is © OpenStreetMap contributors under the ODbL, and the vector tiles are served by OpenFreeMap under their own terms — those licenses apply to the rendered content, not to this app's source.
Map data © OpenStreetMap contributors. Vector tiles by OpenFreeMap.