Independent benchmark · August 2026

Oxylabs vs Shifter vs Decodo
Residential Proxy Test

61 real sites. 37,914 total requests. Ramp from 1 to 16 concurrent. Tested against sites with Akamai, Cloudflare, and PerimeterX bot protection — not a neutral CDN.

61 target sites 936 sweep runs 37,914 total requests 200-req IP pool drain × 3 providers Concurrency: 1 / 2 / 4 / 8 / 16

Pool size & IP rotation

Provider Requests fired Unique IPs seen Rotation rate First repeat Countries observed
Oxylabs 200 200 100.0% none in 200 46 countries
Decodo 249 249 100.0% none in 249 49 countries
Webshare (free/10-IP) 200 10 5.0% req 6 6 countries

* Webshare free plan is limited to 10 dedicated IPs by design. A paid residential plan would perform differently. Included here as a reference floor.

Unique IPs per 200 requests — provider comparison

Oxylabs
200 IPs
100%
Decodo
200 IPs
100%
Webshare
5%

Top countries in the global pool

Oxylabs — top 12 countries (200 requests, no country filter)

France
12%
Italy
7%
Ukraine
6%
Turkey
5%
S. Africa
4.5%
Saudi A.
4.5%
Russia
4.5%
Other (38.5%)
Iraq
4%
Romania
3.5%
Nether.
3.5%
UAE
3.5%
Portugal
3%
Jordan, Latvia, Belgium, Morocco, Algeria, Tunisia + 29 more

Decodo — top 12 countries (249 requests, no country filter)

France
10%
Ukraine
7.2%
Morocco
6%
Saudi A.
5.6%
Italy
5.6%
Iraq
5.2%
Turkey
4.8%
Other (55.6%)
Russia
3.6%
UAE
3.6%
S. Africa
3.2%
Portugal
3.2%
Egypt
3.2%
Algeria, Romania, Netherlands, Tunisia, Belarus + 29 more

Both providers show a similar "no-filter" distribution: France dominant, heavy MENA and Eastern Europe presence. Neither delivered US-majority IPs without a country filter. Set an explicit country filter in your proxy config if geographic targeting matters.

Comparison with other providers

Oxylabs
43.4%
43.4%
Shifter
21.1%
21.1%
Decodo *
24.4% *
24.4%

* Decodo: 18/61 sites only (100MB trial cap hit at c1–c4). c8 and c16 data missing. Partial dataset likely overstates performance relative to full 61-site run.

Success rate by protection vendor — Oxylabs

Success rate →
0% 25% 50% 75% 100%
Unprotected
56.0%
Akamai
43.1%
Cloudflare
34.6%
PerimeterX
0.0%
0%25%50%75%100%

Infrastructure success rate

Provider c1 success c2 success c4 success c8 success c16 success Overall
Oxylabs 44.7% 44.0% 43.3% 43.0% 41.8% 43.4%
Shifter 20.4% 19.9% 20.2% 38.4% 37.9% 27.4%
Decodo partial * 24.5% 23.6% 25.1% 24.4%

* Decodo cap hit — c8 and c16 data not available. Shifter c8/c16 jump (20% → 38%) is anomalous and likely reflects the harness picking up sites where Shifter accidentally worked better under load (sessions becoming "warmed").

Overall result breakdown — all requests

Success (200 + HTML) Blocked (challenge / 403 / block page) Timeout / transport error
Oxylabs
42.4%
47.8%
9.8%
Shifter
36.6%
30.5%
32.8%
Decodo *
93% timeouts — cap hit

* Decodo's 93% timeout rate reflects the 100MB cap being hit mid-run — most requests after the cap were transport errors, not site-level blocks. The 4.2% success is from the first 18 sites before the cap.

Success rate vs concurrency

50% 40% 30% 20% 0% c1 c2 c4 c8 c16 Oxylabs Shifter Decodo (partial)

Site-level concurrency cliffs (Oxylabs)

