A general-purpose OpenStreetMap mapnik style, in CartoCSS
CartoCSS Python Shell Ruby
Latest commit c17cc64 Oct 12, 2016 @pnorman pnorman Fix github diff links
Failed to load latest commit information.
scripts Fix whitespace in generate_road_colours Sep 2, 2016
symbols Merge branch 'cities-and-capitals' of https://github.com/nebulon42/op… Sep 23, 2016
.gitattributes Treat MML files as binary Apr 14, 2015
.gitignore Let generate_shields use road-colors.yaml Jul 11, 2016
.travis.yml Use pipefail in travis Sep 26, 2016
CARTOGRAPHY.md Comments about fonts. Aug 21, 2016
CHANGELOG.md Fix github diff links Oct 12, 2016
CODE_OF_CONDUCT.md Add email addresses of maintainers Sep 7, 2016
CONTRIBUTING.md Merge pull request #2146 from gravitystorm/zoom-nesting-guidelines Jun 7, 2016
INSTALL.md Remove suggestion of converting CJK fonts Oct 11, 2016
LICENSE.txt Add CC0 license. May 10, 2013
README.md Update releasing with information on schema change and reload Jul 17, 2016
RELEASES.md Add changelog to release instructions Sep 5, 2016
addressing.mss Unify address layers and use halo Sep 22, 2016
admin.mss use variables for commonly used halo values Aug 31, 2016
aerialways.mss different rendering for aerialway=goods (fixes #875) Jul 5, 2015
amenity-points.mss Merge pull request #2335 from math1985/shop-label-zoom Sep 26, 2016
buildings.mss show man_made=bridge Aug 14, 2015
ferry-routes.mss use variables for commonly used halo values Aug 31, 2016
get-shapefiles.sh Check the apps used in get-shapefiles.sh Sep 21, 2016
indexes.sql Add an index for water polygons Aug 27, 2016
indexes.yml Add an index for water polygons Aug 27, 2016
landcover.mss Make landfill color different than construction and brownfield Sep 11, 2016
openstreetmap-carto.style Pull in upstream default.style changes May 13, 2016
placenames.mss Drop margin and avoid-edges attributes in placenames Sep 26, 2016
power.mss thinner power=line and power=minor_line Jun 12, 2016
preview.png update preview Jul 3, 2016
project.mml Add back captial-name WHERE conditions Oct 10, 2016
project.yaml Add back captial-name WHERE conditions Oct 10, 2016
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 Merge access rendering changes Sep 6, 2016
shapefiles.mss Revert "Merge remote-tracking branch 'pnorman/water_polygons'" Jun 18, 2016
stations.mss use variables for commonly used halo values Aug 31, 2016
style.mss Document CJK glyph style choise Sep 24, 2016
water-features.mss use variables for commonly used halo values Aug 31, 2016
water.mss Changed the text size logic so it's the same as landcover Sep 17, 2016


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, TileMill 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 in the standard osm2pgsql database layout, 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.

Current 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.

Care is being 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.

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.

Database schema change (v3.x)

The v3.x series will include osm2pgsql lua transforms and a hstore column with all other tags, allowing use of more OpenStreetMap data. Work is being done in the lua branch and issues have their own tag.

Initial releases will not make use of the new features, maintaining compatibility with v2.x and v2.x releases will continue with backports, allowing the style to be rendered from either a new database or an old one.

When sufficient time has passed for users to reload their databases, new features can be used and 2.x compatibility will not be maintained.


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