Improving mapping of minor roads in India


In India we use highway=trunk,primary,secondary,tertiary,residential,living_street,service. highway=unclassified is used, but only to indicate that a road is missing its classification (which is incorrect, since unclassified is for minor roads. highway=road is the proper way to tag that a road doesn’t have a classification). I propose that we introduce unclassified into the road network. In the hierarchy, it would be trunk > primary > secondary > tertiary > unclassified > residential. The main advantage of adding unclassified would be better tagging of industrial areas. Many industrial areas have roads that would best fit under residential roads in the current classification system, but have too much traffic to justify that classification. This is particularly a problem for cycle routing, since cycle routers assume residential roads are safe for cyclists. Further it would help with road classification in larger business parks. Right now with everything tagged as highway=service within business parks, its not clear which roads are driveways around buildings and which are roads to move traffic around the business park.

To summarize:

  1. Tagging industrial roads as highway=residential causes issues with cycle routing
  2. Tagging all private roads as highway=service is confusing and doesn’t properly distinguish roads
  3. Tagging some roads as highway=tertiary would be inappropriate since they don’t offer the level of service expected from a tertiary road (might not be wide enough, lower speed limits, etc.)

Solutions would be

  1. Use unclassified to tag roads that see more traffic than one would expect in a residential road.
  2. Also use it on ways where the road doesn’t see enough traffic to justify a tertiary tag.
  3. Don’t set all roads with access=private to service. service should be reserved for roads that actually provide access to services.

The wiki explains it well: Tag:highway=unclassified - OpenStreetMap Wiki

An example of such tagging - van Houten industriepark: Way: ‪van Houten Industriepark‬ (‪6319904‬) | OpenStreetMap


I would strongly suggest against using highway=unclassified in Urban Areas.

Based on your post, I feel that you are solving one problem by causing another one.

If you have an Industrial road, it shouldn’t be tagged as highway=residential; Maybe highway = tertiary or service is better.

Tagging a road as highway=service does not mean that it is private; That should be left to the access tag

I don’t know what you mean when you say that tagging ‘highway=tertiary’ would be inappropriate?
The expectation of highway classification being some absolute, objective criteria just doesn’t work in our country.

Have you seen most of the National & State Highways in India? I know several within 15 km of me, that are so porthole ridden and narrow, that you can’t cross them comfortably even at 25 km/h

1 Like

highway=service is for driveways, not for streets. It is meant to map roads that provide access to a service (like a fire driveway, a parking isle, or an access road inside a petrol bunk). Its not for tagging minor roads. highway=tertiary generally implies a level of service that many minor roads don’t provide. The road classification<->osm mapping would look like this:

Major arterial - primary
Sub arterial - secondary
Major collector - tertiary
Minor collector - unclassified
Local street - residential
Services - service

Currently we don’t have any tag for minor collectors. Adding highway=unclassified would be inline with how its used in other countries like UK and the Netherlands. The name comes from the term used on UK maps, but it just means minor road. As I said, this classification is more useful for cycle routing, and inside business parks, where we currently incorrectly tag all roads as service (I suspect its borrowed from the apartment complex tagging scheme).

I mean that the road is technically a collector but isn’t designed for high volumes of fast traffic, vs a major collector. This is usually due lots of driveways opening up onto the road or any other design issue.

As an example this way: Way History: 29492366 | OpenStreetMap would be tagged as unclassified - it is wide and allows for more traffic to flow through than a residential road, but at the same time clearly isn’t designed to be a bypass to the signal at the nearby junction. Just upgrading it to tertiary is inappropriate since it isn’t of equal or higher classification to the road next to it. Setting it to residential will incorrectly cause cycle routers to pick this road, despite the fact that it sees a lot of industrial traffic.

Highway classification has nothing to do with the maintenance of the road or its width. An NH is an NH regardless of whether its surface is worse than the surface of the moon. It should always be tagged as highway=trunk. For surface details there’s the surface tag surface=bad, which some routers do respect. A typical 12m wide 2 lane NH will carry more traffic, much faster than a 15m wide minor collector inside a city.

1 Like

highway=unclassified is used primarily to distinguish rural from urban roads. One of my main arguments against using highway=unclassified as a tag for 1st degree collector roads is that it introduces ambiguity.

As for cycle routing, adding bicycle=no would solve the issue, though I would advocate against changing core data to circumvent engineering problems. A smart routing engine should take into consideration land use while routing. If rider safety in industrial areas is a concern, then there should be a provision within the app to allow users to exclude industrial areas from routes, similar to how you would typically get options to avoid highways and tolls.

I wrote a diary on this topic a while back, with my suggestions on ranking and tagging roads: cartofy's Diary | Observations on Indian Roads | OpenStreetMap

1 Like

I’m not seeing how its ambiguous? In both rural and urban contexts it will be above residential roads, and below tertiary roads. No ambiguity at all, and AFAICT its how other countries also use the tag.

bicycle=no implies it is illegal for bicycles to use the path, which is incorrect. It is simply less preferred if alternatives are available.

This is improving accuracy of the data, not circumventing engineering problems.

