PageSourceSearch

https://versatiles.org/

html versatiles.org collected 2026-10-03 19:23:43 UTC 29,919 bytes, 560 lines download raw bytes

1<!DOCTYPE html><html lang="en"><head>
2		<meta charset="utf-8">
3		<title>VersaTiles</title>
4		<meta name="viewport" content="width=device-width, initial-scale=1.0">
5		<meta name="description" content="A completely FLOSS map stack">
6
7		<meta property="og:title" content="VersaTiles">
8		<meta property="og:description" content="A completely FLOSS map stack">
9		<meta property="og:image" content="https://versatiles.org/assets/social.png">
10		<meta property="og:image:width" content="1200">
11		<meta property="og:image:height" content="675">
12		<meta property="og:image:alt" content="VersaTiles — a complete FLOSS map stack">
13		<meta property="og:url" content="https://versatiles.org/">
14		<meta property="og:site_name" content="VersaTiles">
15		<meta property="og:type" content="website">
16		<link rel="canonical" href="https://versatiles.org/">
17		<link rel="me" href="https://mastodon.social/@VersaTiles">
18		
19		<meta name="twitter:title" content="VersaTiles">
20		<meta name="twitter:description" content="A completely FLOSS map stack">
21		<meta name="twitter:image" content="https://versatiles.org/assets/social.png">
22		<meta name="twitter:image:alt" content="VersaTiles — a complete FLOSS map stack">
23		<meta name="twitter:card" content="summary_large_image">
24
25		<link rel="shortcut icon" sizes="16x16 24x24 32x32 48x48 64x64" href="/assets/logo/favicon.ico">
26		<link rel="icon" type="image/png" href="/assets/logo/versatiles.32.png" sizes="32x32">
27		<link rel="icon" type="image/png" href="/assets/logo/versatiles.48.png" sizes="48x48">
28		<link rel="icon" type="image/png" href="/assets/logo/versatiles.64.png" sizes="64x64">
29		<link rel="icon" type="image/png" href="/assets/logo/versatiles.96.png" sizes="96x96">
30
31		<link rel="stylesheet" href="/assets/style.css">
32	</head>
33
34	<body data-color-mode="dark" data-light-theme="dark" data-dark-theme="dark">
35		<a href="#main-content" class="skip-link">Skip to main content</a>
36		<header>
37			<nav aria-label="Main navigation">
38				<a class="logo" href="https://versatiles.org" aria-label="VersaTiles home">
39					<img src="/assets/logo/versatiles.svg" alt="VersaTiles">
40				</a>
41				<ul role="list"><li class="selected"><a href="https://versatiles.org/">Overview</a></li><li><a href="https://versatiles.org/playground/">Playground</a></li><li><a href="https://versatiles.org/tools/">Tools</a></li><li><a href="https://docs.versatiles.org/">Documentation</a></li><li class="github-icon"><a aria-label="GitHub" href="https://github.com/versatiles-org/"></a></li></ul>
42			</nav>
43		</header>
44		<main id="main-content" class="markdown-body" aria-label="Page content"><div id="logoblock">
45	<img src="assets/logo/versatiles.svg" alt="VersaTiles logo" style="background-color: transparent;" width="118" height="136">
46	<div>
47		<h1>VersaTiles</h1>
48		<p>
49			<span>a</span>
50			<span>complete</span>
51			<span><abbr title="Free, Libre and Open Source Software">FLOSS</abbr></span>
52			<span>map</span>
53			<span>stack</span>
54		</p>
55	</div>
56</div>
57
58<hero>VersaTiles is a completely <a href="https://en.wikipedia.org/wiki/Free_and_open-source_software">FLOSS</a> stack
59	for generating, distributing, and using map tiles based on OpenStreetMap data, free of any commercial interests.
60</hero>
61
62<p>VersaTiles is a free and open alternative to commercial map services like Google Maps or Mapbox. It is designed for
63	newsrooms, NGOs, developers, and public institutions who need reliable maps without vendor lock-in. VersaTiles is
64	fully self-hostable, requires no API keys, charges no usage fees, and does not track your users.</p>
65
66<h2>Try it out</h2>
67
68<link rel="preload" href="https://tiles.versatiles.org/assets/lib/maplibre-gl/maplibre-gl.css" as="style">
69<link rel="preload" href="https://tiles.versatiles.org/assets/lib/maplibre-gl/maplibre-gl.js" as="script">
70<link rel="stylesheet" type="text/css" href="https://tiles.versatiles.org/assets/lib/maplibre-gl/maplibre-gl.css">
71<script src="https://tiles.versatiles.org/assets/lib/maplibre-gl/maplibre-gl.js"></script>
vendor: 1 bytes, line 71
71
72<script src="https://tiles.versatiles.org/assets/lib/versatiles-style/versatiles-style.js"></script>
72
73<style scoped="">
74	#map-wrap {
75		position: relative;
76		width: 100vw;
77		margin-left: calc(50% - 50vw);
78	}
79
80	@media (min-width: 640px) {
81		#map-wrap {
82			width: auto;
83			margin-left: auto;
84		}
85	}
86
87	#map {
88		display: block;
89		width: 100%;
90		aspect-ratio: 16 / 9;
91		min-height: 240px;
92		overflow: hidden;
93	}
94
95	#map-styles {
96		position: relative;
97		display: grid;
98		grid-template-columns: 1fr 1fr 1fr;
99		background: rgba(15, 15, 18, 0.75);
100		border-radius: 6px;
101		padding: 3px;
102		border: 1px solid rgba(255, 255, 255, 0.1);
103		width: fit-content;
104		margin: 0.75rem auto 0;
105	}
106
107	#map-styles-track {
108		position: absolute;
109		inset: 3px;
110		width: calc((100% - 6px) / 3);
111		border-radius: 4px;
112		background: #c9850a;
113		transform: translateX(calc(var(--pos, 0) * 100%));
114		transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
115		pointer-events: none;
116	}
117
118	.map-style-btn {
119		position: relative;
120		z-index: 1;
121		padding: 4px 16px;
122		border: none;
123		border-radius: 4px;
124		background: transparent;
125		color: rgba(255, 255, 255, 0.55);
126		cursor: pointer;
127		font-size: 13px;
128		font-weight: 500;
129		letter-spacing: 0.01em;
130		transition: color 0.25s;
131		white-space: nowrap;
132		font-family: inherit;
133	}
134
135	.map-style-btn:hover {
136		color: rgba(255, 255, 255, 0.85);
137	}
138
139	.map-style-btn.active {
140		color: #fff;
141	}
142
143	.maplibregl-ctrl-attrib {
144		opacity: 0;
145		transition: opacity 0.2s;
146	}
147</style>
148<div id="map-wrap">
149	<div id="map" role="img" aria-label="Interactive map of Berlin rendered with VersaTiles"></div>
150	<div id="map-styles">
151		<div id="map-styles-track"></div>
152		<button type="button" class="map-style-btn active" data-style="colorful" aria-pressed="true">Colorful</button>
153		<button type="button" class="map-style-btn" data-style="gray-dark" aria-pressed="false">Gray</button>
154		<button type="button" class="map-style-btn" data-style="satellite" aria-pressed="false">Satellite</button>
155	</div>
156</div>
157<script>
158	const urls = { base: 'https://tiles.versatiles.org' };
159
160	// VersaTiles Style v6: every vector/raster style comes from osm({ theme }) or satellite(),
161	// and inlineSources() folds the TileJSONs in — the relative tile URLs they list would not
162	// resolve otherwise, and it also carries over the attribution.
163	function buildStyle(name) {
164		const style = name === 'satellite'
165			? VersaTilesStyle.satellite({ urls })
166			: VersaTilesStyle.osm({ urls, theme: name });
167		return VersaTilesStyle.inlineSources(style);
168	}
169
170	(async () => {
171		const map = new maplibregl.Map({
172			container: 'map',
173			style: await buildStyle('colorful'),
174			bounds: [13.09, 52.33, 13.74, 52.68],
175			maxZoom: 18,
176			attributionControl: false,
177		});
178
179		map.addControl(new maplibregl.FullscreenControl());
180		map.addControl(new maplibregl.AttributionControl({}));
181
182		map.on('load', () => {
183			const container = map.getContainer().querySelector('.maplibregl-ctrl-attrib');
184			if (container) {
185				container.classList.remove('maplibregl-compact-show');
186				container.style.opacity = '1';
187			}
188		});
189
190		const buttons = document.querySelectorAll('.map-style-btn');
191		const track = document.getElementById('map-styles');
192
193		buttons.forEach((btn, i) => {
194			btn.addEventListener('click', async () => {
195				const prev = document.querySelector('.map-style-btn.active');
196				prev.classList.remove('active');
197				prev.setAttribute('aria-pressed', 'false');
198				btn.classList.add('active');
199				btn.setAttribute('aria-pressed', 'true');
200				track.style.setProperty('--pos', i);
201				map.setStyle(await buildStyle(btn.dataset.style));
202			});
203		});
204	})();
205</script>
205
206
207<h2>Sponsor us</h2>
208
209<p style="text-align:center; margin:2rem 0">
210	VersaTiles is free and self-hostable. If your team relies on it, please consider chipping in so we
211	can keep maintaining it.
212</p>
213
214<div id="sponsor-buttons">
215	<div class="sponsor-btn-row">
216		<a class="sponsor-btn sponsor-btn--github" href="https://github.com/sponsors/versatiles-org" rel="noopener" target="_blank">
217			<svg class="icon" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true">
218				<path d="m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002Z"></path>
219			</svg>
220			Sponsor on GitHub
221		</a>
222		<a class="sponsor-btn sponsor-btn--oc" href="https://opencollective.com/versatiles" rel="noopener" target="_blank">
223			<svg class="icon" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true">
224				<path d="m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002Z"></path>
225			</svg>
226			Sponsor on Open Collective
227		</a>
228	</div>
229	<a class="sponsor-btn sponsor-btn--once" href="https://donate.stripe.com/00w6oJ3EMfca6J35Jb1ck00?client_reference_id=versatiles-startpage" rel="noopener" target="_blank">
230		<svg class="icon" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true">
231			<path d="m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002Z"></path>
232		</svg>
233		Donate once
234	</a>
235</div>
236
237<h2>Sponsors</h2>
238
239<p style="text-align:center; margin:2rem 0">
240	A big thank-you to everyone helping keep VersaTiles going.
241</p>
242
243<div class="sponsor-logos">
244	<a href="https://versatiles.org/sponsors/" rel="noopener">
245		<img src="https://versatiles.org/sponsors/sponsors.svg" alt="VersaTiles sponsors" loading="lazy">
246	</a>
247</div>
248
249<h2>How it works</h2>
250
251<div id="pipeline">
252	<div class="pipeline-step">
253		<strong>Generate</strong>
254		<span>Turn OpenStreetMap data and satellite imagery into optimized tiles — or <a href="https://download.versatiles.org/">download ready-made ones</a>.</span>
255	</div>
256	<div class="pipeline-step">
257		<strong>Serve</strong>
258		<span>Deliver tiles to clients using a lightweight, high-performance tile server.</span>
259	</div>
260	<div class="pipeline-step">
261		<strong>Render</strong>
262		<span>Show beautiful maps on the web, Android, and iOS using <a href="https://maplibre.org/">MapLibre</a> with
263			professionally designed styles.</span>
264	</div>
265	<div class="pipeline-step">
266		<strong>Tools</strong>
267		<span>Customize styles, set up servers, explore map data, and edit maps — all with our interactive tools.</span>
268	</div>
269</div>
270
271<h2>Explore VersaTiles</h2>
272
273<section class="cards-section">
274<h3>Live demos &amp; tools</h3>
275<div class="cards-grid">
276<article class="card">
277<img class="card__thumb" src="/assets/cards/tile-server.webp" alt="" loading="lazy">
278<h4 class="card__title"><a class="card__link" href="https://tiles.versatiles.org/">Tile server &amp; style picker</a></h4>
279<p class="card__hook">Use our public tile server and build your own map styles.</p>
280
281</article>
282<article class="card">
283<img class="card__thumb" src="/assets/cards/aerial-imagery.webp" alt="" loading="lazy">
284<h4 class="card__title"><a class="card__link" href="https://tiles.versatiles.org/#map=16/52.518637/13.376013&amp;style=satellite&amp;config=eyJvdmVybGF5IjpmYWxzZX0">Aerial imagery</a></h4>
285<p class="card__hook">Free, high-resolution orthophotos served as map tiles.</p>
286<a class="card__repo" href="https://github.com/versatiles-org/orthophotos" rel="noopener" aria-label="Aerial imagery source on GitHub">Source</a>
287</article>
288<article class="card">
289<img class="card__thumb" src="/assets/cards/terrain.webp" alt="" loading="lazy">
290<h4 class="card__title"><a class="card__link" href="https://tiles.versatiles.org/#map=13.8
2906/46.67217/9.54747/-62.6/60&amp;style=satellite&amp;config=eyJ0ZXJyYWluIjp0cnVlfQ">3D terrain &amp; elevation</a></h4>
291<p class="card__hook">Global elevation data with hillshading and 3D terrain.</p>
292
293</article>
294<article class="card">
295<img class="card__thumb" src="/assets/cards/styler.webp" alt="" loading="lazy">
296<h4 class="card__title"><a class="card__link" href="https://versatiles.org/maplibre-versatiles-styler/">Style customizer</a></h4>
297<p class="card__hook">A MapLibre control to recolor, switch fonts/language, and export styles.</p>
298<a class="card__repo" href="https://github.com/versatiles-org/maplibre-versatiles-styler" rel="noopener" aria-label="Style customizer source on GitHub">Source</a>
299</article>
300<article class="card">
301<img class="card__thumb" src="/assets/cards/showcases.webp" alt="" loading="lazy">
302<h4 class="card__title"><a class="card__link" href="https://docs.versatiles.org/showcases/">Showcases</a></h4>
303<p class="card__hook">Real-world maps and creative uses of VersaTiles.</p>
304<a class="card__repo" href="https://github.com/versatiles-org/versatiles-documentation/blob/main/showcases/showcases.yaml" rel="noopener" aria-label="Showcases source on GitHub">Source</a>
305</article>
306<article class="card">
307<img class="card__thumb" src="/assets/cards/map-editor.webp" alt="" loading="lazy">
308<h4 class="card__title"><a class="card__link" href="https://versatiles.org/node-versatiles-svelte/map-editor#FeQRaYxHbYwVB2EvzxiO_xgqOZxXlBuIrhUiQhIiKiWhasWSFiMnWDlO9NkKfkOhNmejdlRhDkWjRmEjBnahLoEhVnddmNhblViLlBjS0MQA">Map editor</a></h4>
309<p class="card__hook">Drop pins, draw shapes, share editable maps in the browser.</p>
310<a class="card__repo" href="https://github.com/versatiles-org/node-versatiles-svelte" rel="noopener" aria-label="Map editor source on GitHub">Source</a>
311</article>
312<article class="card">
313<img class="card__thumb" src="/assets/cards/playground.webp" alt="" loading="lazy">
314<h4 class="card__title"><a class="card__link" href="https://versatiles.org/playground/">Playground</a></h4>
315<p class="card__hook">Runnable code examples for VersaTiles + MapLibre, right in the browser.</p>
316<a class="card__repo" href="https://github.com/versatiles-org/playground" rel="noopener" aria-label="Playground source on GitHub">Source</a>
317</article>
318<article class="card">
319<img class="card__thumb" src="/assets/cards/documentation.webp" alt="" loading="lazy">
320<h4 class="card__title"><a class="card__link" href="https://docs.versatiles.org">Documentation</a></h4>
321<p class="card__hook">The complete docs hub for the ecosystem.</p>
322<a class="card__repo" href="https://github.com/versatiles-org/versatiles-documentation" rel="noopener" aria-label="Documentation source on GitHub">Source</a>
323</article>
324<article class="card">
325<img class="card__thumb" src="/assets/cards/download.webp" alt="" loading="lazy">
326<h4 class="card__title"><a class="card__link" href="https://download.versatiles.org/">Download free map data</a></h4>
327<p class="card__hook">Ready-made tile data for the whole world.</p>
328
329</article>
330</div>
331</section>
332<section class="cards-section">
333<h3>Servers &amp; CLIs</h3>
334<div class="cards-grid">
335<article class="card">
336<img class="card__thumb" src="/assets/cards/setup-server.webp" alt="" loading="lazy">
337<h4 class="card__title"><a class="card__link" href="https://versatiles.org/tools/setup_server">Server setup wizard</a></h4>
338<p class="card__hook">Answer a few questions, get a copy-pasteable install command.</p>
339
340</article>
341<article class="card">
342<img class="card__thumb" src="/assets/cards/versatiles-rs.webp" alt="" loading="lazy">
343<h4 class="card__title"><a class="card__link" href="https://github.com/versatiles-org/versatiles-rs">VersaTiles CLI</a></h4>
344<p class="card__hook">Rust CLI to convert, validate, and serve tiles. Install via Homebrew, Cargo, or Docker.</p>
345
346</article>
347<article class="card">
348<img class="card__thumb" src="/assets/cards/node-server.webp" alt="" loading="lazy">
349<h4 class="card__title"><a class="card__link" href="https://www.npmjs.com/package/@versatiles/server">Node tile server</a></h4>
350<p class="card__hook">Lightweight Node.js server for <code>.versatiles</code> containers.</p>
351<a class="card__repo" href="https://github.com/versatiles-org/node-versatiles-server" rel="noopener" aria-label="Node tile server source on GitHub">Source</a>
352</article>
353<article class="card">
354<img class="card__thumb" src="/assets/cards/google-cloud.webp" alt="" loading="lazy">
355<h4 class="card__title"><a class="card__link" href="https://www.npmjs.com/package/@versatiles/google-cloud">Google Cloud server</a></h4>
356<p class="card__hook">Serve tiles + assets straight from a GCS bucket on Google Cloud Run. Perfect for newsrooms.</p>
357<a class="card__repo" href="https://github.com/versatiles-org/node-versatiles-google-cloud" rel="noopener" aria-label="Google Cloud server source on GitHub">Source</a>
358</article>
359<article class="card">
360<img class="card__thumb" src="/assets/cards/docker.webp" alt="" loading="lazy">
361<h4 class="card__title"><a class="card__link" href="https://hub.docker.com/u/versatiles">Docker images</a></h4>
362<p class="card__hook">Production-ready images: versatiles, versatiles-frontend, versatiles-nginx, and more.</p>
363<a class="card__repo" href="https://github.com/versatiles-org/versatiles-docker" rel="noopener" aria-label="Docker images source on GitHub">Source</a>
364</article>
365</div>
366</section>
367<section class="cards-section">
368<h3>Libraries</h3>
369<div class="cards-grid">
370<article class="card">
371<img class="card__thumb" src="/assets/cards/style-toolkit.webp" alt="" loading="lazy">
372<h4 class="card__title"><a class="card__link" href="https://www.npmjs.com/package/@versatiles/style">Style toolkit</a></h4>
373<p class="card__hook">Generate MapLibre styles: Colorful, Natural, Muted, Gray, Toner, Satellite.</p>
374<a class="card__repo" href="https://github.com/versatiles-org/versatiles-style" rel="noopener" aria-label="Style toolkit source on GitHub">Source</a>
375</article>
376<article class="card">
377<img class="card__thumb" src="/assets/cards/container.webp" alt="" loading="lazy">
378<h4 class="card__title"><a class="card__link" href="https://www.npmjs.com/package/@versatiles/container">Container reader</a></h4>
379<p class="card__hook">Read <code>.versatiles</code> files in Node and the browser.</p>
380<a class="card__repo" href="https://github.com/versatiles-org/node-versatiles-container" rel="noopener" aria-label="Container reader source on GitHub">Source</a>
381</article>
382<article class="card">
383<img class="card__thumb" src="/assets/cards/svelte.webp" alt="" loading="lazy">
384<h4 class="card__title"><a class="card__link" href="https://versatiles.org/node-versatiles-svelte/">Svelte components</a></h4>
385<p class="card__hook"><code>BasicMap</code>, <code>BBoxMap</code>, <code>LocatorMap</code>, <code>MapEditor</code> for VersaTiles.</p>
386<a class="card__repo" href="https://github.com/versatiles-org/node-versatiles-svelte" rel="noopener" aria-label="Svelte components source on GitHub">Source</a>
387</article>
388<article class="card">
389<img class="card__thumb" src="/assets/cards/svg-renderer.webp" alt="" loading="lazy">
390<h4 class="card__title"><a class="card__link" href="https://versatiles.org/versatiles-svg-renderer/demo/index.html">SVG renderer</a></h4>
391<p class="card__hook">Render print-quality SVG maps from a style + bbox.</p>
392<a class="card__repo" href="https://github.com/versatiles-org/versatiles-svg-renderer" rel="noopener" aria-label="SVG renderer source on GitHub">Source</a>
393</article>
394<article class="card">
395<img class="card__thumb" src="/assets/cards/frontend.webp" alt="" loading="lazy">
396<h4 class="card__title"><a class="card__link" href="https://github.com/versatiles-org/versatiles-frontend/releases/latest">Frontend bundles</a></h4>
397<p class="card__hook">Pre-packaged web frontends with MapLibre, fonts, sprites, and styles.</p>
398<a class="card__repo" href="https://github.com/versatiles-org/versatiles-frontend" rel="noopener" aria-label="Frontend bundles source on GitHub">Source</a>
399</article>
400<article class="card">
401<img class="card__thumb" src="/assets/cards/choropleth.webp" alt="" loading="lazy">
402<h4 class="card__title"><a class="card__link" href="https://github.com/versatiles-org/versatiles-choro">Choropleth pipeline <em>(experimental)</em></a></h4>
403<p class="card__hook">Docker WebUI + CLI for building choropleth maps.</p>
404
405</article>
406<article class="card">
407<img class="card__thumb" src="/assets/cards/orthophotos.webp" alt="" loading="lazy">
408<h4 class="card__title"><a class="card__link" href="https://versatiles.org/orthophotos/">Orthophoto coverage</a></h4>
409<p class="card__hook">See the current state of the scrapers fetching high-resolution orthophotos.</p>
410<a class="card__repo" href="https://github.com/versatiles-org/orthophotos" rel="noopener" aria-label="Orthophoto coverage source on GitHub">Source</a>
411</article>
412</div>
413</section>
414<section class="cards-section">
415<h3>Fonts &amp; glyphs</h3>
416<div class="cards-grid">
417<article class="card">
418<img class="card__thumb" src="/assets/cards/glyphs.webp" alt="" loading="lazy">
419<h4 class="card__title"><a class="card__link" href="https://versatiles.org/versatiles-glyphs-rs/">SDF glyph generator</a></h4>
420<p class="card__hook">Rust tool that produces high-precision SDF glyph PBFs from TTF/OTF fonts.</p>
421<a class="card__repo" href="https://github.com/versatiles-org/versatiles-glyphs-rs" rel="noopener" aria-label="SDF glyph generator source on GitHub">Source</a>
422</article>
423<article class="card">
424<img class="card__thumb" src="/assets/cards/fonts.webp" alt="" loading="lazy">
425<h4 class="card__title"><a class="card__link" href="https://github.com/versatiles-org/versatiles-fonts/releases/latest">Pre-built fonts</a></h4>
426<p class="card__hook">Ready-to-use Fira, Lato, Noto, Roboto glyph archives.</p>
427<a class="card__repo" href="https://github.com/versatiles-org/versatiles-fonts" rel="noopener" aria-label="Pre-built fonts source on GitHub">Source</a>
428</article>
429</div>
430</section>
431<section class="cards-section">
432<h3>Spec &amp; community</h3>
433<div class="cards-grid">
434<article class="card">
435<img class="card__thumb" src="/assets/cards/spec.webp" alt="" loading="lazy">
436<h4 class="card__title"><a class="card__link" href="https://github.com/versatiles-org/versatiles-spec">Container spec</a></h4>
437<p class="card__hook">Open specification for the <code>.versatiles</code> tile container format.</p>
438
439</article>
440<article class="card">
441<img class="card__thumb" src="/assets/cards/github.webp" alt="" loading="lazy">
442<h4 class="card__title"><a class="card__link" href="https://github.com/versatiles-org">GitHub org</a></h4>
443<p class="card__hook">All repos, issues, discussions.</p>
444
445</article>
446<article class="card">
447<img class="card__thumb" src="/assets/cards/mastodon.webp" alt="" loading="lazy">
448<h4 class="card__title"><a class="card__link" href="https://mastodon.social/@VersaTiles">Mastodon</a></h4>
449<p class="card__hook">Project updates and ecosystem news.</p>
450
451</article>
452<article class="card">
453<img class="card__thumb" src="/assets/cards/bluesky.webp" alt="" loading="lazy">
454<h4 class="card__title"><a class="card__link" href="https://bsky.app/profile/versatiles.bsky.social">Bluesky</a></h4>
455<p class="card__hook">Project updates on Bluesky.</p>
456
457</article>
458</div>
459</section>
460
461<h2>Highlights</h2>
462
463<ul>
464	<li><strong>2026-09-01</strong> - Michael published an <a href="https://versatiles.org/offener-brief-an-die-ard/">open
465			letter to the ARD</a>
465 (in German) on who takes responsibility for open map infrastructure.</li>
466	<li><strong>2026-07-22</strong> - We're forming a <a href="https://versatiles.org/consortium/">VersaTiles
467			consortium</a> - looking for ten organizations to build Europe's first user-funded consortium for open map
468		infrastructure.</li>
469	<li><strong>2026-05-07</strong> - We published our <a href="https://versatiles.org/versatiles-map-animation/">map
470			animation tool</a> for composing camera animations on a VersaTiles map, right in the browser.</li>
471	<li><strong>2026-04-05</strong> - We released <a href="https://tiles.versatiles.org/#map=13.86/46.67217/9.54747/-62.6/60&amp;style=satellite&amp;config=eyJ0ZXJyYWluIjp0cnVlfQ">global
472			elevation data</a>, enabling hillshading and 3D terrain visualization in VersaTiles maps.</li>
473	<li><strong>2026-01-02</strong> - <a href="https://github.com/versatiles-org/versatiles-rs/">versatiles-rs</a> got
474		 <a href="https://www.npmjs.com/package/@versatiles/versatiles-rs">Node.js bindings</a>.</li>
475	<li><strong>2025-10-08</strong> - We published <strong>global imagery data</strong>, combining free
476		satellite and aerial orthophotos: <a href="https://tiles.versatiles.org/#map=4.17/51.7/11.44&amp;style=satellite">tiles.versatiles.org</a></li>
477	<li><strong>2025-08-17</strong> - Michael presented <em><a href="https://media.ccc.de/v/froscon2025-3303-versatiles_-_finally_maps_for_everyone">VersaTiles - finally
478				maps for everyone</a></em> at FrOSCon 2025.</li>
479	<li><strong>2025-03-04</strong> - The documentation moved to its own site: <a href="https://docs.versatiles.org">docs.versatiles.org</a></li>
480	<li><strong>2025-02-01</strong> - We released our free <a href="https://versatiles.org/node-versatiles-svelte/map-editor">map editor</a>.</li>
481	<li><strong>2024-09-25</strong> - German magazine <a href="https://www.heise.de/news/VersaTiles-Open-Source-Projekt-als-Alternative-zu-kommerziellen-Kartendiensten-9952858.html">Heise</a>
482		featured VersaTiles as an open alternative to commercial map providers.</li>
483	<li><strong>2024-07-30</strong> - Our <a href="https://versatiles.org/tools/setup_server">setup-server tool</a> went
484		online.</li>
485	<li><strong>2023-07-16</strong> - <a href="https://versatiles.org">versatiles.org</a> officially launched.</li>
486</ul>
487
488<h2>Roadmap</h2>
489
490<div id="roadmap">
491	<div class="roadmap-category roadmap-done">
492		<h3><span class="status-badge">Done</span></h3>
493		<ul class="roadmap-items">
494			<li class="roadmap-item"><a href="https://docs.versatiles.org">Publish documentation at docs.versatiles.org</a>
495			</li>
496			<li class="roadmap-item"><a href="https://versatiles.org/node-versatiles-svelte/map-editor">Publish map
497					editor</a></li>
498			<li class="roadmap-item"><a href="https://github.com/versatiles-org/versatiles-docker/tree/main/versatiles-nginx">Publish Docker
499					container with nginx and TLS</a></li>
500			<li class="roadmap-item"><a href="https://www.npmjs.com/package/@versatiles/versatiles-rs">Add Node.js bindings
501					to the VersaTiles Rust CLI</a></li>
502			<li class="roadmap-item"><a href="https://tiles.versatiles.org/#map=4.19/49.22/10.14&amp;style=satellite">Publish
503					satellite and aerial imagery</a></li>
504			<li class="roadmap-item"><a href="https://github.com/versatiles-org/maplibre-versatiles-styler">Publish style
505					editor plugin for MapLibre GL JS</a></li>
506			<li class="roadmap-item"><a href="https://versatiles.org/tools/setup_server">Publish interactive server setup
507					tool</a></li>
508			<li class="roadmap-item"><a href="https://github.com/versatiles-org/versatiles-svg-renderer">Add SVG export for
509					print-quality maps</a></li>
510			<li class="roadmap-item">Publish free global elevation and terrain data — <em>enable hillshading and 3D terrain
511					visualization</em></li>
512			<li class="roadmap-item">Simplify conversion from GeoJSON to vector tiles — <em>easily add your own data layers
513					to VersaTiles maps</em></li>
514			<li class="roadmap-item">Migrate tile generation to Planetiler — <em>faster and better tile generation from OSM
515					data</em></li>
516			<li class="roadmap-item">Integrate global land cover data — <em>add vegetation, urban areas, and other land use
517					information</em></li>
518		</ul>
519	</div>
520	<div class="roadmap-category roadmap-planned">
521		<h3><span class="status-badge">Planned</span></h3>
522		<ul class="roadmap-items">
523			<li class="roadmap-item">Find partners and sponsors — <em>ensure long-term sustainability of the project</em>
524			</li>
525			<li class="roadmap-item">Release VersaTiles Studio, an all-in-one app for map creation — <em>create and export
526					custom maps without code</em></li>
527		</ul>
528	</div>
529	<div class="roadmap-category roadmap-exploring">
530		<h3><span class="status-badge">Exploring</span> funding needed</h3>
531		<ul class="roadmap-items">
532			<li class="roadmap-item">Update and extend satellite imagery — <em>
532improve coverage and resolution
533					worldwide</em></li>
534			<li class="roadmap-item">Build a new style engine</li>
535			<li class="roadmap-item">Provide new vector tiles for hillshading and contour lines</li>
536		</ul>
537	</div>
538</div>
539
540<h2>Funded by</h2>
541
542<p style="text-align:center; margin:3rem 0">
543	<a href="https://nlnet.nl/project/VersaTiles/"><img src="/assets/logo/nlnet-white.svg" alt="NLnet Foundation logo" width="139" height="52" loading="lazy" style="background-color: transparent;margin-right:30px"></a>
544	<a href="https://nlnet.nl/project/VersaTiles/"><img src="/assets/logo/ngi0core-white.svg" alt="NGI Zero Core logo" width="166" height="52" loading="lazy" style="background-color: transparent;"></a>
545	<br>
546	<small>Funded by European Commission's Next Generation Internet programme<br>through the NGI0 Commons Fund by
547		NLnet.</small>
548</p>
549
550<p style="text-align:center; margin:3rem 0">
551	<a href="https://www.miz-babelsberg.de/foerderung/foerderprojekte-alumni/details/versatiles-editorial-tools.html"><img src="/assets/logo/miz.png" alt="MIZ Babelsberg — media innovation centre logo" width="294" height="36" loading="lazy" style="background-color: transparent;"></a>
552	<br>
553	<small>MIZ-Babelsberg has funded the development of the "VersaTiles Editorial Tools"</small>
554</p>
555</main>
556		<footer role="contentinfo" aria-label="Site information">
557		<div id="github-link"><a target="_blank" href="https://github.com/versatiles-org/versatiles-org.github.io/tree/main/docs/index.html" rel="noopener">Improve this page on GitHub</a></div></footer>
558	
559
560</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.