Troubleshooting · 7 min read

Supabase Network Connectivity Problems in India: Causes, Diagnosis, and Fix

If your Supabase-powered app suddenly stopped working for users in India, you are not alone. Thousands of developers are seeing timeout errors, failed API calls, and broken WebSocket connections. The Supabase status page may reference "network connectivity problems" in the India region, but the root cause is not on Supabase's end. Here is what is really happening and how to fix it.


The symptoms: what you are seeing

Developers across India are reporting the same cluster of errors. If any of the following look familiar, you are dealing with the same underlying issue:

1

ERR_CONNECTION_TIMED_OUT in Chrome or Brave when your app tries to reach the Supabase API

2

TypeError: Failed to fetch or fetch failed in your JavaScript console

3

WebSocket connections for Supabase Realtime dropping immediately or failing to establish

4

Supabase Auth calls (signUp, signInWithPassword) hanging indefinitely with no response

5

ECONNREFUSED or ETIMEDOUT in Node.js server-side code running on Indian hosting providers

Key observation: The Supabase dashboard at supabase.com loads fine. Only your API calls to *.supabase.co are failing. This is the critical clue.

Root cause: ISP-level DNS blocking, not a Supabase outage

This is not a Supabase infrastructure problem. Supabase servers are online, healthy, and accessible from every country outside India. The real cause is that Indian ISPs are DNS-poisoning all *.supabase.co domains under a government blocking order issued through Section 69A of the Information Technology Act, 2000.

