Save 5% every month: use code 5OFFSTORM at checkout
Home / Guides / Slow proxies

Why are my proxies slow, and how do I fix it?

Slow proxies are usually a capacity problem, not a slow network. A browser tab uses around 10 threads, so a 10-thread package is full after one tab and every extra connection waits or fails. Measure one request with and without the proxy, keep total connections under your plan, spread residential work across ports, set sane timeouts, and stop loading what you don’t need.

Updated October 2026Fix proxy errors

“Too slow” is a common complaint, and the classic case is Google Maps or another heavy site in a browser running on the smallest package. Pages hang, tiles load in patches, and the proxy gets the blame. In most of these cases nothing is wrong with the network. The browser simply wants more parallel connections than the plan allows.

Speed through a proxy depends on a short chain: your connection to the gateway, the gateway to the exit IP, the exit IP to the website, and the website’s own response time. Add how many connections you’re allowed at once, and how many your tool tries to open, and you have the whole picture. Each link can be measured in a minute.

This guide shows how to measure first, then fixes the causes in order of how much time they usually cost: thread limits, too much concurrency, residential port sharing, location, timeouts and page weight.

Which Storm plan fits

If a browser is your tool, size by tabs: about 10 threads each, so rotating proxies with 40 threads fit three or four tabs, and 80 threads fit six or seven with room to spare. Bandwidth is unlimited on every plan, so heavy pages don’t cost more; only open connections count. Residential ports exit through home connections, so expect them to feel slower than datacenter IPs and spread the load over more ports instead of piling threads on one.

Rotating proxies (from $14/mo): 700,000+ IPs behind fixed gateway IP:PORTs. New IP on every request, or every 3 or 15 minutes. USA, EU, USA+EU or Worldwide. Unlimited bandwidth on every plan.

Get 40 threads for $39/mo See all rotating proxies plans

Before you start

  1. Log in to the member area and copy your gateway IP:PORTs. They never change; the rotation happens on our side.
  2. Add the public IP of the computer or server that will run your tool under Authorized IPs, click Save, and allow up to 15 minutes before testing. Rotating and residential proxies use IP authentication, so there is no username or password.
  3. Count your threads: the tool’s total open connections must stay within your plan (for example 40 threads on the 40-thread plan).

Speed it up step by step, measure first

  1. Time one request with and without the proxy

    Run the curl timing command below twice: direct, then through the gateway. Compare time_connect (reaching the server or proxy), time_appconnect (TLS done), time_starttransfer (first byte) and time_total. If the direct request is slow too, the website is slow. If only the proxied one is slow, read on. In Chrome, DevTools → Network → Timing shows the same phases per request.

  2. Count threads: browsers first

    One tab uses about 10 threads. On the 10-thread package that’s the whole plan, so a heavy page like Google Maps, which pulls many tiles and scripts at once, queues behind itself. In DevTools, long Queueing or Stalled bars with short download times mean you’re waiting for connections, not for data. Close tabs, or size the plan for the tabs you actually use.

  3. Lower concurrency until speed stops improving

    More threads isn’t always faster. Past your plan’s limit, extra connections fail and get retried, which wastes time. Below the limit, a target site may slow down when it’s hit hard. Run the same job at 10, 20 and 30 workers and keep the number where pages per minute stop rising. That’s your real speed.

  4. Spread residential work over ports

    All threads on a residential port share its one IP and that home connection’s upload capacity. Up to 50 threads per port are allowed, but 5 ports with 10 threads each usually move faster than 1 port with 50. Also plan for rotation: every 5 minutes (minute 1, 6, 11 and so on) open connections can drop, so long downloads should resume or retry.

  5. Pick a location near the target

    Each extra ocean crossing adds round trips. For US sites use a USA gateway, for European sites an EU one. USA+EU mixes both, and Worldwide spreads exits further, which is useful for scraping coverage but can be slower for a single regional site. Run your scraper close to the gateway region too; a server in Asia talking to a USA gateway adds distance before the proxy even starts.

  6. Set timeouts that fail fast

    Without a timeout, one dead connection can hold a worker for minutes. Use a short connect timeout (around 10 seconds) and a longer read timeout (around 30), then retry on a new connection. On residential, retrying after a rotation drop is expected, not a sign of trouble.

  7. Stop downloading what you don’t need

    In headless browsers, block images, fonts and media when you only need text or data, and wait for domcontentloaded instead of every last request. For plain HTTP clients, request only the pages you parse and keep compression on. Fewer requests per page also means fewer threads used.

  8. Still slow? Give support the numbers

    Send your username, the gateway you use, the target site, your software, and the exact error or the curl timing output for one slow request via the contact page. Timings for a direct and a proxied request side by side show us where to look.

Measure and trim

Replace GATEWAY_IP:PORT with your gateway. Run the timing check from the machine that runs your tool.

curl: where the seconds go
FMT='connect:%{time_connect}  tls:%{time_appconnect}  first-byte:%{time_starttransfer}  total:%{time_total}\n'

# direct
curl -s -o /dev/null -w "$FMT" https://www.example.com/

# through the proxy
curl -s -o /dev/null -w "$FMT" -x http://GATEWAY_IP:PORT https://www.example.com/

# big first-byte gap in both  -> the site is slow
# big gap only via proxy      -> threads, distance or a busy residential port
Playwright: skip images, fonts and media
from playwright.sync_api import sync_playwright

SKIP = {"image", "font", "media"}

with sync_playwright() as p:
    browser = p.chromium.launch(proxy={"server": "http://GATEWAY_IP:PORT"})
    page = browser.new_page()
    page.route("**/*", lambda route: route.abort()
               if route.request.resource_type in SKIP else route.continue_())
    page.goto("https://www.example.com/", wait_until="domcontentloaded", timeout=45000)
    print(page.title())
    browser.close()
