See every text your app sends.
SMSLab is a Twilio-compatible SMS emulator. Point your app's Twilio base URL at it and your texts land on tiled virtual phones you can reply from. Replies come back as real, signed webhooks. No real sends, no trial limits, nothing delivered to a handset.
The problem
Testing SMS flows is painful. Real sends cost money and hit real phones. Twilio's trial blocks custom message text. And you can't easily see what your app sent, or script a reply back through your webhook. So SMS stays the least-tested part of the stack.
How it works
Point your app
Set TWILIO_API_BASE to SMSLab. Same request, same auth, same code.
Watch it land
Your text appears live on a tiled virtual phone, with a full event strip.
Reply back
Type on a phone; SMSLab sends your app a real, signed Twilio-style webhook.
What you get
Tiled virtual phones
Four distinct devices per workspace; messages appear live, links are tappable.
Twilio-compatible API
The real Messages.json endpoint, basic auth, form-encoded, matching error codes.
Real signed webhooks
Replies POST to your app with a valid X-Twilio-Signature your validator accepts.
Live event strip
Every API call in and webhook out, with inspectable request/response payloads.
Your own workspace
Sign up and get an isolated account: SID, token, numbers, webhook URL.
Synthetic and safe
An emulator, not a carrier. Nothing is ever delivered to a real phone.
A drop-in base-URL swap
Your Twilio code doesn't change. Just point it here.
curl -u ACCOUNT_SID:AUTH_TOKEN \ --data-urlencode To=+15552000001 \ --data-urlencode From=+14704678554 \ --data-urlencode Body=hello \ https://smslab.subdot.link/2010-04-01/Accounts/ACCOUNT_SID/Messages.json
Pricing
Everything above, no limits worth mentioning. Paid plans will arrive later; beta workspaces keep working.
Create your workspace