When your application (or your user's browser) tries to resolve a domain like yourproject.supabase.co, the ISP's DNS resolver intercepts the query and returns a sinkhole IP address instead of the real Supabase server. Your app connects to this sinkhole, which silently drops all packets, and your request hangs until it times out.

This is why the Supabase dashboard works but the API does not. The dashboard lives on supabase.com (not blocked), while all project APIs live on supabase.co (blocked).

ISPs confirmed to be blocking Supabase:

  • Jio (Reliance Jio) - approximately 500 million subscribers
  • Airtel (Bharti Airtel) - broadband and mobile
  • ACT Fibernet - metro broadband provider
  • BSNL - also blocking Firebase domains

Common misdiagnoses vs the real problem

Before you spend hours debugging your code, rule out these common wrong assumptions:

What you might thinkWhat is actually happening
"My Supabase API key is wrong"A bad API key returns a 401 status, not a timeout. You are not even reaching Supabase.
"It is a CORS error"CORS errors require the browser to receive a response first. Timeouts mean no response was received at all.
"Supabase is down"Check status.supabase.com. Supabase is online globally. The issue is India-specific ISP blocking.
"My code has a bug"If your code worked yesterday and nothing changed, the ISP likely just rolled out the block in your region.
"My firewall is blocking it"Try from a VPN or ask someone outside India to test. If it works for them, the block is at the ISP level.

How to diagnose: confirm it is DNS poisoning

Run these commands from your terminal to confirm that your ISP is poisoning DNS responses for Supabase domains.

Step 1: Compare DNS results

Use nslookup to query your ISP's DNS and then Cloudflare's DNS. If they return different IPs, your ISP is intercepting the query.

terminal

# Query your ISP's default DNS (likely poisoned):

$ nslookup yourproject.supabase.co

Server: 198.18.0.1

Address: 198.18.0.1#53

Name: yourproject.supabase.co

Address: 49.44.79.236 # Sinkhole IP - NOT Supabase


# Query Cloudflare DNS (returns the real IP):

$ nslookup yourproject.supabase.co 1.1.1.1

Server: 1.1.1.1

Address: 1.1.1.1#53

Name: yourproject.supabase.co

Address: 104.18.x.x # Real Supabase IP

Step 2: Use dig for more detail

The dig command gives you more verbose output, including the authoritative nameserver and TTL values.

terminal

# Compare ISP DNS vs Google DNS:

$ dig yourproject.supabase.co

;; ANSWER SECTION:

yourproject.supabase.co. 300 IN A 49.44.79.236


$ dig @8.8.8.8 yourproject.supabase.co

;; ANSWER SECTION:

yourproject.supabase.co. 300 IN A 104.18.x.x

Step 3: Test with curl

Attempt a direct HTTP request to your Supabase project. If it times out, then force the real IP using --resolve to bypass DNS.

terminal

# This will timeout on blocked ISPs:

$ curl -v --max-time 10 https://yourproject.supabase.co/rest/v1/

* Connection timed out after 10001 milliseconds

curl: (28) Connection timed out


# Bypass ISP DNS by resolving to the real IP:

$ curl -v --max-time 10 \

--resolve yourproject.supabase.co:443:104.18.x.x \

https://yourproject.supabase.co/rest/v1/

HTTP/2 200 # Works when bypassing ISP DNS

If the first curl times out but the second one succeeds, the block is confirmed. Your ISP is returning a fake DNS response for *.supabase.co, and no amount of code changes will fix it.

Why the Supabase dashboard works but the API does not

This is the single most confusing part for developers hitting this issue. You can log into supabase.com, view your project, run queries in the SQL editor, and everything seems fine. But your application cannot reach the API at all.

The reason is straightforward: Supabase uses two separate domains for different purposes.

DomainPurposeStatus in India
supabase.comDashboard, docs, marketing siteNot blocked
*.supabase.coProject APIs, Auth, Storage, RealtimeBlocked by ISPs

The blocking order targets *.supabase.co specifically. The .com domain is unaffected. So you can manage your project but your users cannot use it.

Fixes that do not work for production apps

Every forum thread and Stack Overflow answer suggests these workarounds. They might help you during development, but none of them solve the problem for your end users.

Changing DNS to 1.1.1.1 or 8.8.8.8

This fixes DNS resolution on your machine only. Your end users are still using their ISP's default DNS. You cannot ask every user of your app to change their system DNS settings. Additionally, some ISPs use deep packet inspection (DPI) that blocks Supabase traffic regardless of DNS configuration.

Using a VPN

VPNs add 50 to 200ms of latency per request, cost money, and require every single user to install and maintain one. This is not a viable solution for a production application serving hundreds or thousands of Indian users.

Flushing DNS cache

Running ipconfig /flushdns or equivalent clears your local cache, but your ISP will just return the same poisoned response on the next query. The problem is upstream, not in your local cache.

Switching to another BaaS provider

Firebase is already blocked on BSNL. Other backend services could be targeted next. Migrating your entire backend is a massive effort that does not address the root cause: ISP-level blocking can affect any foreign service at any time.

Waiting for the block to be lifted

Section 69A blocking orders are issued by the government and enforced by ISPs. These blocks have historically persisted for months or years. Waiting is not a strategy for a production application.

The real fix: reverse proxy through Cloudflare

The only production-viable solution is to route your Supabase API traffic through a domain that is not blocked. A reverse proxy sitting on Cloudflare's edge network accepts requests from your users on an unblocked domain and forwards them to Supabase server-side, completely bypassing ISP DNS restrictions.

JioBase is a managed reverse proxy built specifically for Indian developers facing this problem. It runs on Cloudflare Workers across 300+ edge locations, adding only 1 to 5ms of latency. Here is how to set it up:

1

Create a JioBase account

Sign up at jiobase.com/register. The free tier includes 50,000 proxied requests per month.

2

Create a proxy app

Paste your Supabase project URL and choose a slug. You get a proxy URL like myapp.jiobase.com.

3

Swap your SUPABASE_URL

Replace the Supabase project URL in your environment variables with the JioBase proxy URL. No code changes needed beyond the URL swap.

Step-by-step migration: swap one environment variable

The migration requires changing exactly one value in your environment configuration. Here are examples for the most common frameworks.

Next.js

Before (broken on Indian ISPs):

.env.local

NEXT_PUBLIC_SUPABASE_URL=https://abcdefgh.supabase.co

NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOi...

After (works everywhere):

.env.local

NEXT_PUBLIC_SUPABASE_URL=https://myapp.jiobase.com

NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOi... # same key

React (Vite)

Before:

.env

VITE_SUPABASE_URL=https://abcdefgh.supabase.co

VITE_SUPABASE_ANON_KEY=eyJhbGciOi...

After:

.env

VITE_SUPABASE_URL=https://myapp.jiobase.com

VITE_SUPABASE_ANON_KEY=eyJhbGciOi... # same key

Flutter

Before:

lib/main.dart

await Supabase.initialize(

url: 'https://abcdefgh.supabase.co',

anonKey: 'eyJhbGciOi...',

);

After:

lib/main.dart

await Supabase.initialize(

url: 'https://myapp.jiobase.com', // proxy URL

anonKey: 'eyJhbGciOi...', // same key

);

No other code changes required. The Supabase client library sends standard HTTP and WebSocket requests to whatever URL you configure. Auth, database queries, Storage, Realtime subscriptions, and Edge Functions all work identically through the proxy. Your anon key and service role key remain the same.

How the reverse proxy resolves connectivity

Here is the request flow after you switch to the proxy URL:

request-flow.txt
PROXIED FLOW (works on all Indian ISPs):

  User's Browser         ISP DNS         Cloudflare Edge     Supabase
    |                      |                  |                 |
    |--- DNS query -------->|                  |                 |
    |    myapp.jiobase.com |                  |                 |
    |                      |                  |                 |
    |<-- Real CF IP -------|                  |                 |
    |    (not blocked)     |                  |                 |
    |                      |                  |                 |
    |--- HTTPS request ----------------------->|                 |
    |                                         |                 |
    |                              Worker rewrites URL          |
    |                              myapp.jiobase.com ->         |
    |                              abcdefgh.supabase.co         |
    |                                         |                 |
    |                                         |--- forward ---->|
    |                                         |                 |
    |                                         |<-- response ---|
    |                                         |                 |
    |<-- proxied response ------------------|                 |
    |                                                           |

The key insight: Cloudflare's servers resolve *.supabase.co from their own infrastructure, which is not subject to Indian ISP DNS blocks. The request reaches Supabase normally on the server side.

Self-hosted alternative: deploy your own Cloudflare Worker

If you prefer to manage the proxy yourself, you can deploy a basic Cloudflare Worker that forwards requests to Supabase. We provide a free Worker Generator Tool that creates a ready-to-deploy script.

The self-hosted approach works well for simple use cases but does not include WebSocket proxying (needed for Supabase Realtime), analytics, rate limiting, or automatic health checks that the managed JioBase service provides.

For a detailed walkthrough of setting up a self-hosted proxy, see our Cloudflare Workers proxy tutorial.

Frequently Asked Questions

Is this a Supabase outage or an India-specific problem?
It is India-specific. Supabase infrastructure is fully operational globally. The connectivity problem is caused by Indian ISPs (Jio, Airtel, ACT Fibernet) DNS-blocking the *.supabase.co domain under a government directive. You can verify this by checking status.supabase.com or asking someone outside India to test your project URL.
Why does my Supabase dashboard work but my app does not?
The Supabase dashboard is hosted on supabase.com, which is not blocked. Your project's API endpoints live on yourproject.supabase.co, which is blocked. The two domains are separate, and only the .co domain is targeted by the blocking order.
Will changing my DNS to 1.1.1.1 fix this for my users?
No. Changing DNS settings only affects your own machine. Your end users will still be using their ISP's default DNS resolver, which returns the poisoned response. You cannot control the DNS settings of every person who uses your application. A server-side reverse proxy is the only solution that works transparently for all users.
Does the proxy work with Supabase Realtime (WebSockets)?
Yes. JioBase supports full WebSocket proxying. When your Supabase client initiates a Realtime connection, the proxy performs a WebSocket upgrade and maintains a persistent bidirectional connection between the client and Supabase, forwarding frames in both directions with minimal latency.
Is my data safe going through a proxy?
JioBase does not read, store, or log the content of your requests. The proxy forwards requests as-is to Supabase without inspecting payloads. All connections use end-to-end HTTPS. Your Supabase anon key and Row Level Security (RLS) policies remain fully in effect. For additional assurance, you can self-host your own proxy.
How much latency does the proxy add?
Typically 1 to 5 milliseconds per request. JioBase runs on Cloudflare's global edge network with 300+ data centers. The request hits the nearest Cloudflare node, gets forwarded to Supabase, and the response comes back the same way. This is negligible compared to the 50 to 200ms overhead of a VPN, and infinitely better than a complete connection timeout.

Fix your Supabase connectivity in under 60 seconds

Stop debugging network errors that are not your fault. Route through an unblocked domain and get your app working for every user in India.

npx create-jiobase — deploy your own proxy on Cloudflare Workers for free

Sunith VS

Written and verified by

Sunith VS

Building tools that help Indian developers ship without ISP interference. Creator of JioBase.