Who gets to walk? Disability and India’s cities

Credit: Mathias Reding / Unsplash

A legal right to walk means little if the pavement is unusable.

On June 19, 2026, India’s Supreme Court declared that walking on a safe, demarcated footpath is a fundamental right. The judgment linked this right to constitutional guarantees of freedom of movement, expression, assembly, association, life, and liberty. It also charged urban authorities, municipalities, and village councils with building, maintaining, and protecting pedestrian infrastructure.

The ruling followed the death of a five-year-old child who was struck by a tanker truck while walking to school in an area without safe pedestrian spaces. It is a powerful correction to decades of prioritizing motor vehicles over people in planning. But its human-rights value will depend on one question: who does the judgment imagine as the people who walk it aims to protect?

If “walking” describes only the movement of able-bodied pedestrians, the ruling will reproduce an existing system of exclusion. Instead, the right ought to encompass accessible mobility in general: the ability to reach work, education, health care, transportation, public services, and community life safely, whether a person walks, uses a wheelchair or cane, moves slowly, or needs another person’s support.

A footpath can exist and still exclude

A pavement is not accessible simply because it appears on a municipal map. A high curb can put it out of reach for wheelchair users. Blocked tactile paving can lead a blind pedestrian into traffic. Broken surfaces and sudden level changes can endanger older people or those with dyspraxia. A route without places to rest may be unusable for would-be travelers with chronic pain or fatigue.

Research supports what disabled people have long reported. A 2024 study found that standard measures of pedestrian accessibility often assume that all users have the same needs. When researchers considered the unique needs of children, older people, women, and wheelchair users separately, they found markedly different patterns of access. Another study involving 408 disabled people found that poor pavement conditions, obstacles, road work, and weak local governance did more than delay journeys. Enduring barriers changed travel habits, reduced trust in public space, and deepened patterns of exclusion.

This is a human-rights issue because streets are the first link in the chain of access. An accessible school, hospital, or polling station has limited value if the route to it is unsafe. The World Health Organization estimates that 1.3 billion people, or one in six people globally, experience significant disability. Add older people, children, pregnant people, people recovering from illness, and their caregivers into the equation, and it becomes abundantly clear that accessible streets are a broad public need, not a niche demand.

India already has the legal tools

This spring was not the first time India’s Supreme Court considered the right to walk. In May 2025, it directed Indian states and territories to develop policies for unobstructed, well-maintained, and disability-friendly footpaths.

India's Rights of Persons with Disabilities Act, 2016 requires equality, reasonable accommodation, and accessibility. It explicitly defines environmental, institutional, structural, and other barriers to access and directs governments to provide accessible roads and transportation. India has also adopted national standards for universal accessibility. At the international level, article 9 of the United Nations Convention on the Rights of Persons with Disabilities requires equal access to roads, transportation, and public facilities.

The legal infrastructure for accessibility exists; the problem is fragmented implementation. Road agencies, transportation bodies, utility providers, police, and municipal authorities often work without coordination or shared systems of accountability. A footpath may be rebuilt and then excavated to install cables underground. A ramp may lead directly into a movement-obstructing pole. Tactile paving may end at an open drain. Accessibility fails when each agency completes its own task and no one takes responsibility for the whole journey.

Phased implementation can turn law into practice

Indian cities cannot repair every street at once. But that practical constraint should shape implementation, not postpone it indefinitely, and a phased approach can help overcome logistical challenges.

The first phase of implementation should address immediate dangers: broken concrete slabs, open drains, illegal vehicle parking, construction waste, and obstacles placed by public agencies or private actors. Authorities should protect continuous clear paths and establish safe crossing points where pedestrian routes encounter road traffic. These changes are basic maintenance, not costly redesigns.

The second phase should create complete accessible routes around hospitals, schools, public transportation hubs, courts, markets, public offices, toilets, and emergency shelters. These routes need curb ramps, tactile guidance, and complementary systems of signals that are audible and those that are accessible to individuals with hearing loss. The paths should be adequately wide and possess sufficient seating, lighting, drainage, and shade.

The third phase should prevent the imposition of new barriers. Accessible design must become a condition of public procurement, road contracts, and planning approval. Cities should publish ward-level access audits and repair timelines. Disabled people and disability advocacy organizations must be invited to participate in inspections and bring their lived expertise to the evaluation of streets deemed technically compliant on paper.

Enforcement of accessibility requirements and pedestrian rights must also avoid turning into an excuse to punish informal workers. India’s Street Vendors Act protects livelihoods while regulating vending and providing for local vending committees. Cities should create clear walking zones and planned vending spaces instead of selectively removing vendors while tolerating parked cars, utility boxes, and other commercial encroachments.

A task that grows more urgent by the day

