Want to take your software engineering career to the next level? Join the mailing list for career tips & advice Click here


A general-purpose OpenStreetMap mapnik style, in CartoCSS

Subscribe to updates I use openstreetmap-carto

Statistics on openstreetmap-carto

Number of watchers on Github 645
Number of open issues 397
Average time to close an issue 6 days
Main language CartoCSS
Average time to merge a PR 7 days
Open pull requests 114+
Closed pull requests 67+
Last commit over 2 years ago
Repo Created almost 8 years ago
Repo Last Updated over 2 years ago
Size 10.4 MB
Organization / Authorgravitystorm
Page Updated
Do you use openstreetmap-carto? Leave a review!
View open issues (397)
View openstreetmap-carto activity
View on github
Book a Mock Interview With Me (Silicon Valley Engineering Leader, 100s of interviews conducted)
Software engineers: It's time to get promoted. Starting NOW! Subscribe to my mailing list and I will equip you with tools, tips and actionable advice to grow in your career.
Evaluating openstreetmap-carto for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

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:


openstreetmap-carto open issues Ask a question     (View All Issues)
  • almost 4 years prominence of ferry route labels
  • almost 4 years Wrong highway color at intersection at tile boundary
  • almost 4 years Should not render closed ways with waterway=canal as area
  • almost 4 years highway tag for elements of highway relation not honoured
  • almost 4 years rendering for man_made=spoil_heap
  • almost 4 years Consider rendering indoor=room + shop/amenity better
  • almost 4 years render shop before amenity
  • almost 4 years Add rendering for natural=sinkhole
  • almost 4 years Waterway's name render is inconsistent.
  • almost 4 years Overlap between landuse=landfill and natural
  • almost 4 years Rendering of intersection between natural=tree_row and barrier=hedge
  • almost 4 years Render an icon for shop = craft
  • almost 4 years Fill color for leisure=sports_centre and stadiums missing
  • almost 4 years Mongolian script renders sideways
  • almost 4 years Oblique labels at small sizes less readable with new fonts
  • about 4 years New city labels sometimes overlap
  • about 4 years Add leisure=fitness_centre icon/text
  • about 4 years StateOfTheMap birds of a feather
  • about 4 years Render the name of man_made=bridge inside the polygon
  • about 4 years Updating the image in README.md
  • about 4 years Reduce vertical spacing in labels
  • about 4 years Render highway=passing_place
  • about 4 years Add icon for shop=funeral_directors
  • about 4 years landuse=brownfield looks fairly similar to buildings
  • about 4 years Label wrapping is not calculated on a per zoom level basis
  • about 4 years Use pull request reviews
  • about 4 years rendering of waterway=ditch/drain incentivizes bad mapping
  • about 4 years Add rendering for leisure=horse_riding
  • about 4 years Stale git information links
  • about 4 years railway=construction is more prominent than railway=subway
