System Migration

Stop paying for VMs.
Start using real hardware.

Steel.dev routes you through virtual machines with spoofed fingerprints. We route you through authentic mobile and desktop devices. Achieve near-zero detection rates without changing your code.

Supported Frameworks

PlaywrightPuppeteerSeleniumBrowser-UseStagehandCrawl4AI
STATUS: LIVE
iPhone 14 Pro
Residential IP • AT&T
ALLOCATED
Fingerprint:Authentic iOS 16.2
WebGL:Apple GPU
Canvas:Hardware matched
Latency:12ms
STATUS: SPOOFED (STEEL)
Headless Chrome
Datacenter IP • AWS
BLOCKED
Fingerprint:Inconsistent
WebGL:Software SwiftShader
Bot Score:0.1 (High Risk)

Migrate from Steel.dev in one prompt

Paste this into Claude, ChatGPT, or Cursor to auto-convert your Steel.dev integration to Driver in seconds.

Zero structural changes required.
migration-prompt.txt
# System instructions for LLM:
You are an expert automation engineer. Migrate the provided
script from `steel-sdk` to `@driverdev/sdk`.
Rules:
1. Replace `import Steel from 'steel-sdk'` with `import { Driver } from '@driverdev/sdk'`
2. Change initialization:
From: `const client = new Steel({ apiKey: '...' })`
To: `const driver = new Driver({ apiKey: '...' })`
3. Remove all stealth plugin injections (Driver handles this via real hardware).
4. Update session creation:
From: `client.sessions.create({ proxy: true })`
To: `driver.launch({ hardware: 'mobile', location: 'us' })`

See Driver vs Steel.dev on the same task

Same automation script, same target site (Cloudflare protected). Watch the difference in real time.

driver.dev environment
COMPLETED - 1.2s
> Init real device session... OK
> Navigating to target... OK
> Bypass challenge... SKIPPED (Trusted IP)
> Extracting DOM... OK
> Data parsed. Process finished.
IP Reputation: HighHardware: Authentic
Steel.dev environment
BLOCKED - 12.4s
> Init VM session... OK
> Injecting canvas spoof... OK
> Navigating to target... OK
> Cloudflare challenge detected...
> Attempting solve... FAILED
> ERROR 403: Access Denied.
Datacenter IP FlaggedSpoofed Context Detected
Comparison

Stop paying for VMs.
Start using real hardware.

Stop getting blocked on sites with Steel.dev. Driver routes you through authentic devices to remain unblocked.

Supported Frameworks

PlaywrightPuppeteerBrowser-UseStagehand
DRIVER
Windows 10 Pro
Residential IP • AT&T
ALLOCATED
Fingerprint:Authentic OS
WebGL:Nvidia GPU
Canvas:Hardware matched
Latency:322ms
STEEL.DEV
Headless Chrome
Datacenter IP • AWS
BLOCKED
Fingerprint:Inconsistent
WebGL:SwiftShader
Bot Score:High Risk

Driver vs Steel.dev on the same task

Same automation script, same protected target site. See the difference live.

Driver.dev
COMPLETED - 2.2s
> Init real device session... OK
> Navigating to target... OK
> Bypass challenge... SKIPPED (Trusted IP)
> Extracting DOM... OK
> Data parsed. Process finished.
IP Reputation: HighHardware: Authentic
Steel.dev
BLOCKED - 12.4s
> Init VM session... OK
> Injecting canvas spoof... OK
> Navigating to target... OK
> Cloudflare challenge detected...
> Attempting solve... FAILED
> ERROR 403: Access Denied.
Datacenter IP FlaggedSpoofed Context Detected

Migrate from Steel.dev in one prompt

Paste this into Claude, ChatGPT, or Cursor to auto-convert your Steel.dev integration to Driver in seconds.

Zero structural changes required.
migration-prompt.txt
# System instructions for LLM:
You are an expert automation engineer. Migrate the provided
script from `steel-sdk` to `@driverdev/sdk`.
Rules:
1. Replace `import Steel from 'steel-sdk'` with `import { Driver } from '@driverdev/sdk'`
2. Change initialization:
From: `const client = new Steel({ apiKey: '...' })`
To: `const driver = new Driver({ apiKey: '...' })`
3. Remove all stealth plugin injections (Driver handles this via real hardware).
4. Update session creation:
From: `client.sessions.create({ proxy: true })`
To: `driver.launch({ hardware: 'mobile', location: 'us' })`
The Architectural Difference

