When Detention Becomes Punishment Before a Verdict

Credit: Hari Sucahyo / iStock

Formally, India’s criminal justice system presumes innocence. However, the structural inaccessibility of police stations, courts, and detention facilities effectively imposes punishment before any verdict is reached for persons with physical, sensory, and/or psychosocial disabilities. This systemic failure violates India’s domestic and international human rights obligations, imposes unequal preconviction suffering, and demands urgent policy reform. This is not a question of sympathy. It is a question of equal treatment under the law.

Inaccessibility as de facto punishment

The pattern is consistent. A person with a locomotor disability facing charges of financial fraud, a person living with Becker Muscular Dystrophy charged in connection with a property dispute, a Deaf person accused in a road rage incident, a wheelchair user facing a domestic cruelty complaint—all enter an institution designed without them in mind. The alleged offences vary; the structural disadvantages faced by those charged do not.

From the moment of police contact, inaccessibility operates as punishment. A visually impaired person navigating a disorderly station may sustain physical harm. A person who uses a wheelchair may be unable to access toilet facilities for hours. A person with an upper-limb difference cannot use the floor as a sleeping surface. These are not incidental inconveniences. These predictable consequences of inaccessible infrastructure fall disproportionately on accused persons with disabilities, all before any evidence is assessed or any verdict is reached.

The disparity intensifies during detention. Based on documented custodial conditions and findings of India’s Supreme Court, the physical harm, effort required to meet basic needs, and health consequences experienced by a person with a disability in a single day in custody can equal that experienced over two to five days by a person without a disability. Materially unequal suffering resulting solely from disability status, and not a judge’s sentence, violates the principle of proportional punishment.

The human rights and legal framework

India’s obligations are clear. As a party to the Convention on the Rights of Persons with Disabilities, India must ensure procedural accommodations at every stage of legal proceedings. The Nelson Mandela Rules prohibit cruel or degrading treatment in detention—a minimum standard breached when inaccessible facilities cause foreseeable harm to persons with disabilities.

Domestically, the Rights of Persons with Disabilities (RPWD) Act, 2016 mandates accessibility and nondiscrimination across public institutions. However, the lack of provisions specific to accused persons with disabilities in both the RPWD Act and India’s criminal procedure codes represents a critical legislative gap. The Supreme Court has flagged the absence of accessibility and basic care standards in Indian prisons and called for guidelines, but binding policy has not followed. The Constitution of India guarantees equality before the law and the right to life and personal liberty and thus provides additional grounds to challenge conditions that impose disproportionate suffering on accused persons with disabilities. Scholarship has increasingly framed this as custodial cruelty at the intersection of disability and structural rights violations.

Intersectionality compounds the problem. Women with disabilities, for instance, face greater barriers. Similar dynamics arise in adversarial proceedings when disability intersects with caste, religion, and age. However, a policy lens focused on disability alone is unable to address these patterns.

What must change

The standards required to remedy this failure already exist. It is implementation that is missing. Four reforms are essential.

First, India’s criminal procedure codes must be amended to mandate disability assessments at the point of first police contact, individualized accommodation plans for persons in pretrial detention, and judicial guidance on the relevance of disability to custodial conditions and sentencing.

Second, all police stations, courts, and detention facilities must meet the accessibility standards legally mandated by the RPWD Act and CRPD and fulfill obligations that are long overdue.

Third, police officers, prosecutors, and judicial officers must participate in training, developed with organizations of persons with disabilities, in disability law and procedural accommodation. Such training must be embedded in core curricula for these professions.

Finally, the National Crime Records Bureau must collect and publish disaggregated data across all stages of criminal proceedings on the disability status of accused persons. Without this information, the scale of violations will remain invisible and unremedied.

A commitment to legal equality

India’s criminal justice system is not merely failing persons with disabilities—it is punishing them, before any court has ruled on their guilt, for characteristics they did not choose. Addressing this failure is not an act of leniency. It honors a commitment to the foundational principle that equal charges must merit equal treatment. The CRPD, the Nelson Mandela Rules, the RPWD Act, and the Constitution of India collectively establish that obligation. The question is whether India’s institutions will meet it—or continue imposing punishment on the unsentenced.

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/when-detention-becomes-punishment-before-a-verdict/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/when-detention-becomes-punishment-before-a-verdict/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-05-13 00:00:00'} and c.id != 5713 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.28
Referrer  
Date/Time   13-May-26 01:09 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 cfindex2ecfm747929101.runPage(C:/websites/openglobalrights.com/wwwroot/when-detention-becomes-punishment-before-a-verdict/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 cfindex2ecfm747929101.runPage(C:/websites/openglobalrights.com/wwwroot/when-detention-becomes-punishment-before-a-verdict/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.GeneratedConstructorAccessor4990.newInstance(Unknown Source)
	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 cfindex2ecfm747929101.runPage(C:\websites\openglobalrights.com\wwwroot\when-detention-becomes-punishment-before-a-verdict\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)