Python: concurrency sweep to find your best worker count
import time, requests
from concurrent.futures import ThreadPoolExecutor

PROXY = "http://GATEWAY_IP:PORT"
URLS = ["https://www.example.com/"] * 60      # use real pages from your job

def get(u):
    try:
        return requests.get(u, proxies={"http": PROXY, "https": PROXY},
                            timeout=(10, 30)).status_code
    except requests.RequestException:
        return None

for workers in (5, 10, 20, 30):              # stay at or below your plan
    t = time.time()
    with ThreadPoolExecutor(max_workers=workers) as ex:
        ok = sum(1 for c in ex.map(get, URLS) if c == 200)
    print(f"{workers:>2} workers: {ok}/{len(URLS)} ok, {len(URLS)/(time.time()-t):.1f} pages/s")

Reading the timing numbers

Each phase points to a different fix:

  • Slow connect. The path to the gateway is long or congested. Check your own connection and run the job closer to the gateway region.
  • Slow TLS. The tunnel to the site is set up over a long path. Location again, or a new connection per request where a reused one would be faster (see below).
  • Slow first byte, also without the proxy. The site takes its time. Nothing on the proxy side will change that; run more pages in parallel instead.
  • Slow first byte only through the proxy. Too many open connections, a busy residential port, or a site that slows down traffic it doesn’t trust.
  • Long Queueing or Stalled in DevTools. The browser is waiting for a free connection. That’s threads.

Thread math for browsers and Google Maps

Browsers open many connections per page, kept alive for reuse, and through a proxy each one counts as a thread. Rule of thumb: about 10 threads per open tab.

  • 10 threads ($14/mo): one tab, nothing else. Fine for testing, too tight for real browsing.
  • 40 threads ($39/mo): three tabs plus a light script, or four tabs alone.
  • 80 threads ($59/mo): six or seven tabs with headroom.
  • 150 threads ($97/mo): a small browser farm or browsers alongside a scraper.

Map-heavy pages are the worst case because panning and zooming fire off bursts of tile requests. Google also limits automated traffic hard, so keep Google work to no more than a quarter of your threads. If you mainly browse Maps by hand, the fix is more threads per tab, not a different gateway. See rotating proxy plans to size up.

Residential speed: what to expect

Residential IPs are home connections, so each exit is only as fast as that household’s line, and it changes every 5 minutes. They are chosen for acceptance on strict sites, not raw speed. Get the most from them:

  • Use more ports with fewer threads each. 10 ports at 10 threads beat 2 ports at 50 for both speed and blocks.
  • Keep requests small and retries quick; drops at rotation time are normal.
  • Send fast, easy targets through rotating datacenter proxies and save residential ports for the strict ones.

Connection reuse: faster, but watch rotation

Opening a new TLS tunnel for every request costs extra round trips. Reusing connections (a requests Session, keep-alive in Node, or a browser) is faster. The trade-off on the Main gateway: one reused tunnel keeps one exit IP. For speed on friendly sites, reuse. For a fresh IP per request, open new connections and accept the extra handshake time. The Python requests guide shows both.

Common errors and fixes

Pages hang for 20 to 60 seconds, then loadConnections queue behind a full thread limit. Count tabs and workers against your plan and lower them.
ReadTimeout / net::ERR_TIMED_OUT on some requestsOver the thread limit, or a slow site with no read timeout. Set (10, 30) style timeouts and retry on a new connection.
Google Maps loads tiles in patchesOne tab on a small plan. Each tab needs around 10 threads; map panning bursts above that. Use 40 threads or more for browser work.
Residential downloads cut off every few minutesPort rotation every 5 minutes drops open connections. Retry or resume; split large downloads into smaller requests.
Speed falls as you add workersAbove the plan limit, extra connections fail and retry; or the target throttles you. Run the concurrency sweep and keep the best number.
Everything slow, even without the proxyYour own connection or the website. Fix that first; a proxy can’t be faster than the line it rides on.

FAQ

Do proxies slow down my internet?

A little: every request takes an extra hop through the gateway and exit IP. Most of the slowdown people notice comes from too few threads for the work, a far-away location, or heavy pages, all of which you can fix.

Is there a bandwidth limit that slows Storm proxies down?

No. Every plan has unlimited bandwidth. What’s limited is how many connections you can have open at once: threads on rotating plans, ports on residential, proxies on dedicated.

Why is my Storm 10-thread package slow in a browser?

One browser tab uses around 10 threads, so the 10-thread package is full after one tab. It’s meant for testing. For real browser work start at 40 threads.

Are residential proxies slower than datacenter proxies?

Usually, yes. Residential exits are home connections, while datacenter IPs sit on server networks. Choose residential for sites that reject datacenter IPs, not for speed.

Which Storm location is fastest?

The one closest to the website you’re loading: USA for US sites, EU for European ones. Running your own scraper near that region helps too.

Will more threads make my scraper faster?

Up to a point. Below your plan’s limit, more workers help until the target slows down. Above it, connections fail. Measure with a short sweep and keep the best number.

Still have questions? Contact us here. A real person answers.

Related guides

Tool facts checked against the official documentation (October 2026): Chrome DevTools: Network reference (Timing) · curl man page (--write-out) · Playwright: Network (route) · Requests: Timeouts. Storm Proxies facts: our plans page and refund policy.

Unlimited bandwidth. One flat monthly price.

Access is live the moment you pay, and the smallest package of each proxy type has a 24-hour money-back guarantee on your first order.