Sitemap

Supabase Blocked in India: The Complete Guide to Fixing Your App

6 min readMar 2, 2026

--

Press enter or click to view image in full size
jiobase.com to fix supabase block in india

Your Supabase app stopped working in India. Here’s exactly what happened, why the usual fixes won’t help, and how to get your app running again for all your users in under 5 minutes.

On February 24, 2026, I woke up to a dead app.

My Supabase-powered project, the one I’d been building for months, was returning ERR_CONNECTION_TIMED_OUT on every single API call. Auth broken. Database unreachable. Realtime gone. Production users in India couldn't do anything.

I wasn’t alone. Thousands of developers across India woke up to the same nightmare.

What Happened

India’s government issued a blocking order under Section 69A of the Information Technology Act. Major ISPs like Jio, Airtel, and ACT Fibernet started DNS-blocking all subdomains under *.supabase.co.

Here’s the frustrating part:

  • supabase.com (the marketing site and dashboard) still works fine
  • *.supabase.co (your actual API endpoint) is blocked

So you can log into the Supabase dashboard, stare at your perfectly healthy database, and watch helplessly as your production app can’t reach it.

The Technical Details

The block works through DNS poisoning. When a user on Jio tries to resolve yourproject.supabase.co, instead of getting Supabase's real IP, their ISP returns a sinkhole IP like 49.44.79.236 (owned by Reliance, not AWS where Supabase actually lives). The connection hangs until it times out.

This affects every Supabase service:

  • REST API (PostgREST) queries
  • Authentication flows
  • File uploads and downloads (Storage)
  • Edge Functions
  • Realtime WebSocket connections
  • GraphQL

The Scale of the Problem

This isn’t a minor inconvenience. India is Supabase’s 4th-largest market globally, accounting for roughly 9% of global traffic. Supabase received approximately 365,000 visits from India in January 2026 alone, growing 179% year-over-year.

Jio alone has 500+ million subscribers. Combined with Airtel and ACT Fibernet, the block potentially affects hundreds of millions of internet users whose apps silently break.

No prior notice was given. No public explanation. No timeline for resolution.

As of today, the block is still active.

Why the Usual Fixes Don’t Work

“Just change your DNS to 1.1.1.1”

This might fix your development machine. But you can’t ask your users to change their DNS settings. If you have 10,000 users on Jio, you now have 10,000 users who can’t use your app. That’s a workaround for one person, not a solution.

Some ISPs are also reportedly using deep packet inspection (DPI) alongside DNS poisoning, which means even changing DNS doesn’t always work.

“Just use a VPN”

Same problem. You can VPN yourself out of the block, but your production app’s end users aren’t going to install Cloudflare WARP just to use your to-do list app.

“Switch to a Supabase custom domain”

Supabase does offer custom domains on paid plans, which would bypass the DNS block. But this requires a paid Supabase plan, DNS configuration, and doesn’t cover all edge cases. If you’re on the free tier like most Indian developers and students, this isn’t an option.

The Real Fix: A Reverse Proxy

The solution is straightforward. Instead of your app talking directly to yourproject.supabase.co (which is blocked), route the traffic through a proxy on a domain that isn't blocked.