openstreetmap-carto open pull requests (View All Pulls)
  • Move shelter icon to SVG
  • Make tertiary road yellowish [respawn]
  • Change and unify colors for stadium/track/pitch to be less dominating
  • Start merging road areas into roads layers
  • Replacing library PNG icon with SVG version
  • Make place ordering better defined
  • Database-reload
  • Fix bug that prevents correct rendering of inaccessible tracks on bridges
  • Add custom index information
  • Pull in upstream default.style changes
  • Show national park boundaries from higher zoomlevel and larger size
  • topographic extensions
  • Database-reload
  • darker standard rail on higher zoom
  • thinner power=line and power=minor_line
  • Added rendering of tag tourism=wilderness_hut
  • Tilemill documentation
  • fix possible admin label and line rendering mismatch
  • Revised min zoom visibility for some elements
  • Rendering of valleys, ridges and other mountain elements
  • Added scripts\get-shapefiles.py
  • switch to book font for POI labels
  • render man_made=obelisk, fixes #2126
  • Filter small parking areas up to z17
  • add amenity=charging_station icon
  • Adding rendering for tourism=artwork
  • Make tertiary yellow and thinner after roads code refactoring
  • Add icon for amenity clock points
  • Rendering rare shop values
  • Remove hatching for military areas
  • Add Map Icon Guidelines to Contribution Guidelines
  • Random scrub pattern
  • Rendering barriers above highway areas
  • Adding rendering for shop=coffee
  • Adding rendering for amenity=ferry_terminal [WIP]
  • Travis carto update
  • Update CoC to include ethnicity & national origin
  • Making railway stations appear as major buildings [WIP]
  • Adding ref for railway=subway_entrance
  • Adding icon for shop=funeral_directors
  • Making pitch and track color less dominant
  • Adding icon for amenity=university and amenity=college [WIP]
  • Label oceans and large seas from a static file
  • Add rendering for tourism=wilderness_hut
  • Check range of supported Carto and Mapnik with Travis
  • Cleaning variables in landcover.mss
  • Adding localconfig.js to gitignore
  • Proposal for design goals and guidelines - part 2
  • Use json.dumps() for yaml2mml.py
  • Mention that hstore should be installed
  • Increase strength of tertiary/residential/unclassified casing
  • mention compound paths for icons
  • Clean up bus_stop SVG
  • Add fitness_centre with the same rendering as sports_centre
  • Render greenhouse buildings as light brown
  • Adding rendering of landuse=plant_nursery
  • Switch to Lua transforms and change database schema
  • Junction names for areas
  • preview.png update instructions for a new release
  • Adding icon for amenity=arts_centre
  • Add area rendering for amenity=doctors
  • Unification of major buildings
  • Explain that the cartography is covered by the license
  • Prepare for amenity linespacing control
  • Implement unpaved roads.
  • Add halo to roads on z8-11
  • Do not render link roads until z12
  • major rewrite of amenity-points
  • Adjust nodejs version for Travis
  • use variables in font definitions
  • remove deprecated and redundant layer name attribute
  • Render “surface” tag on roads with a pattern
  • Docker development environment
  • Docker.md improvements, requirements and troubleshooting
  • toll booth symbol
  • Adding rendering for historic=wayside_shrine
  • New icon for shop=funeral_directors
  • Adding rendering for amenity=waste_disposal
  • Add halo to roads on z6 and z7
  • Render maritime admin boundaries less prominently
  • Adding natural and semi natural areas to use cases
  • Render place names for polygons if no point exists for area
  • Reduce label clutter on entrances
  • Adding rendering for amenity=parking_entrance [WIP]
  • Dropping subpixel accuracy for areas
  • [WIP] Rewrite roads layers
  • Bring lightness of farmland color again in line with other landuse
  • Render place names from both points and polygons
  • Adding area rendering for amenity=bus_station
  • Adding place=square name rendering [WIP]
  • Adding diferent types of towers [WIP]
  • Adding rendering for amenity=police and amenity=fire_station areas
  • WIP Improve low-zoom levels
  • Make military=danger_area font dark pink and slanted
  • Give oceans outline and simplify shapefiles on z0-7
  • Render offices as dots + names
  • Improve country/state label rendering
  • Move amenity=toilets to higher zoom levels
  • Uniformize swamp rendering with forest/wood (fixes #1920)
  • Simplify (generalize) admin borders
  • Render maritime borders differently
  • Fix repetition of high-zoom admin/nature reserve labels
  • Fix duplicate key in linestring_values table
  • Adding rendering for historic=castle [WIP]
  • Making gardens to use grass color with plant nursery pattern
  • Adding rendering for amenity=parking_space [WIP]
  • Change label colour of private parking
  • WIP: dashed unpaved.
  • Issue #3067 Adding amenity shower icon
  • Issue #2996 Adding amenity bbq icon
  • sort linestring_values in lua
  • [WIP] Issue #1697 Support for craft
  • Add specific rendering for shop=bed
  • issue #1651 ditch and drain text is not offset
openstreetmap-carto list of languages used
More projects by gravitystorm View all
Other projects in CartoCSS
Powered by Autocode - Instant Webhooks, Scripts and APIs
Autocode logo wordmark