More new colors


I made some more high impact color changes to the alternative-colors style i want to quickly discuss here.

Farmland coloring

First i changed the farmland color. Farmland was is OSM-Carto rendered for a long time with a fairly dark brown tone. This looked odd in particular in contrast to the brighter urban landcovers. Since farmland covers pretty large areas in regions with intensive agricultural use a brighter color makes more sense. The color was therefore changed into something significantly brighter several years ago.

This was a big improvement but maintained the oddity of using a brown color for something vegetation related.

The problem is that in the bright color domain you have relatively little room for multiple distinct colors. Therefore the color had to be pretty strong to be discernible from the other bright colors which was something many people also disliked.

The solution i implemented now is essentially a color swap (plus some tuning) of the farmland color and the education/hospital (societal_amenities) color. This makes quite a lot of sense because of the similarity rule (that features similar in meaning and purpose should use similar colors and those different in meaning and purpose different colors). This is a bit of a disentanglement of area color use in the style.

farmland colors in different OSM map styles

the new farmland color – click to see on larger area

I had contemplated this change for quite a while already but originally was not so satisfied with the result. With some tuning and some time for getting used to it i now however think this works quite well.

Road colors

With the road colors i implemented what is essentially a shift of the road classes by one downwards and extrapolation of a new color for motorways at the top extending the existing scheme.

A bit of background for that as well: Back when the current road color scheme in OSM-Carto was developed there were essentially two major constraints:

  • The colors that could be used were the red-orange-yellow-white progression that had already been used for roads previously (plus the green and blue colors we wanted to stop using for roads). It was not possible to go beyond a red tone in hues since that would have led to confusion with the purple boundaries at low zoom levels.
  • The color differences between the individual classes had to be large enough to be able to reliably distinguish between them.

These constraints meant the number of distinct colors had to be reduced to five (red, dark orange, bright orange, yellow, white) and tertiary roads lost their distinct color.

With purple not being used for boundaries any more in the alternative-colors style i can lift the first constraint and extend the color palette to purple and move back to six road colors.

the road color scheme in OSM-Carto (top) and here (bottom)

Here is how this looks like practically at various zoom levels.

z14 – click for larger area

z13 – click for larger area




I also updated the low zoom rendering demo with the new road color scheme and updated data.

Update: Based on the remark by Ilya in the comments below i adjusted the color calculation script to limit the darkening of the motorway color. This makes motorways somewhat brighter than in the samples above, in particular at the lower zoom levels. You can see this in the samples in the readme and in the low zoom demo.


  1. To me motorways now look dangerously close to black railways. You can notice that on the bottom part of the Saint Petersburg map. Maybe it’s because I’ve become used to bright colors of OSM Carto, but dark roads look worse to me.

    • I see your point. This is obviously a matter of the display device and the viewing conditions to some extent.

      The current road color script uses a linear progression in both hue and lightness so to maintain the same colors for trunk-tertiary motorway has to be darker than it would be ideally. But limiting the progression in lightness at the bottom would probably be a good idea, at least for the low zoom version without casing.

    • Limiting the darkening works quite fine – see here.

      Technically this is a bit of a hack – ideally you would create a curve in Lch color space and perform constant deltaE interpolation along this curve. But that would be quite a bit of work to implement.

  2. Looks like a sensible improvement to me. Good work.

  3. I don’t see pink or violet as proper colours for roads. Anyway, I think that road colors should be made more bright to be more prominent.
    Some time ago, I’ve made a comparsion of roads colours between different styles and Osm-carto:

    There are some Photoshop mock-ups with proposed colours:

    • Use of colors between red and blue for roads is not that uncommon in maps – the British OS maps use a strong rose color, significantly more purple than the current OSM-Carto motorway color. Bing maps uses violet tones for motorways and major roads and the Thunderforest Landscape style universally uses lavender tones for roads.

      Of course anyone is free to like or dislike any combination of colors but there is nothing inherent to roads or even a broadly accepted tradition in cartography that speaks against purple roads.

      The constraints of possible colors for roads in OSM-Carto were discussed pretty extensively back when Mateusz developed the current road colors.

  4. Thank you. I believe getting these changes in OSM-Carto would help myself and fellow mappers to more clearly see the distinction between tertiary and unclassified/minor/residential roads. The lighter, slightly greenish farmland/cropland color also makes much more sense as a subclass of “vegetated areas”; lighter than heath or meadow but still more natural appearing. Seeing that meadow, hayfields, pasture and crops can be interchanged on many types of farms, it makes sense that the rendering should be more similar.

Leave a Reply

Required fields are marked *.

By submitting your comment you agree to the privacy policy and agree to the information you provide (except for the email address) to be published on this blog.