Make every match connect. Per-user shared-secret credentials. 1 TB free, 5 TB for $9/month — orders of magnitude cheaper than Twilio.
In a dating or community app, the magic moment is the first call. If it doesn't connect cleanly, the user blames your app and uninstalls. Most production teams discover the hard way that a meaningful share of mobile users sit behind carrier-grade NAT where pure peer-to-peer fails.
ExpressTURN already powers a long list of social and dating platforms — see the customer map on the homepage. The pattern is always the same: free tier covers development and early users; once revenue is coming in, $9/month for 5 TB pays for tens of thousands of call-hours.
Static client-side credentials are fine to start. As you scale, generate per-session credentials server-side. The browser/app gets a short-lived username/credential pair valid for the duration of one call.
// Node.js example — your signaling server
import crypto from 'crypto';
function turnCreds(userId) {
const ttl = 3600; // 1 hour
const expiry = Math.floor(Date.now() / 1000) + ttl;
const username = `${expiry}:${userId}`;
const credential = crypto
.createHmac('sha1', process.env.EXPRESSTURN_SECRET)
.update(username)
.digest('base64');
return {
urls: [
'turn:relay1.expressturn.com:3478?transport=udp',
'turn:relay1.expressturn.com:3478?transport=tcp',
'turns:relay1.expressturn.com:443?transport=tcp'
],
username, credential
};
}
// In your "/api/start-call" route:
res.json({ iceServers: [
{ urls: 'stun:stun.expressturn.com:3478' },
turnCreds(req.user.id)
]});
Why do social and dating apps need a TURN server?
Strangers connect from random networks; many sit behind carrier NAT where pure peer-to-peer fails. TURN is the rescue path.
How does ExpressTURN scale with growth?
5 TB premium covers tens of thousands of relayed call-hours. Beyond that, contact us for custom plans.
How do I issue per-user TURN credentials?
Premium accounts get a shared secret; HMAC-sign a username/expiry pair server-side. Each session gets a unique credential.
Will TURN add latency?
Only relayed calls go through TURN; they pick the closest of 20+ regions. Direct calls add zero.
Cheap enough to ship, reliable enough to scale.
Sign Up — Free 1 TB/monthRelated: Multiplayer games · PeerJS recipe · vs Twilio