From OpenStreetMap Wiki
Jump to navigation Jump to search
License: Apache-2.0
Source code:

CartoCSS is a Mapnik stylesheet pre-processor developed by MapBox and inspired by Cascadenik. The reference parser is written in JavaScript and optimized for large stylesheets. CartoCSS stylesheets are used by TileMill but also usable using the carto executable included in the package.

CartoCSS style for Standard tile layer

Main article: Standard tile layer

CartoCSS is used in the rendering process of the "Standard" map tiles of since August 2013. The "openstreetmap-carto" CartoCSS stylesheet is maintained at Bug reports (e.g. rendering problems of specific object classes) can be raised there (needs a login with a account).


CartoCSS stylesheets differ from MapCSS in a number of ways: the most important being that the underlying data representation is not tied to OSM data or any other datasource. They also aim to expose as much Mapnik functionality as possible, be compilable very quickly, and have advanced features like variables, attachments, and filters that can be gradually applied.

Though CartoCSS stylesheets can work with any data structure, an 'OSM' carto stylesheet based off of one schema, like Imposm or HighRoad, can be swapped with another stylesheet based on the same schema.

Mapbox considers Mapbox GL to be replacement of CartoCSS,[1] despite that CartoCSS is still actively maintained by the community.

MML files

The MML file is a YAML or JSON file containing layer definitions and stylesheet references. It is the central part of a CartoCSS stylesheet.[1]

MML files can be converted to Mapnik XML with the carto command as follows:

carto project.mml > mapnik.xml

assuming that you have installed carto via NPM. Otherwise, if you're using Tilemill you can also use it's bundled carto executable (which can be found in mapbox-tilemill/bin).


The reference parser is written in JavaScript. Other parsers that have been written are:

See Also