LevelChatLevelChat
Real-time, unified

One SDK.
Any topology.

Video, voice, and live streaming for modern apps — from 1:1 calls to 50,000-viewer broadcasts. AV1, SVC, and honest pricing, on managed cloud or on your own servers.

No credit card. MIT-licensed SDK. Leave when you want.

What LevelChat is

Not a video site.
An SDK you drop into yours.

We don't host calls — we ship the packages your app calls into. Mint a token on your server, mount the SDK in your client, and the same joinLive shape drives 1:1 calls, meetings, broadcasts, and webinars across every runtime below.

Web
npm i @levelchat/web
  • TypeScript
  • Tree-shakeable
  • Zero deps
iOS
Add via Swift Package Manager
  • Swift 5.10
  • SwiftUI
  • async/await
Android
implementation("ai.levelchat:sdk-android:0.2.0")
  • Kotlin
  • Coroutines
  • Compose
React Native
npm i @levelchat/react-native
  • New arch
  • TurboModules
  • Expo 51+
Flutter
flutter pub add levelchat
  • Dart 3
  • null-safe
  • iOS / Android / web
Headless firstSDKs are MIT — embed anywhereSelf-host or managed cloud — same clientNo vendor lock-in
Trusted by teams building the real-time web

“We migrated from Twilio Video in a weekend. Our bill dropped 74%.”

Pilot quote — public case study coming Q3 2026
What ships by default

Six things most vendors charge extra for.

The surface is small on purpose. Everything below is in every tier, including Free.

SDK

One session object. Every shape.

A 1:1 support call, a 50-person classroom, a 10,000-viewer product launch — all use the same Room, Track, and Participant primitives. Promote a private call to a public broadcast with one API call. No stitching, no vendor-two.

Codecs

Modern codecs. Modern bandwidth.

AV1 and scalable video coding out of the box. Expect 30–40% bandwidth savings over H.264 at the same visual quality. For senders without CPU budget, we re-encode server-side — the cost lives in our data plane, not on your users' phones.

Edge

Sub-400 ms p95, wherever your users are.

Three-tier cascade: mesh for 1:1, regional SFU for rooms, origin SFU for multi-region broadcasts. PoPs in Frankfurt, Helsinki, Nürnberg, São Paulo, Ashburn, Singapore, Mumbai, Tokyo. EU data residency is the default, not a checkbox.

Recordings

Your class is 500 MB, not 3 GB.

Every recording is re-encoded at egress with CRF-23 x264 — or AV1 with the Pro Codec add-on. Same visual quality, 5× smaller files, 5× cheaper to store. Your archive becomes a product, not a cost center.

On-prem

Same binaries. Your choice.

Run LevelChat in our EU cloud with one API key, or helm install levelchat into your own Kubernetes cluster. Exact same Docker images, exact same feature set. Move between them whenever compliance changes. HIPAA BAA, SOC2 Type II, GDPR DPA included.

AI

Transcription, translation, moderation — first-party.

Live captions in 200 languages. Transcripts with diarization. Noise suppression, virtual backgrounds, and AI moderation, all metered per minute, all billed with the rest of your usage. No extra vendor, no extra auth.

Signature surfaces

One SDK. Four surfaces.

The same client.joinLive({…}) call drives every surface below — your app picks the consumer chrome. Tap a tab to see how each topology renders.

app.yourco.com/room/eng-sync
6 participants
Maya Okafor
Ji-Yeon
Alex Park
Dana Herrera
You
Rohit Singh
Keeping audio crisp…
Stylised mocks. The actual embed renders with our SDK — same tile chrome down to the pixel.
How it works

From npm install to live call — under 5 minutes.

  1. 1
    Install the SDK
    Terminal
    npm install @levelchat/react @levelchat/client
  2. 2
    Mint a room token from your server
    TSserver/mintToken.ts
    // Node — mint a scoped room JWT on your server
    import { LevelChat } from "@levelchat/node";
    
    const lc = new LevelChat({ apiKey: process.env.LEVELCHAT_API_KEY! });
    
    export async function mintToken(userId: string, roomId: string) {
      const { token, url, expiresAt } = await lc.rooms.issueToken(roomId, {
        identity: userId,
        displayName: "Alice",
        role: "publisher",
        capabilities: ["publish:camera", "publish:screen", "subscribe:all", "chat:send"],
        ttlSeconds: 600,
        limits: { maxBitrate: 3_000_000, simulcastLayers: 3 },
      });
      return { token, url, expiresAt };
    }
  3. 3
    Mount the room
    TSXapp/call.tsx
    <LevelChatRoom token={token} mode="meeting">
      <VideoGrid />
      <ControlBar />
    </LevelChatRoom>