Landuse does not tell you about the road classification. There can be low traffic residential roads adjacent to industrial lands, and I can point to hundreds of such examples.

The bottom part of this table is precisely what I’m trying to improve. Previously India was following a more UK style scheme, where unclassified sat above residential, and service was used only to tag driveways. This is also what most routers and renderers assume. But recently Indian mapping has decided to switch to this new scheme where unclassified is all but removed, residential is overloaded, and service now takes on part residential role, but only when there’s a gate. Which is actually more confusing. Roads inside gated communities are still residential and should be tagged as such. service should be for driveways and building access roads, and unclassified would be useful when its necessary to distinguish between minor and major collectors.

1 Like

highway=service is for driveways, not for streets. It is meant to map roads that provide access to a service (like a fire driveway, a parking isle, or an access road inside a petrol bunk). Its not for tagging minor roads.

for driveways there is service=driveway, but there is also service=alley which I think would fit to the description „minor road“

Yes, highway=service + service=parking_aisle is tagged on “roads” which allow access to an amenity=parking lot full of parking spaces (and the “roads” between the rows of parking spaces). Similarly, service=drive-through is tagged on the way (also tagged highway=service) representing the pavement yielding access to a drive-through window (like a fast-food restaurant that has such a service).

A scheme which “all but removes unclassified” seems doomed to failure, as unclassified is an excellent choice for a road which is not “classified” tertiary or higher, but neither is it residential (which should really only be used on roads which actually are to or abut residences). If you can, please encourage unclassified in preference to residential if the road is NOT residential. There is a distinction between residential and driveway: the former gives the public access to the (residential) property, the latter is essentially ON the private property and usually continues access (privately, or for deliveries) to the front door, garage or rarely, mailbox.

highway=service is not “automatically” for “minor roads,” as this tag is a broad category of roads which are further denoted with several “combination” service=* tags. (Our wiki is helpful). A service=alley is a quite specific kind of road, not just any “minor road.” However, saying that an unclassified road is “minor” is largely correct in virtually all circumstances I can imagine, so please use tertiary, secondary, primary… for “more major.”


Thank you for the nice explanation @stevea ! @Devdatta @cartofy London and most other cities already use unclassified, even in urban contexts, to mark minor roads: overpass turbo . Using unclassified like this is expected, and will not cause new problems, and more importantly will help with routing in many cases.


The fact that “unclassified” itself is an ambiguous term which is mostly used to describe something that has a lot of unknown’s about its functionality, access, speed, traffic etc. Getting highway = unclassified up on the hierarchy will further cause a lot of disruption across the understanding of OSM contributors and theirs edits.

“unclassified” is called that because its name comes from what older paper maps used to call minor roads, I.e. roads that were not important. There is no confusion in its usage, and it was already used in India before. Its also actively used across the world. OSM being an older project and an international one will always have awkwardly named objects, but that shouldn’t stop us from using them when appropriate.

1 Like

The fact that “unclassified” itself is an ambiguous term which is mostly used to describe something that has a lot of unknown’s about its functionality, access, speed, traffic etc. Getting highway = unclassified up on the hierarchy will further cause a lot of disruption across the understanding of OSM contributors and theirs edits.

Nope. highway=unclassified has been used since the earliest days of OSM to mean “minor road”. Yes, it’s a mildly ambiguous word - like many in OSM are - but people have had ~19 years to get used to it and it hasn’t caused major problems.


Things that “are a road, but we’re not sure what sort” can be mapped as highway=road. There are fewer of them in OSM than there once were, as even poor quality aerial imagery can help distinguish road types. Here are some.

highway = road as OSM describes it, is a temporary tag and such elements until it has been confirmed by some mechanisms such as surveys etc… should not be considered as road. adding such as highway = road will further cause even more confusion as to whether they are part of the road network or not.

1 Like

@SarangK SomeoneElse is only pointing out that we already have a tag for “road which needs to be classified properly”, i.e. highway=road. Removing highway=unclassified from the road network classification, because it might be confused with highway=road, seems unnecessary, especially when its not an issue elsewhere across the world. highway=road will continue to be used in the same way the wiki is describing it.


The mapping of highway=service in India is astonishing:

  • Worldwide 41% of all highway=service are additionally mapped with service=driveway or parking_aisle or alley.

In India this is in less than 2% the case.

  • Extensively frontage roads have been mapped with highway=service. I made now corrections for NH1 to NH50.

  • Urban areas are also special:

In Mumbai City there are 2726 roads with highway=service, but only 122 with additional driveway or parking_aisle of alley.

It seems to me that highway=service is used as a general road classification between unclassified and track (often by MAPWITHAI-mappers).

This is most likely due to the colloquial term for these roads being “service roads”. I try to correct these whenever I spot them.

Many Indian cities are opting to allow private developers to develop large swaths of land - this means many road networks are private, and it isn’t always immediately obvious what the internal road network classification is. Many of these have been tagged with highway=service. I’ve begun slowly retagging these as highway=residential or highway=unclassified around Bengaluru (with appropriate access=*).

Thanks for your help.

There are also thousands of short roads beginning on a NH which are mapped by MAPWITHAI as highway=service. In many cases highway=track (kucha road) is better.