Climate change makes this work more urgent. As I have argued previously, extreme heat already disproportionately threatens disabled people’s rights to health, mobility, and safety. A footpath without shade may be unusable during a heatwave; poor drainage overwhelmed by heavy rain can maroon wheelchair users. Accessible routes to water, clinics, transportation, and cooling spaces are a key part of climate adaptation.

India’s Supreme Court has converted pedestrian infrastructure from a planning preference into an enforceable public duty. The state must now ensure that “the right to walk” does not exclude people who move differently. The right will become real only when streets provide safe routes into public life for everyone.

Error Occurred While Processing Request The web site you are accessing has experienced an unexpected error.
Please contact the website administrator.


The following information is meant for the website developer for debugging purposes.
Error Occurred While Processing Request

Error Executing Database Query.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') order by start_date desc limit 4' at line 11
 
The error occurred in C:/websites/openglobalrights.com/wwwroot/single/index.cfm: line 3033
Called from C:/websites/openglobalrights.com/wwwroot/single/index.cfm: line 3013
Called from C:/websites/openglobalrights.com/wwwroot/single/index.cfm: line 3011
Called from C:/websites/openglobalrights.com/wwwroot/single/index.cfm: line 2353
Called from C:/websites/openglobalrights.com/wwwroot/single/index.cfm: line 1597
Called from C:/websites/openglobalrights.com/wwwroot/single/index.cfm: line 1393
Called from C:/websites/openglobalrights.com/wwwroot/single/index.cfm: line 1
Called from C:/websites/openglobalrights.com/wwwroot/index.cfm: line 11
Called from C:/websites/openglobalrights.com/wwwroot/index.cfm: line 1
Called from C:/websites/openglobalrights.com/wwwroot/who-gets-to-walk-disability-and-indias-cities/index.cfm: line 1
Called from C:/websites/openglobalrights.com/wwwroot/single/index.cfm: line 3033
Called from C:/websites/openglobalrights.com/wwwroot/single/index.cfm: line 3013
Called from C:/websites/openglobalrights.com/wwwroot/single/index.cfm: line 3011
Called from C:/websites/openglobalrights.com/wwwroot/single/index.cfm: line 2353
Called from C:/websites/openglobalrights.com/wwwroot/single/index.cfm: line 1597
Called from C:/websites/openglobalrights.com/wwwroot/single/index.cfm: line 1393
Called from C:/websites/openglobalrights.com/wwwroot/single/index.cfm: line 1
Called from C:/websites/openglobalrights.com/wwwroot/index.cfm: line 11
Called from C:/websites/openglobalrights.com/wwwroot/index.cfm: line 1
Called from C:/websites/openglobalrights.com/wwwroot/who-gets-to-walk-disability-and-indias-cities/index.cfm: line 1
3031 : <cfelseif get_related_content.recordcount eq 4>limit 0
3032 : <cfelseif get_related_content.recordcount eq 5>limit 0
3033 : <cfelseif get_related_content.recordcount gt 5>limit 0
3034 : <cfelse></cfif>
3035 : </cfquery>

SQLSTATE   42000
DATASOURCE   openglobalrights_utf
VENDORERRORCODE   1064
SQL    select distinct(c.id), c.url as c_url, c.language_id, c.page, c.start_date, c.page_title, author.name as author_name, author.url as author_url, a1.name as coauthor1_name, a1.url as coauthor1_url, a2.name as coauthor2_name, a2.url as coauthor2_url, a3.name as coauthor3_name, a3.url as coauthor3_url from content_topic ct, content c inner join author on c.author_id = author.id left join author a1 on c.coauthor1_id = a1.id left join author a2 on c.coauthor2_id = a2.id left join author a3 on c.coauthor3_id = a3.id where language_id = 1 and c.start_date <{ts '2026-09-15 00:00:00'} and c.id != 5774 and c.id = ct.content_id and author_id > 1 and ct.topic_id in () order by start_date desc limit 4
Resources:

Browser   Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Remote Address   216.73.217.88
Referrer  
Date/Time   16-Sep-26 04:19 PM
Stack Trace
at cfindex2ecfm1127481234._factor49(C:/websites/openglobalrights.com/wwwroot/single/index.cfm:3033) at cfindex2ecfm1127481234._factor50(C:/websites/openglobalrights.com/wwwroot/single/index.cfm:3013) at cfindex2ecfm1127481234._factor53(C:/websites/openglobalrights.com/wwwroot/single/index.cfm:3011) at cfindex2ecfm1127481234._factor55(C:/websites/openglobalrights.com/wwwroot/single/index.cfm:2353) at cfindex2ecfm1127481234._factor56(C:/websites/openglobalrights.com/wwwroot/single/index.cfm:1597) at cfindex2ecfm1127481234._factor74(C:/websites/openglobalrights.com/wwwroot/single/index.cfm:1393) at cfindex2ecfm1127481234.runPage(C:/websites/openglobalrights.com/wwwroot/single/index.cfm:1) at cfindex2ecfm389513140._factor31(C:/websites/openglobalrights.com/wwwroot/index.cfm:11) at cfindex2ecfm389513140.runPage(C:/websites/openglobalrights.com/wwwroot/index.cfm:1) at cfindex2ecfm802351454.runPage(C:/websites/openglobalrights.com/wwwroot/who-gets-to-walk-disability-and-indias-cities/index.cfm:1) at cfindex2ecfm1127481234._factor49(C:/websites/openglobalrights.com/wwwroot/single/index.cfm:3033) at cfindex2ecfm1127481234._factor50(C:/websites/openglobalrights.com/wwwroot/single/index.cfm:3013) at cfindex2ecfm1127481234._factor53(C:/websites/openglobalrights.com/wwwroot/single/index.cfm:3011) at cfindex2ecfm1127481234._factor55(C:/websites/openglobalrights.com/wwwroot/single/index.cfm:2353) at cfindex2ecfm1127481234._factor56(C:/websites/openglobalrights.com/wwwroot/single/index.cfm:1597) at cfindex2ecfm1127481234._factor74(C:/websites/openglobalrights.com/wwwroot/single/index.cfm:1393) at cfindex2ecfm1127481234.runPage(C:/websites/openglobalrights.com/wwwroot/single/index.cfm:1) at cfindex2ecfm389513140._factor31(C:/websites/openglobalrights.com/wwwroot/index.cfm:11) at cfindex2ecfm389513140.runPage(C:/websites/openglobalrights.com/wwwroot/index.cfm:1) at cfindex2ecfm802351454.runPage(C:/websites/openglobalrights.com/wwwroot/who-gets-to-walk-disability-and-indias-cities/index.cfm:1)

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')
order by start_date desc
limit 4' at line 11
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:395)
	at com.mysql.jdbc.Util.getInstance(Util.java:370)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1038)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2793)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2742)
	at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:878)
	at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:986)
	at coldfusion.server.j2ee.sql.JRunStatement.execute(JRunStatement.java:359)
	at coldfusion.sql.Executive.executeQuery(Executive.java:1451)
	at coldfusion.sql.Executive.executeQuery(Executive.java:1201)
	at coldfusion.sql.Executive.executeQuery(Executive.java:1131)
	at coldfusion.sql.SqlImpl.execute(SqlImpl.java:406)
	at coldfusion.tagext.sql.QueryTag.executeQuery(QueryTag.java:1059)
	at coldfusion.tagext.sql.QueryTag.doEndTag(QueryTag.java:688)
	at cfindex2ecfm1127481234._factor49(C:\websites\openglobalrights.com\wwwroot\single\index.cfm:3033)
	at cfindex2ecfm1127481234._factor50(C:\websites\openglobalrights.com\wwwroot\single\index.cfm:3013)
	at cfindex2ecfm1127481234._factor53(C:\websites\openglobalrights.com\wwwroot\single\index.cfm:3011)
	at cfindex2ecfm1127481234._factor55(C:\websites\openglobalrights.com\wwwroot\single\index.cfm:2353)
	at cfindex2ecfm1127481234._factor56(C:\websites\openglobalrights.com\wwwroot\single\index.cfm:1597)
	at cfindex2ecfm1127481234._factor74(C:\websites\openglobalrights.com\wwwroot\single\index.cfm:1393)
	at cfindex2ecfm1127481234.runPage(C:\websites\openglobalrights.com\wwwroot\single\index.cfm:1)
	at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:244)
	at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:446)
	at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2795)
	at cfindex2ecfm389513140._factor31(C:\websites\openglobalrights.com\wwwroot\index.cfm:11)
	at cfindex2ecfm389513140.runPage(C:\websites\openglobalrights.com\wwwroot\index.cfm:1)
	at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:244)
	at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:446)
	at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2795)
	at cfindex2ecfm802351454.runPage(C:\websites\openglobalrights.com\wwwroot\who-gets-to-walk-disability-and-indias-cities\index.cfm:1)
	at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:244)
	at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:446)
	at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65)
	at coldfusion.filter.IpFilter.invoke(IpFilter.java:64)
	at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:451)
	at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:48)
	at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40)
	at coldfusion.filter.PathFilter.invoke(PathFilter.java:112)
	at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:94)
	at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28)
	at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38)
	at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:58)
	at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)
	at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)
	at coldfusion.filter.CachingFilter.invoke(CachingFilter.java:62)
	at coldfusion.CfmServlet.service(CfmServlet.java:219)
	at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42)
	at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:466)
	at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:197)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:748)