SiteProtectionc1c2c4c8c16Pattern
workopolis100%97.5%100%94.4%20.9%Hard cliff at c16
bestbuy97.5%84.2%85.4%86.9%86.3%Early drop, stable
remote.coAkamai95.0%95.0%86.3%83.1%83.4%Gradual from c4
familydollarAkamai70.0%72.5%68.8%60.0%64.1%Slow drain
amazonAkamai100%100%100%100%100%No cliff
booking.comAkamai100%100%100%100%99.7%No cliff
diceCloudflare100%95.0%98.8%97.5%96.3%Stable

Throughput — requests per second

ConcurrencyOxylabs RPSShifter RPSDecodo RPS
c10.310.180.09
c20.500.220.11
c40.800.330.32
c81.270.50
c161.950.66
At c16 (max tested)
Oxylabs
1.95 RPS
1.95
Shifter
0.66
0.66

Oxylabs delivers 3× the throughput of Shifter at c16. Note this is total requests completed (including blocks) — success throughput is lower. At 43.4% success rate, Oxylabs delivers ~0.85 successful page fetches/sec at c16.

Response time

ProviderMeanMedian (p50)p95Max observed
Oxylabs 1,475 ms 1,190 ms 2,910 ms 7,139 ms
Shifter 1,700 ms 1,209 ms 4,324 ms 6,514 ms
Decodo partial 4,532 ms 3,913 ms 5,507 ms 7,707 ms

Median (p50) latency comparison

Oxylabs
1,190 ms
1,190 ms
Shifter
1,209 ms
1,209 ms
Decodo
3,913 ms
3,913 ms

Oxylabs response time vs concurrency

ConcurrencyMeanp50p95MaxRPS
c11,509 ms1,238 ms2,743 ms3,993 ms0.31
c21,458 ms1,162 ms2,766 ms5,595 ms0.50
c41,473 ms1,157 ms3,045 ms7,354 ms0.80
c81,423 ms1,181 ms2,898 ms8,686 ms1.27
c161,510 ms1,209 ms3,115 ms10,487 ms1.95

p50 is remarkably stable across all concurrency levels — the median node stays around 1.2 seconds. p95 and max grow as concurrency increases, showing the tail degrades under load while the median holds.

Block rate & failure types

Provider Total requests Success Blocked Timeout / error
Oxylabs 37,914 42.4% (16,070) 47.8% (18,137) 9.8% (3,707)
Shifter 28,046 36.6% (10,278) 30.5% (8,568) 32.8% (9,200)
Decodo partial 12,227 4.2% (513) 2.8% (339) 93.0% (11,375)

Oxylabs has a higher block rate than Shifter (47.8% vs 30.5%) but a much lower timeout rate (9.8% vs 32.8%). This tells a different story: Oxylabs gets a clean yes/no from sites — they either let it through or explicitly block it. Shifter stalls and times out more often, suggesting lower exit node reliability or queue saturation.

What the block rate by vendor tells you

Protection vendorSitesSuccessBlockImplication
None / unknown2556.0%35.2%Baseline — rate limits + geo blocks even without bot detection
Akamai Bot Manager1743.1%50.0%Inconsistent — Amazon (100%) and Walmart (0%) are both Akamai
Cloudflare1534.6%58.0%JS challenge is the differentiator — some sites skip it, most don't
PerimeterX40.0%75.1%Complete wall — browser fingerprinting required, IPs irrelevant

Test methodology

Target sites
61 hand-curated sites tagged by bot protection vendor. No CDN proxies. Real pages with real defenses.
Success definition
HTTP 200 with HTML content. Block pages, challenges, and redirect loops counted as failures even if they return 200.
Transport
curl_cffi with Chrome 120 TLS fingerprint. Same client for all providers — results are directly comparable.
Harness
Custom Python harness. 20 sessions × 5 concurrency levels (1, 2, 4, 8, 16). All results in SQLite — no CSV.
Pool drain
200 sequential requests to api.ipify.org per provider. Every egress IP and country recorded. No sampling.
Coming next
Home-IP baseline → per-site lift score. Decodo full 61-site run. 5-min sustained throughput tests.