Your App  ->  your-proxy.example.com  ->  yourproject.supabase.co
(not blocked) (blocked, but proxy
isn't on Indian ISP)

The proxy lives on Cloudflare’s edge network. Cloudflare Workers domains aren’t blocked. The proxy receives your request, forwards it to Supabase, gets the response, and sends it back. From the ISP’s perspective, your app is just talking to a Cloudflare domain.

Everything works transparently. REST, Auth, Storage, Edge Functions, Realtime WebSockets. Your anon key, service role key, and all Row Level Security policies stay exactly the same.

Option 1: Use JioBase (2 minute fix)

JioBase is a free managed proxy I built specifically for this problem. It handles all the infrastructure so you don’t have to.

Step 1: Sign up at app.jiobase.com

Step 2: Create an app and enter your Supabase project URL (https://yourproject.supabase.co)

Step 3: Change one line of code in your app:

// Before
const supabase = createClient(
'https://yourproject.supabase.co',
'your-anon-key'
);
// After
const supabase = createClient(
'https://your-slug.jiobase.com', // Just change this URL
'your-anon-key' // Key stays the same
);

Step 4: Deploy. Done.

Get Sunith V S’s stories in your inbox

Join Medium for free to get updates from this writer.

JioBase proxies everything: REST, Auth, Storage, Edge Functions, Realtime WebSockets. Your Supabase project doesn’t know the difference. Your users don’t know the difference. Everything just works again.

Option 2: Self-Host a Cloudflare Worker

If you’d rather control the infrastructure yourself, here’s a minimal Cloudflare Worker that does the same thing:

export default {
async fetch(request) {
const url = new URL(request.url);
const SUPABASE_URL = 'https://yourproject.supabase.co';
const target = new URL(url.pathname + url.search, SUPABASE_URL);
    const headers = new Headers(request.headers);
headers.set('Host', new URL(SUPABASE_URL).hostname);
if (request.headers.get('Upgrade') === 'websocket') {
return fetch(target.toString(), { headers, method: request.method });
}
const response = await fetch(target.toString(), {
method: request.method,
headers,
body: request.body,
});
const responseHeaders = new Headers(response.headers);
responseHeaders.set('Access-Control-Allow-Origin', '*');
responseHeaders.set('Access-Control-Allow-Methods',
'GET, POST, PUT, PATCH, DELETE, OPTIONS');
responseHeaders.set('Access-Control-Allow-Headers',
request.headers.get('Access-Control-Request-Headers') || '*');
return new Response(response.body, {
status: response.status,
headers: responseHeaders,
});
},
};

Deploy with:

npx wrangler deploy

Then update your Supabase client URL to point to your Worker’s URL (e.g., https://supabase-proxy.your-account.workers.dev).

Limitations of self-hosting: You’ll need to handle rate limiting, monitoring, and WebSocket edge cases yourself. Cloudflare’s free tier gives you 100,000 requests per day, which is enough for most small to medium apps.

Option 3: Supabase Custom Domain (Paid Plans)

If you’re on a Supabase paid plan:

  1. Go to Project Settings > Custom Domains
  2. Add your own domain (e.g., api.yourdomain.com)
  3. Configure the DNS records Supabase provides
  4. Update your client to use the custom domain

This bypasses the block because traffic goes through your domain, not *.supabase.co. However, this requires a paid Supabase plan and DNS access to your domain.

How to Test if You’re Affected

Not sure if the block is hitting you? Run this in your terminal:

nslookup yourproject.supabase.co

If you see an IP like 49.44.79.236 or any Reliance-owned IP instead of an AWS IP, you're being DNS-poisoned.

You can also test from your browser’s developer console:

fetch('https://yourproject.supabase.co/rest/v1/', {
headers: { 'apikey': 'your-anon-key' }
})
.then(r => console.log('Status:', r.status))
.catch(e => console.log('Blocked:', e.message));

If it times out, the block is active on your network.

FAQ

Is this legal? Can I use a proxy to bypass the block?

Using a reverse proxy is a standard networking practice. You’re not bypassing the block for end users. You’re routing your application’s API traffic through your own infrastructure. This is architecturally no different from putting CloudFront or any CDN in front of your backend.

Will this affect my Supabase security?

No. The proxy is a transparent pass-through. All headers, tokens, and keys are forwarded unchanged. Your Row Level Security policies, auth rules, and API permissions work exactly the same way.

Will there be added latency?

Minimal. Cloudflare has edge nodes in Mumbai, Chennai, and other Indian cities. The proxy adds 1–5ms of overhead, unnoticeable in practice.

What if the block gets lifted?

You can switch back to the direct Supabase URL anytime. If you’re using JioBase, just change one line of code back. Having a proxy in place is also good insurance against future blocks.

Is Firebase also blocked?

There have been reports of Firebase services being affected on some ISPs. If you’re experiencing similar issues with Firebase, the same proxy approach works.

Why I Built JioBase

I’m Sunith, a solo developer from India. When the Supabase block hit, it broke my own production app. I spent a weekend building a Cloudflare Worker proxy to fix it. Then I realized every other Indian developer with a Supabase app was scrambling to do the same thing.

So I turned it into JioBase. A free, managed proxy that anyone can set up in 2 minutes. No infrastructure to manage. No Cloudflare account needed. Just change one URL and your app works again.

It’s open source (AGPLv3), runs entirely on Cloudflare’s edge network, and it’s free because no developer should have to pay to fix someone else’s problem.

If JioBase helps you, consider buying me a coffee. I pay the Cloudflare bills out of my own salary, and every bit of support helps keep the service running for everyone.

Links:

--

--

Sunith V S

Written by Sunith V S

Sunith is an engineer with a soft spot for product building.