Every primitive is headless-first. Bring your own UI, or use ours.

Developers

Built for the engineer who reads the changelog.

No toy snippets. Every block below compiles against the shipping SDK and is covered by a doc example.

TSXapp/call.tsx
import { LevelChatRoom, useRoom, useLocalParticipant } from "@levelchat/react";

export function Call({ token }: { token: string }) {
  return (
    <LevelChatRoom token={token} mode="call">
      <LiveVideo />
    </LevelChatRoom>
  );
}

function LiveVideo() {
  const { participants } = useRoom();
  const { toggleCamera, toggleMic } = useLocalParticipant();
  // Render your UI. The SDK handles codec negotiation, SVC, reconnect, and egress.
  return participants.map((p) => (
    <video key={p.id} ref={p.videoRef} autoPlay playsInline muted={p.isLocal} />
  ));
}
Honest comparisons

The same call shape — at a fraction of the egress bill.

Every row below is checked against the vendor's public docs. Where they update, we update — open a PR if you spot something stale.

Embeddable SDK with one API for 1:1 / meeting / broadcast / webinar

Yes:

LevelChat

Same `client.joinLive({...})` for all four topologies — see `/demo`.

No:

Zoom Video SDK

Separate Meeting SDK + Video SDK + Webinar SDK, each with its own auth, room model, and pricing.

Partial:

YouTube Live

Live Streaming API ingests RTMP — no client SDK; you bring your own capture stack.

No:

Twitch

No public embeddable SDK; ingest is RTMP-only via OBS/FFmpeg.

Self-host with no per-minute fees

Yes:

LevelChat

Source-available stack on Hetzner / AWS / k8s. Our license is flat per-tier; no participant-minute meters.

No:

Zoom Video SDK

Cloud-only. Per-attendee-minute pricing on every Video SDK plan.

No:

YouTube Live

Cloud-only. Embed is permitted; running your own ingest infrastructure on YouTube is not.

No:

Twitch

Cloud-only.

AV1 + SVC by default

Yes:

LevelChat

`@levelchat/web` 0.2 ships AV1 with VP9 / H.264 fallbacks and a probe-then-pick step.

Partial:

Zoom Video SDK

Zoom Video SDK supports AV1 since 5.18 but only with WebCodecs; falls back to H.264 in most browsers.

Partial:

YouTube Live

Playback supports AV1; ingest is H.264 only.

No:

Twitch

H.264 ingest only as of 2026.

End-to-end encryption (sFrame / insertable streams)

Yes:

LevelChat

sFrame-ready insertable-streams pipeline on every sender + receiver. Flip on `room.setEncryptionKey()` and frames flow encrypted E2E.

Partial:

Zoom Video SDK

E2EE available on Zoom Meetings; not surfaced through the embeddable Video SDK.

No:

YouTube Live

No E2EE for live streaming (TLS in transit, server-side decoding).

No:

Twitch

No E2EE.

Real-time recording delivered as fMP4 + LL-HLS within 60 s

Yes:

LevelChat

`services/recording` writes lossless fMP4 to your S3 bucket; `services/transcoder` produces LL-HLS / CMAF ladders.

Partial:

Zoom Video SDK

Cloud Recording produces MP4 but with a 5–10 minute post-processing window.

Partial:

YouTube Live

DVR up to 12 h; download requires Studio + manual export.

Partial:

Twitch

VOD generation is asynchronous; no public API for fMP4 + LL-HLS export.

The €13 / mo positioning

AV1 + SVC, on a 13.1 €/mo CPX31 box.

LevelChat is engineered around the assumption that your infrastructure is orders of magnitude cheaper than a hyperscaler. The same SDK that powers our managed cloud runs comfortably on a CPX31 (4 vCPU, 8 GB RAM, 13.1 €/mo) for development and on a CCX23 (4 dedicated vCPU, 16 GB RAM, 25.99 €/mo) for production. Our AV1+SVC pipeline cuts egress against H.264 by 40-60% on the same wire — meaning a Hetzner-priced node actually serves more concurrent participants than an AWS-priced one running its competitors.

Dev node
Hetzner CPX21
3 vCPU · 4 GB
€7.05 / mo
Production node
Hetzner CPX31
4 vCPU · 8 GB
€13.1 / mo
Heavy SFU
Hetzner CCX23 (dedicated)
4 vCPU · 16 GB
€25.99 / mo

