A general-purpose OpenStreetMap mapnik style, in CartoCSS
CartoCSS Python Lua Shell
Latest commit ff78bb7 Jan 17, 2018 @matkoniecz matkoniecz Merge pull request #2995 from kocio-pl/heath-earlier
Move natural=heath earlier
Failed to load latest commit information.
scripts Replace VMAP0-data by OSM-data Dec 6, 2017
symbols Adding icon for leisure=firepit Dec 29, 2017
.dockerignore Bullet-proof Docker variable turning with PostGIS. Aug 1, 2017
.gitattributes Adding .gitattributes to Docker configuration Jul 8, 2017
.gitignore Fixing .env file creation for Docker Jul 20, 2017
.travis.yml Some changes to removing VMAP0-data Dec 9, 2017
CARTOGRAPHY.md Fix tyop Feb 8, 2017
CHANGELOG.md Update CHANGELOG Dec 17, 2017
CODE_OF_CONDUCT.md Update CoC to follow upstream Go changes Dec 17, 2016
CONTRIBUTING.md follow relabelling easy issues, fixes #2899 Oct 16, 2017
DOCKER.md mapzen shuts down, link will be dead soon Jan 10, 2018
Dockerfile Fixing line wrapping bug in Docker Sep 10, 2017
Dockerfile.db Bullet-proof Docker variable turning with PostGIS. Aug 1, 2017
Dockerfile.import Fixing line wrapping bug in Docker Sep 10, 2017
INSTALL.md Merge pull request #3014 from matkoniecz/createdb Jan 12, 2018
LICENSE.txt Explain that the cartography is covered by the license (#2474) Jan 19, 2017
README.md Updated github username Nov 29, 2017
RELEASES.md Update RELEASES.md Nov 22, 2017
USECASES.md Update USECASES.md Dec 11, 2017
addressing.mss Better minimal distance betwee Oct 7, 2017
admin.mss Show national park boundaries from higher zoomlevel and larger size Dec 9, 2017
aerialways.mss add rendering for aerialway=mixed_lift (same as gondola), fixes #347 Mar 22, 2017
amenity-points.mss Merge pull request #2975 from kocio-pl/recycling-small Jan 9, 2018
buildings.mss Showing all stations as major buildings Oct 26, 2017
docker-compose.yml Bullet-proof Docker variable turning with PostGIS. Aug 1, 2017
ferry-routes.mss Move ferries to zoomlevel 8 Nov 20, 2017
fonts.mss Update Noto to Phase III Dec 28, 2017
indexes.sql Add an index for water polygons Aug 27, 2016
indexes.yml Add an index for water polygons Aug 27, 2016
landcover.mss Move natural=heath earlier Dec 24, 2017
openstreetmap-carto.lua Remove support for old-style multipolygons Apr 16, 2017
openstreetmap-carto.style Add usage notes to openstreetmap-carto.style Jan 19, 2017
placenames.mss Fixing village label size progression Sep 1, 2017
power.mss thinner power=line and power=minor_line Jun 12, 2016
preview.png Update preview.png - parkings and station labels Nov 14, 2017
project.mml Merge pull request #2995 from kocio-pl/heath-earlier Jan 17, 2018
road-colors-generated.mss Split up roads.mss, refactor road colour script Jul 11, 2016
road-colors.yaml Let generate_shields use road-colors.yaml Jul 11, 2016
roads.mss fine-tuning of bridge labels Dec 29, 2017
shapefiles.mss Merge pull request #2969 from matthijsmelissen/replace-vmap0 Dec 11, 2017
stations.mss station typography Nov 2, 2017
style.mss Improve mid-zoom levels and water color Jun 3, 2017
water-features.mss use variables for commonly used halo values Aug 31, 2016
water.mss Rendering seasonal waterways as intermittent Dec 23, 2017


OpenStreetMap Carto


These are the CartoCSS map stylesheets for the Standard map layer on OpenStreetMap.org.

These stylesheets can be used in your own cartography projects, and are designed to be easily customised. They work with Kosmtik and also with the command-line CartoCSS processor.

Since August 2013 these stylesheets have been used on the OSMF tileservers (tile.openstreetmap.org), and are updated from each point release. They supersede the previous XML-based stylesheets.


You need a PostGIS database populated with OpenStreetMap data along with auxillary shapefiles. See INSTALL.md.


Contributions to this project are welcome, see CONTRIBUTING.md for full details.


This project follows a MAJOR.MINOR.PATCH versioning system. In the context of a cartographic project you can expect the following:

  • PATCH: When a patch version is released, there would be no reason not to upgrade. PATCH versions contain only bugfixes e.g. stylesheets won't compile, features are missing by mistake, etc.
  • MINOR: These are routine releases and happen every 2-5 weeks. They will contain changes to what's shown on the map, how they appear, new features added and old features removed. They may rarely contain changes to assets i.e. shapefiles and fonts but will not contain changes that require software or database upgrades.
  • MAJOR: Any change the requires reloading a database, or upgrading software dependecies will trigger a major version change.


Initial Release (v1.0.0, December 2012)

This was a full re-implementation of the original OSM style, with only a few bugs discovered later. There's been no interest in creating further point releases in the v1.x series.

Mapnik 2 work (v2.x)

The v2.x series initially focused on refactoring the style, both to to fix glitches and to leverage new features in CartoCSS / Mapnik to simplify the stylesheets with only small changes to the output, as well as removing 'old-skool' tagging methods that are now rarely used. It then started adding new features.

Mapnik and CartoCSS update (v3.x)

The v3.x series was triggered by an update to the required Mapnik and CartoCSS versions.

Care has been taken to not get too clever with variables and expressions. While these often make it easier to customise, experience has shown that over-cleverness (e.g. interpolated entities) can discourage contributions.

Database schema change (v4.x)

The v4.x series includes osm2pgsql lua transforms and a hstore column with all other tags, allowing use of more OpenStreetMap data. Users need to reload their databases, v3.x compatibility is not maintained.

There are over 300 open requests, some that have been open for years. These need reviewing and dividing into obvious fixes, or additional new features that need some cartographic judgement.


There are many open-source stylesheets written for creating OpenStreetMap-based maps using Mapnik, many based on this project. Some alternatives are: