Before you read anything else on this page: I emailed HDFC Bank's grievance and accessibility teams with the complete findings and a copy of the AMASAMYA CSV export at the same time as I published this post. This is responsible disclosure, not a shame post. My intent is that these get fixed. If you are on the HDFC Bank web team and want a private walkthrough with a fix pathway for each item, my email is at the bottom of this article.
Why HDFC Bank, and why now
I picked HDFC Bank for the first entry in this weekly public-audit series for four specific reasons. First, HDFC Bank publishes an Accessibility Statement on their own website committing to WCAG 2.1 Level AA. Every finding on this page is therefore a violation of their own stated policy, not just of an external standard. Second, HDFC is a listed entity under the SEBI accessibility mandate, so accessibility is a regulatory requirement on top of a moral one. Third, HDFC is a large private brand with an active reputation management team, so this audit has a realistic chance of reaching someone who can act on it. Fourth, HDFC is not politically loaded the way a government service would be, which means we can talk about the findings on their technical merit without the discussion getting derailed.
The tool
The audit was run using AMASAMYA, the Chrome extension I built and published on the Chrome Web Store. Anyone can install it for free and run the same audit on any website. It runs 24 WCAG 2.2 engines against the active page in about five seconds. I did not manually cherry-pick findings for this post. The findings below are the complete Critical-severity Fail set from the automatic export, in the order the tool produced them.
The three worst findings
1. The "Personal" primary navigation link is essentially invisible
The "Personal" link in the top-level navigation has a colour contrast ratio of 1.00 to 1 against its background. That is not a typo. WCAG 2.2 SC 1.4.3 Contrast (Minimum) requires 4.5 to 1 for normal text at Level AA. A 1.00 to 1 ratio means the link text has effectively the same colour as its background. A sighted user with normal vision cannot see it unless they hover over it. A sighted user with low vision cannot see it under any circumstance. A blind user does not see it either way, but that is not the point. The point is that this is the primary navigation entry for personal-banking customers on a bank's homepage.
2. The Fixed Deposit calculator has two unlabelled number inputs
The Fixed Deposit calculator on the homepage has two inputs, fdTermMonths-Amt and fdTermDays-Amt. Neither has an accessible name. There is no <label for=""> association, no aria-label, no aria-labelledby. When my screen reader lands on either field, it announces just "edit". No context. No indication of whether I should type months, days, an amount, or something else.
The consequence is not academic. A blind customer trying to plan a Fixed Deposit on hdfcbank.com cannot use this calculator. Fixed Deposits are one of the most common Indian banking products. Blocking that transaction is a WCAG 2.2 SC 1.3.1 Info and Relationships failure and a WCAG 2.2 SC 3.3.2 Labels or Instructions failure, both at Level A. Level A means these are the minimum required for any conformance claim at all. Missing Level A is not a "we did not have time" situation; it is a broken product.
3. Six top-level navigation links sit at 1.76 to 1 contrast
The primary navigation links for NRI, HNI, Wholesale, Agri, MSME, and Government Schemes all have a contrast ratio of 1.76 to 1 against their background. Same WCAG 2.2 SC 1.4.3 criterion as finding 1. All six fail. These are not obscure pages tucked in the footer. These are the top-level customer segments of an entire bank. If you are an NRI customer trying to find NRI banking on the homepage, and you have any form of low vision, you cannot see the link that would take you there.
The full findings table
Below is the complete Critical-severity Fail set for hdfcbank.com's homepage, as of the audit run at approximately 9:30 IST on 6 July 2026. Verdict and Severity are omitted from the table because every row is Critical Fail.
| ID | Engine | Element | Criterion | Issue | How to fix |
|---|---|---|---|---|---|
| 0102 | Colour Contrast | <a class="nav_inner_anchor active"> "Personal" |
WCAG 2.2 SC 1.4.3 (AA) | Contrast 1.00 to 1 (foreground rgb 255, 255, 255) against a near-white background. Effectively invisible. | Adjust the active-state foreground or background so the ratio is 4.5 to 1 or higher for normal text. |
| 0103 | Colour Contrast | <a class="nav_inner_anchor"> "NRI" |
WCAG 2.2 SC 1.4.3 (AA) | Contrast 1.76 to 1 (foreground rgb 161, 199, 240). | Use a darker foreground or lighter background to reach 4.5 to 1 or higher. |
| 0104 | Colour Contrast | <a class="nav_inner_anchor"> "HNI" |
WCAG 2.2 SC 1.4.3 (AA) | Contrast 1.76 to 1. | Same fix as 0103. |
| 0105 | Colour Contrast | <a class="nav_inner_anchor"> "Wholesale" |
WCAG 2.2 SC 1.4.3 (AA) | Contrast 1.76 to 1. | Same fix as 0103. |
| 0106 | Colour Contrast | <a class="nav_inner_anchor"> "Agri" |
WCAG 2.2 SC 1.4.3 (AA) | Contrast 1.76 to 1. | Same fix as 0103. |
| 0107 | Colour Contrast | <a class="nav_inner_anchor"> "MSME" |
WCAG 2.2 SC 1.4.3 (AA) | Contrast 1.76 to 1. | Same fix as 0103. |
| 0108 | Colour Contrast | <a class="nav_inner_anchor"> "Government Schemes" |
WCAG 2.2 SC 1.4.3 (AA) | Contrast 1.76 to 1. | Same fix as 0103. This fix cascades: findings 0103 through 0108 likely share a single CSS rule for .nav_inner_anchor. One correction covers six failures. |
| 0159 | Forms | <input id="fdTermMonths-Amt"> |
WCAG 2.2 SC 1.3.1 and 3.3.2 (A) | Number input has no programmatically associated label. Screen reader announces "edit" with no context. | Add a <label for="fdTermMonths-Amt">Months</label>, or aria-label="Months", or aria-labelledby pointing to a visible heading. |
| 0160 | Forms | <input id="fdTermDays-Amt"> |
WCAG 2.2 SC 1.3.1 and 3.3.2 (A) | Number input has no programmatically associated label. | Add a <label for="fdTermDays-Amt">Days</label> or equivalent. |
| 0165 | Links and Buttons | <a class="app-wrap"> |
WCAG 2.2 SC 2.4.4 and 4.1.2 (A) | Link has no accessible name. Announced as "link" with no destination context. | Add visible link text, or if the link wraps an icon only, add aria-label describing where the link goes. |
| 0166 | Links and Buttons | <a class="app-wrap"> |
WCAG 2.2 SC 2.4.4 and 4.1.2 (A) | Link has no accessible name. | Same fix as 0165. Both instances likely share the same component; fix the component once. |
| 0167 | Links and Buttons | <div role="button" class="select-btn"> |
WCAG 2.2 SC 4.1.2 (A) | Custom button (div with role button) has no accessible name. | Add visible text inside the div, or aria-label. Consider replacing the <div role="button"> with a real <button> element while you are there; native buttons get keyboard interaction, focus, and role for free. |
| 0168 | Links and Buttons | <button id="sf-sersend"> |
WCAG 2.2 SC 4.1.2 (A) | Button has no accessible name. Announced as "button" with no purpose. | Add visible button text ("Send", "Submit query", etc.) or aria-label. Given the ID contains "sersend", this is likely a service-send button in a contact form; a screen reader user cannot submit that form. |
Why this matters, in concrete terms
Every finding on this page corresponds to something a real customer of HDFC Bank cannot do today. If you have low vision, you cannot see six of the seven top-level navigation categories. If you are a blind screen reader user and you want to open a Fixed Deposit, you cannot use the FD calculator on the homepage to work out your terms. If you use a screen reader and want to submit a service query, the send button announces as "button" and you have no way to know what it does. These are not theoretical failures. Every one of them has a customer on the other side of it.
HDFC Bank is India's largest private-sector bank by market capitalisation. It has a formal Accessibility Statement committing to WCAG 2.1 AA. It is a listed entity under the SEBI accessibility mandate. It is not a startup that has not gotten around to accessibility yet. It has the resources and the regulatory obligation to fix all 13 of these findings within a fortnight if it chooses to.
What HDFC Bank should do next
- Fix the
.nav_inner_anchorstylesheet rule. That single CSS change closes findings 0103 through 0108 in one pass. - Fix the active-state colour on the "Personal" nav link (finding 0102). This is a separate rule; treat it separately.
- Add
<label>elements to the two Fixed Deposit inputs. Two lines of HTML. Findings 0159 and 0160 closed. - Add
aria-labelor visible text to the four anonymous links and buttons (0165, 0166, 0167, 0168). Ifa.app-wrapanddiv.select-btnare shared components, the fix compounds across every page they appear on, not just the homepage. - Run a follow-up audit with AMASAMYA or any WCAG 2.2 tool and confirm the failures are closed before you write back to the accessibility community.
Estimated engineering effort for a competent front-end team: half a working day. Estimated review time from a QA team with a screen reader user in the room: another half a day. The gap between "we care about accessibility" and "we shipped the fix" here is one working day.
What you can do next
If you work at an Indian bank, insurance company, mutual fund house, or any other SEBI-listed financial entity, run AMASAMYA on your own homepage before someone else does. It is free. It takes five seconds. The link is below.
If you work at HDFC Bank and you want to talk about the findings privately before your team acts on them, my email is akhilesh.malani@gmail.com. I offered your grievance team the same call in this morning's email. The offer stands.
If you are a customer of HDFC Bank who has struggled with the site and this audit describes what you experience: your experience is real, it is not your fault, and you have a right to a working banking service. If you want to raise it formally, HDFC Bank's grievance email is grievance.redressal@hdfcbank.com. Referencing this audit and the specific WCAG success criteria above will make the complaint harder to dismiss.
Responsible disclosure and integrity notes
- Every finding on this page was produced by an automatic export from AMASAMYA. I did not cherry-pick, edit, or reword the technical detail. The CSV file itself is available on request.
- I emailed HDFC Bank's grievance team and customer care lead at the same time as I published this post, with the complete findings CSV attached and an offer of a private walkthrough. The email is timestamped and I have kept a copy.
- The audit is a snapshot of the homepage at approximately 9:30 IST on 6 July 2026. If HDFC Bank ships fixes and one or more findings are closed by the time you read this, that is a good outcome. I will update this post with a "resolved" note against each closed finding as I re-audit.
- I hold no adversarial position toward HDFC Bank. I am a professional accessibility architect and a screen-reader user. My work is to name the gaps and, where possible, help close them.
- The tool I used is open source. Anyone can rerun this audit. Anyone can verify the findings.
Next Monday's audit will name a different Indian brand. If you want to nominate one, my email is above.