Fix Supabase Storage Blocked in India
Supabase Storage relies on /storage/v1/ which is blocked by Indian ISPs. Here is what breaks, the impact on your users, and how to fix it with a one-line code change.
What breaks
The ISP block on *.supabase.co prevents all Supabase Storage operations. File uploads fail, file downloads time out, signed URLs cannot be generated, bucket listing returns errors, and image transformations are unreachable. Any feature in your app that depends on file storage - profile pictures, document uploads, media galleries - breaks completely.
Impact on your users
Users experience broken images (placeholder icons where photos should be), failed file uploads with no clear error message, download links that hang indefinitely, and media-heavy pages that load without any media content. Apps that rely heavily on Storage (like file-sharing tools or social platforms) become essentially unusable.
Why Storage is blocked
Indian ISPs (Jio, Airtel, BSNL, ACT Fibernet) are DNS-blocking all subdomains under *.supabase.co following a government order under Section 69A of the IT Act. This means every Supabase service endpoint is unreachable, including the /storage/v1/ path that Storage depends on.
The block is at the DNS level. Your ISP's DNS resolver returns incorrect IP addresses for Supabase domains, causing connections to time out or fail. Supabase itself is fully operational - the block is ISP-specific.
Technical details
Supabase Storage makes HTTP requests (and WebSocket connections for Realtime) to your Supabase project's /storage/v1/ endpoint. When DNS is poisoned:
your-project.supabase.co returns a sinkhole IP or NXDOMAIN/storage/v1/ hang until timeout (10-30 seconds)Affected ISPs
The following ISPs are confirmed to block Supabase Storage (along with all other Supabase services):
Fix Supabase Storage
Route Supabase Storage traffic through an unblocked domain. Your existing code stays almost identical — just swap the URL. Two options:
Self-host your own proxy
Deploy a full-featured proxy on your own Cloudflare Workers account. Free, open-source, under 60 seconds.
npx create-jiobaseGuided setup: enter your Supabase URL, configure CORS, deploy. Supabase Storage + all other services included.
Learn more →Or use JioBase managed
Dashboard with analytics, rate limiting, and automatic updates. Sign up free, add your Supabase project, and swap one URL.
import { createClient } from '@supabase/supabase-js'
// Proxied through JioBase - Storage works identically:
const supabase = createClient('https://myapp.jiobase.com', 'your-anon-key')
// Upload a file
const { data, error } = await supabase.storage
.from('avatars')
.upload('user-123/photo.jpg', file)
// Get a signed URL
const { data: url } = await supabase.storage
.from('avatars')
.createSignedUrl('user-123/photo.jpg', 3600)Deploy and verify
Deploy your updated code and test from a blocked ISP (Jio, Airtel) to confirm Storage operations work through the proxy. Your anon key stays the same. Supabase Storage works identically through the proxy.
What stays the same
When you switch to a JioBase proxy URL, everything except the URL stays identical:
Frequently asked questions
Will large file uploads work through the proxy?
Yes. JioBase streams request and response bodies, so file uploads of any size work through the proxy. Cloudflare Workers handle streaming efficiently without buffering the entire file in memory.
Do signed URLs generated through the proxy work?
Yes. Signed URLs are generated server-side by Supabase and returned through the proxy. The URLs themselves point to your proxy domain, so they remain accessible to your users on blocked ISPs.
Will image transformations work?
Yes. Supabase Storage image transformations (resize, crop, format conversion) are handled server-side by Supabase. The proxy forwards the transformation parameters and returns the processed image.
Fix your Supabase app in under 60 seconds
JioBase routes your Supabase traffic through Cloudflare's edge network. No VPN, no DNS hacks, no code rewrites. One command or one line change.
npx create-jiobase — deploy your own proxy on Cloudflare Workers