Numbers above are the public Hetzner Cloud rates as of May 2026, EU-VAT excluded. See hetzner.com/cloud for current pricing, or our self-host runbook for the per-tier capacity calculator.

Pricing

Predictable pricing. Honest overages.

Two meters, not one: participant-minutes for meetings, viewer-hours for broadcasts. We email you at 75% of any cap before it hits.

  • Free

    $0

    Try LevelChat — small teams, hobby projects, evaluation.

    See details →
  • Starter

    $29/mo

    For teams shipping their first production calls.

    See details →
  • Pro

    $99/mo

    Production-grade SDK, priority support, full feature set.

    See details →
  • Scale

    $499/mo

    High-volume calls, SSO, SLA, audit log.

    See details →
  • Enterprise

    Custom

    Dedicated infra, named CSM, custom contract.

    See details →
See full pricingTry the calculator →Broadcast capacity stacks on top of any tier — see the pricing page for viewer-hour bundles.
Questions

The thirteen things a careful developer asks first.

  • LiveKit is excellent for meetings. LevelChat spans meetings and interactive broadcast (50k concurrent viewers) under one SDK, with recording compression on egress and on-prem parity. We price per dimension so broadcast doesn't inherit meeting-shaped costs.

  • Yes. Use managed cloud with an API key. You'll need a tiny server to mint tokens (10 lines) — never put your API key in the client.

  • Yes. Run the full 24-service stack with one docker compose command (Kubernetes Helm chart also published). Self-host customers get their own Studio admin panel at app.<your-domain>/console — same image we run in our cloud. Licensing is flat per-tier; see /self-host for the pricing.

  • Partly. The 6 client SDK packages (web, react-native, flutter, ios, android, server-node) are MIT — true OSI open source, embed anywhere, any scale. The 14 server services ship under the LevelChat Community License (LCL) — source-available: read it, fork it, audit it, run it free under Community caps (1 room, 5 ppts, no recording). Production above those caps requires a paid license. Each release auto-converts to Apache 2.0 four years after publication. See /licensing for the full text.

  • No — and this is intentional. Your paid Self-Host license lets you embed LevelChat as a feature inside YOUR product (an EdTech platform, a telehealth app, a SaaS), and that product can be sold freely. What the license forbids (LCL §3.2) is operating LevelChat as a service for third parties — white-labelling it as "Acme Video Cloud" and reselling capacity to people who never heard of LevelChat. Each license is bound to one cluster fingerprint, and the heartbeat surfaces lifted licenses within minutes. If you want a true OEM/reseller arrangement, talk to sales — that's an Enterprise-tier addendum, not a standard Self-Host license.

  • Yes. The SDK ships sFrame-ready insertable-streams transforms on every sender and receiver. Call room.setEncryptionKey() and frames flow encrypted E2E — the SFU forwards opaque payloads it can't decode. Available on every tier including self-host Pro.

  • Default region is EU (Frankfurt). Pick region: "eu" when you create a room and no packet leaves the EU. We sign a GDPR DPA at contract time. Our managed cloud runs primarily on Hetzner in Germany and Finland.

  • We sign a BAA on the Scale and Enterprise tiers. PHI is never logged; recordings are encrypted at rest (customer-managed KMS on Enterprise).

  • Two meters — participant-minutes for meetings, viewer-hours for broadcasts. Both have generous bundled amounts per tier, and overages are published per unit. We email you at 75%, 90%, and 100% of any cap.

  • Yes. npx levelchat migrate twilio scans your repo, finds twilio-video imports, and emits a diff PR. Twilio's EOL is December 2026; our tool is free whether you pick us or not.

  • AV1 + SVC by default for cameras and screen share. H.264 fallback is negotiated automatically for older clients. We re-encode server-side for low-power senders, so your users don't pay the AV1 CPU cost.

  • Up to 50,000 concurrent viewers per room on our standard tiers. Enterprise can go higher with multi-CDN fan-out.

  • The same Room, Track, and Participant primitives work whether you're doing a 1:1 support call, a 50-person classroom, or a 10k-viewer product launch. You can promote a call to a broadcast with room.promote("broadcast") mid-session.

Start building

Start building. Ship video this week.

No credit card. MIT-licensed SDKs you can fork. Migrate in, migrate out — your data, your choice.

Already using Twilio Video, Agora, or Zoom SDK? Run npx levelchat migrate first.