L'essentiel
- PMTiles se sert sans serveur de tuiles : un fichier, un stockage objet qui accepte les requêtes Range, un en-tête CORS.
- MBTiles demande un serveur (tileserver-gl, Martin), et reste le bon choix quand ce serveur fait autre chose que lire des tuiles.
pmtiles convertpasse de l'un à l'autre,pmtiles extractdécoupe votre zone dans l'archive mondiale.- Le poste qui coûte, ce n'est pas le stockage : ce sont les frais de sortie et le nombre de requêtes.
- Les données OpenStreetMap sont sous ODbL : l'attribution est une obligation, pas une politesse.
PMTiles ou MBTiles : deux façons de ranger les mêmes tuiles
Le 27 septembre 2026, nous avons ouvert le build quotidien de Protomaps : un fichier de 138 356 870 873 octets, le monde entier du zoom 0 au zoom 15. Son en-tête annonce 1 431 655 765 tuiles adressées, mais seulement 136 millions de contenus distincts. Les océans se ressemblent, le format ne les stocke qu'une fois.
Les deux formats rangent des tuiles vectorielles ou raster identiques. Ce qui change, c'est qui les lit.
MBTiles est une base SQLite. La spécification 1.3 de Mapbox impose deux tables, metadata et
tiles, indexées sur le zoom, la colonne et la ligne. Un fichier MBTiles ne se lit pas depuis un
navigateur : il faut un programme qui ouvre la base et répond à chaque URL de tuile.
PMTiles est une archive à plat. La spécification version 3 place au début un en-tête fixe de 127 octets, puis un répertoire racine qui doit tenir dans les 16 384 premiers octets. Les tuiles sont numérotées le long d'une courbe de Hilbert, ce qui garde voisines dans le fichier les tuiles voisines sur la carte. Le navigateur lit l'en-tête, trouve l'adresse de la tuile, et demande seulement ces octets-là.
Notre avis : pour une carte publiée sur un site, PMTiles. Un fichier sur un stockage objet ne tombe pas en panne à trois heures du matin.
Quand MBTiles et un serveur de tuiles restent le bon choix
Un serveur de tuiles se justifie quand il fait plus que lire un fichier. Trois cas reviennent.
- Le rendu raster côté serveur. tileserver-gl, publié par MapTiler (version 5.6.0 en avril
2026), dessine des images PNG à partir de tuiles vectorielles et d'un style, avec MapLibre
Native. Utile pour un client qui n'affiche que des images, un export PDF, un WMTS pour un
logiciel SIG. Sa configuration accepte une source
mbtilescomme une sourcepmtiles, locale, en URL ou en chemin S3. - Des tuiles fabriquées depuis la base. Martin, projet MapLibre écrit en Rust (version 1.16.1 le 9 septembre 2026), génère des tuiles à la volée depuis des tables PostGIS et sert aussi des fichiers PMTiles et MBTiles. Si vos sentiers changent chaque semaine dans PostGIS, c'est plus simple que de reconstruire une archive.
- Une URL
{z}/{x}/{y}imposée. Une appli native ancienne, un logiciel SIG : sans lecteur PMTiles, il leur faut des URL de tuiles classiques.pmtiles servele fait aussi, et Protomaps publie un Worker Cloudflare qui expose une archive R2 en{z}/{x}/{y}.
Un détail de la spécification MBTiles qui coûte des heures : la colonne tile_row suit le schéma
TMS, où l'axe vertical est inversé par rapport aux URL XYZ. La spécification donne l'exemple de la
tuile 11/327/791 en XYZ, rangée en ligne 1256, soit 2^11 - 1 - 791. Un script maison qui lit la
base sans ce calcul affiche la carte à l'envers, par bandes.
Servir un MBTiles ou un PMTiles avec un serveur
À emporter : la checklist de mise en production d'une carte web
Recevoir la checklistConvertir, découper, publier : la méthode
Nous avons fait l'exercice le 27 septembre 2026 avec la ligne de commande pmtiles 1.31.2, un
binaire unique sans dépendance, sur l'emprise de la Chartreuse (longitude 5,60 à 6,05, latitude
45,15 à 45,55). L'extraction a lu 35 Mo dans l'archive distante en 71 requêtes et 15 secondes,
pour un fichier de 33 Mo.
- 1
Partir de la bonne archive
Soit vous avez déjà un MBTiles (produit par tippecanoe, planetiler ou un fournisseur), soit vous partez d'une archive mondiale PMTiles. Protomaps publie un build quotidien de la planète et garde les builds de la dernière semaine. Ne liez jamais votre site directement à ces fichiers : la documentation prévient que leurs URL changent.
- 2
Convertir un MBTiles
pmtiles convert entree.mbtiles sortie.pmtiles. La commande déduplique les tuiles identiques ; l'option--no-deduplicationaccélère la conversion quand vous savez qu'il n'y en a pas. - 3
Découper votre zone
pmtiles extractprend une emprise (--bbox) ou un polygone GeoJSON (--region), et un zoom maximal (--maxzoom). Chaque niveau de zoom supplémentaire double à peu près la taille du fichier : un fond de carte de département s'arrête souvent au zoom 14 ou 15. - 4
Vérifier l'archive
pmtiles verifycontrôle l'ordre et l'en-tête,pmtiles showaffiche le type de tuile, la compression et les zooms, avant le téléversement. - 5
Téléverser et ouvrir les en-têtes
Au-delà de 300 Mo, l'interface web de R2 refuse le fichier : passez par
rcloneoupmtiles upload. Puis posez la règle CORS : méthodesGETetHEAD, en-têtesrangeetif-matchautorisés,etagexposé. - 6
Brancher la carte
Côté navigateur, la bibliothèque
pmtilesajoute un protocolepmtiles://à MapLibre GL JS. Déclarez-le une seule fois dans la vie de l'application, puis pointez la source dessus.
La règle CORS, format S3 (AWS, et à adapter pour R2)
MapLibre GL JS lit l'archive directement
Avant de mettre l'archive en production
curl -r 0-16383sur l'URL publique revient en 206 avec unContent-Rangeexact- Aucune compression à la volée sur les fichiers
.pmtiles - La règle CORS liste vos domaines, pas
*, en production - Le nom du fichier change à chaque nouvelle version, pour ne pas servir un cache mélangé
- L'attribution OpenStreetMap est visible sur la carte
Héberger : stockage objet, CDN et ce que ça coûte
La documentation de Protomaps le dit sans détour : les stockages objet facturent au nombre de requêtes GET et au volume stocké, et chaque tuile lue par une requête Range compte pour un GET. Sur une archive PMTiles, votre facture suit donc le nombre de tuiles affichées, pas la taille du fichier.
Nous avons relevé le 27 septembre 2026 les grilles officielles de trois stockages, et calculé un mois type : l'archive mondiale de 138 Go, 10 millions de tuiles lues, environ 200 Go sortis (20 Ko par tuile en moyenne, l'ordre de grandeur de nos mesures au zoom 14).
| Poste | Cloudflare R2 (Standard) | AWS S3 Standard, Paris | Scaleway Multi-AZ, Paris |
|---|---|---|---|
| Stockage | 0,015 $ le Go-mois, 10 Go offerts | 0,024 $ le Go-mois | 0,01606 € le Go-mois |
| Lectures | 0,36 $ le million, 10 millions offerts | 0,0042 $ les 10 000 GET | incluses |
| Sortie vers Internet | gratuite | 0,09 $ le Go au-delà de 100 Go offerts par mois (tous services AWS) | 75 Go offerts, puis 0,01 € le Go |
| Mois type calculé | 1,92 $ | 16,51 $ | 3,47 € |
Sur la Chartreuse seule, 33 Mo, le stockage ne se voit plus dans aucune de ces grilles : tout se joue sur les requêtes et la sortie.
Deux nuances, écrites par Protomaps lui-même. R2 a une latence plus élevée que d'autres stockages,
500 ms ou plus, d'où l'intérêt d'un cache devant. Et le Worker Cloudflare qui expose une archive
R2 en {z}/{x}/{y} coûte 5 $ par mois avec 10 millions de requêtes incluses ; le cache n'y
fonctionne que sur un domaine à vous, pas sur workers.dev.
Notre avis : un stockage sans frais de sortie, ou avec un gros forfait gratuit, et un CDN devant. Sur S3 sans CDN, la sortie pèse plus que tout le reste réuni dès que la carte a du trafic.
La carte du Parc naturel régional de Chartreuse, telle qu'elle s'intègre sur un site : fond de carte, itinéraires et lieux servis ensemble, sans archive à héberger ni règle CORS à poser.
Le même contenu, à imprimer : la checklist de mise en production d'une carte web
Recevoir la checklistLes données : Protomaps, OpenMapTiles et l'ODbL
Une archive de tuiles n'est pas libre de droits parce qu'elle est téléchargeable. Le build Protomaps est distribué comme œuvre produite sous Open Database License, avec attribution OpenStreetMap obligatoire.
La page de droits d'auteur d'OpenStreetMap pose deux obligations : créditer OpenStreetMap et ses contributeurs, et indiquer que les données sont sous ODbL. Si vous modifiez la base elle-même et la redistribuez, le résultat reste sous la même licence. Sur une carte web, cela se règle par un contrôle d'attribution visible, « © OpenStreetMap », avec un lien vers la page de droits.
OpenMapTiles ajoute une couche. Son schéma de tuiles est sous BSD pour le code, et sous licence CC-BY 4.0 pour la cartographie et le rendu visuel : un service qui utilise des cartes dérivées de ce schéma doit afficher visiblement « OpenMapTiles » avec un lien, en plus de l'attribution OpenStreetMap. Protomaps publie son code sous BSD, ses données restant sous ODbL.
Ces règles s'appliquent à votre archive comme à toute carte en ligne. Faites relire l'attribution avant la mise en ligne : c'est la seule partie de ce chantier qui engage juridiquement votre structure. Nous ne donnons pas ici de conseil juridique sur un cas particulier.
FAQ
Quelle différence entre PMTiles et MBTiles ?
MBTiles est une base SQLite qu'un serveur de tuiles lit pour répondre à des URL {z}/{x}/{y}.
PMTiles est une archive à plat que le navigateur lit directement par requêtes HTTP Range sur un
stockage objet. Les tuiles contenues sont les mêmes, seul le mode de lecture change.
Comment convertir un MBTiles en PMTiles ?
Avec la ligne de commande pmtiles, un binaire sans dépendance : pmtiles convert entree.mbtiles sortie.pmtiles. Une image Docker officielle existe aussi. Vérifiez le résultat avec
pmtiles verify avant de le téléverser.
Faut-il un serveur pour servir des PMTiles ?
Non. Un stockage objet qui accepte les requêtes Range et une règle CORS suffisent, avec la
bibliothèque pmtiles côté navigateur. Un serveur ou un Worker n'est utile que pour exposer des
URL {z}/{x}/{y} à des clients qui ne savent pas lire PMTiles.
Combien coûte l'hébergement de ses propres tuiles ?
Le stockage coûte peu : 138 Go valent environ 2 $ par mois sur R2. Le poste qui compte est la sortie vers Internet et le nombre de requêtes : sur notre mois type de 10 millions de tuiles, le calcul va de 1,92 $ sur R2 à 16,51 $ sur S3 à Paris, aux tarifs du 27 septembre 2026.
Peut-on utiliser les tuiles OpenStreetMap gratuitement sur un site commercial ?
Les données sont réutilisables, y compris commercialement, sous ODbL, à condition de créditer OpenStreetMap et de mentionner la licence. Si le style dérive du schéma OpenMapTiles, son crédit s'ajoute. L'usage des serveurs de tuiles publics d'OpenStreetMap relève d'une autre règle, plus stricte, que cette page ne traite pas.
Sources
- Spécification PMTiles version 3, dépôt protomaps/PMTiles, consultée le 27 septembre 2026
- Documentation Protomaps, ligne de commande pmtiles (convert, extract, verify, serve), consultée le 27 septembre 2026
- Documentation Protomaps, PMTiles sur stockage objet (CORS, Range, facturation des GET), consultée le 27 septembre 2026
- Documentation Protomaps, PMTiles dans MapLibre GL, consultée le 27 septembre 2026
- Documentation Protomaps, déploiement sur Cloudflare (latence R2, coût du Worker), consultée le 27 septembre 2026
- Documentation Protomaps, téléchargement du fond de carte et licence ODbL, consultée le 27 septembre 2026
- Versions de go-pmtiles (1.31.2, 22 juillet 2026), consultées le 27 septembre 2026
- Spécification MBTiles 1.3, dépôt mapbox/mbtiles-spec, consultée le 27 septembre 2026
- tileserver-gl, dépôt et configuration des sources mbtiles et pmtiles, version 5.6.0, consulté le 27 septembre 2026
- Martin, serveur de tuiles MapLibre, version 1.16.1, consulté le 27 septembre 2026
- Tarifs Cloudflare R2, mis à jour le 7 août 2026, consultés le 27 septembre 2026
- Tarifs Amazon S3, région Europe (Paris), grille publiée le 26 septembre 2026, consultés le 27 septembre 2026
- Tarifs Scaleway Object Storage, région Paris, consultés le 27 septembre 2026
- OpenStreetMap, droits d'auteur et licence ODbL, consulté le 27 septembre 2026
- Licence du schéma OpenMapTiles (BSD et CC-BY 4.0), consultée le 27 septembre 2026
- Mesures La Trace du 27 septembre 2026 : lecture de tuiles avec
pmtiles4.5.0 et extraction avecpmtiles1.31.2 sur le build Protomaps20260927.pmtiles
À emporter
La checklist de mise en production d'une carte sur un site
Consentement et cookies, clés et quotas, tuiles, géocodage, accessibilité et performance : les points à vérifier avant de mettre une carte en ligne, avec une case par point.
Merci, la checklist part dans votre boîte mail.
Ouvrir la checklistVous voulez une carte en ligne, pas un chantier de tuiles ?
Une démonstration de trente minutes, sur votre territoire, pour voir le fond de carte, vos itinéraires et vos lieux servis ensemble dans un bloc à coller.
Demander une démonstrationÀ emporter : la checklist de mise en production d'une carte web
Recevoir la checklist