What is AllOrigins?
AllOrigins (allorigins.win) is a free CORS proxy service that allows developers to fetch content from any URL with proper CORS headers. It’s part of a lineage of similar services including AnyOrigin, WhateverOrigin, and various other implementations.
The service works by accepting a target URL, fetching the content server-side, and returning it with Access-Control-Allow-Origin headers that permit browser access from any origin.
How AllOrigins Works
AllOrigins provides two response formats:
// Raw content (returns the actual page content)
const rawUrl = `https://api.allorigins.win/raw?url=${encodeURIComponent(targetUrl)}`;
// JSON wrapper (returns content in JSON structure)
const jsonUrl = `https://api.allorigins.win/get?url=${encodeURIComponent(targetUrl)}`;
const response = await fetch(jsonUrl);
const data = await response.json();
// data.contents contains the actual content
AllOrigins vs CorsProxy.io
While AllOrigins provides a free service, CorsProxy.io offers significant advantages for serious development:
Reliability: AllOrigins has no published uptime SLA and experiences periodic downtime. CorsProxy.io offers a 99.9% monthly uptime commitment on Hobby and 99.99% on Production; Free is best effort.
Performance: AllOrigins runs on limited infrastructure without global distribution. CorsProxy.io uses 300+ edge locations with intelligent caching for sub-50ms response times.
Production Ready: AllOrigins is designed for development use. CorsProxy.io is built for production workloads with proper rate limiting, monitoring, and support.
Feature Comparison
| Feature | AllOrigins | CorsProxy.io |
|---|---|---|
| Free Tier | Unlimited* | 10,000 requests + 1 GB/mo |
| Uptime | None | Plan-specific commitments; Free is best effort |
| Response Time | Variable | <50ms |
| Global CDN | No | Yes |
| Custom Headers | No | Yes |
| POST/PUT Support | Limited | Full |
| Production Support | No | Yes |
*AllOrigins has undocumented rate limits
When to Use Each
Choose AllOrigins if:
- You’re in early development/prototyping
- You have very low traffic requirements
- You don’t need reliability guarantees
- Budget is the only consideration
Choose CorsProxy.io if:
- You’re building production applications
- You need consistent performance
- You want proper support and SLAs
- You need advanced features (custom headers, caching)
Migration Example
Create a free account, copy your API key, and register the domain of the browser app making requests. You can test locally from localhost. Free is browser-only; server-side requests require a paid plan. Follow the first-request guide for domain setup and error diagnosis.
AllOrigins wraps the response in contents. CORSPROXY returns the target response directly:
const target = 'https://jsonplaceholder.typicode.com/users/1';
const params = new URLSearchParams({ key: 'YOUR_API_KEY', url: target });
const response = await fetch('https://corsproxy.io/?' + params);
if (!response.ok) {
throw new Error('HTTP ' + response.status + ': ' + await response.text());
}
const contents = await response.text();
console.log(contents);
Replace YOUR_API_KEY with the key from your account. Run this in your browser app, then confirm a successful response from your deployed domain. The playground checks the request, but does not verify your app’s origin. The Free tier ($0/month) includes 10,000 browser requests and 1 GB per month. Paid plans start at $5/month for Hobby (300 requests/minute); Production is $29/month (3,000 requests/minute). See pricing for monthly allowances and fair use.