Why engineering teams choose Driver

A head-to-head breakdown of what matters for production browser automation.

Feature Component
driver.dev
Steel.dev
01Infrastructure
Real hardware
Virtual Machines
02Fingerprints
Genuine device signatures
Spoofed profiles (inconsistent)
03IP Type
Residential
Datacenter
04Detection Rate
Near-zero (< 0.1%)
High on most targets
05BYO Proxies
Yes (Full support)
Yes
06Framework Support
Playwright, Puppeteer, Selenium
Limited Selenium support
07Geo Coverage
190+ Countries
6 Regions
08Concurrency
Up to unlimited
5-100 based on fixed plan
09CAPTCHA Solving
Built-in (Rarely needed)
Paid add-on required
10Session Duration
1hr default
15m default
The Architectural Difference

Why engineering teams choose Driver

A head-to-head breakdown of what matters for production browser automation.

Feature Component
driver.dev
Steel.dev
01Infrastructure
Real hardware
Virtual Machines
02Fingerprints
Genuine device signatures
Spoofed profiles (inconsistent)
03IP Type
Residential
Datacenter
04Detection Rate
Near-zero (< 0.1%)
High on most targets
05BYO Proxies
Yes (Full support)
Yes
06Framework Support
Playwright, Puppeteer, Selenium
Limited Selenium support
07Geo Coverage
190+ Countries
6 Regions
08Concurrency
Up to unlimited
5-100 based on fixed plan
09CAPTCHA Solving
Built-in (Rarely needed)
Paid add-on required
10Session Duration
1hr default
15m default

Integration — one line, any framework

Connect with Playwright, Puppeteer, or Selenium.

driver.dev (Playwright)
Current
import { chromium } from 'playwright';
async function run() {
// Connect directly to a real mobile device
const browser = await chromium.connectOverCDP(
`wss://connect.driver.dev/v1?api_key=${API_KEY}&device=mobile`
);
const context = browser.contexts()[0];
const page = await context.newPage();
// You appear as a real iPhone user on a residential network
await page.goto('https://bot.sannysoft.com');
await browser.close();
}
Steel.dev (Playwright)
Legacy
import { chromium } from 'playwright';
async function run() {
// Connects to a cloud VM
const browser = await chromium.connectOverCDP(
`wss://connect.steel.dev?apiKey=${API_KEY}`
);
const context = browser.contexts()[0];
const page = await context.newPage();
// Relies on injection scripts to mask the VM
await page.goto('https://bot.sannysoft.com');
await browser.close();
}
Works Native With:PlaywrightPuppeteerSeleniumBrowser-UseCrawl4AIStagehand

Customer Testimonials

See what our customers are saying about our solution.

"

"We were spending hours every week tweaking stealth plugins and rotating proxies on Steel to scrape flight data. Switched to Driver's real hardware endpoint and our block rate went from 14% to 0.02% overnight."

David Park
David Park
Senior Data Engineer, FareTrack
"

"The scalability is unmatched. We scaled from 10k to 10M requests per day without any degradation in performance or success rates. It's been a game changer for our data infrastructure."

Sarah Chen
Sarah Chen
CTO, DataFlow
"

"Finally a solution that just works. The integration was seamless and the support team is incredibly responsive. We've cut our maintenance time by 80%. This is more text here."

Michael Ross
Michael Ross
Lead Developer, ScrapeMaster

Pricing — pay less, get real hardware

Steel.dev charges premium rates for simulated environments. Driver gives you physical hardware access starting free.

Steel.dev (VMs)
Hobby
100 hrs credit
$0
Starter
298 hrs limit
$29/mo
Developer
1,298 hrs limit
$99/mo
Pro
9,980 hrs limit
$499/mo
Paying for software emulators
driver.dev (Real Hardware)

Free Tier

Start building with physical devices instantly.

$0
Access to real browser node pool
Built-in residential IP routing
Zero captcha configuration required

Need dedicated hardware racks? Contact sales for Custom Plans.

Launch browsers with confidence

Real Chrome. Real hardware. Real IPs. One Endpoint.

Launch browsers with confidence

Real Chrome. Real hardware. Real IPs. One Endpoint.