Delphi & C++ Builder WebSocket libraries — comparison guide

A neutral, source-cited survey of the WebSocket libraries available to Delphi and C++ Builder developers in 2026: sgcWebSockets, Indy, ICS, TMS FNC WebSocket, mORMot 2, and stand-alone MQTT libraries. Every feature claim links to the project's own documentation.

Six libraries developers actually use

A one-paragraph summary of each library, with a link to the official documentation. Detailed comparison is in the matrix below.

Indy (Internet Direct)

Indy Working Group / Remy Lebeau · BSD / MPL (open source)

Open-source TCP/UDP/raw-socket library bundled with every recent RAD Studio install. Ships 120+ higher-level protocol clients and servers (HTTP, SMTP, POP3, IMAP, FTP, NNTP, IRC and more) but does not include a native WebSocket client or server — users typically add a third-party WebSocket add-on on top of TIdHTTP / TIdHTTPServer.

Official page

ICS (Internet Component Suite)

François Piette / Magenta Systems Ltd · Free, source-available

Open-source Delphi / C++ Builder networking library by François Piette. WebSocket support was added in ICS V9.0 as TSslWebSocketCli (in OverbyteIcsWebSocketCli) and a server class THttpWSSrvConn on top of the existing ICS web server.

Official page

TMS FNC WebSocket / TMS Sparkle

TMS Software · Commercial

TMS Software offers two relevant products. TMS Sparkle is a cross-platform HTTP client / server framework (also used internally by TMS XData and TMS RemoteDB). TMS FNC WebSocket is a separate VCL + FireMonkey WebSocket client and server pair implementing RFC 6455.

Official page

mORMot 2

Arnaud Bouchez / Synopse · MPL / GPL / LGPL (open source)

Open-source Object Pascal SOA / ORM / MVC framework with an asynchronous HTTP and WebSocket server, REST/JSON, OpenAPI / Swagger, LDAP, DNS, ACME, and cryptography primitives. Delphi server units target Windows only; FPC (Free Pascal) builds the same server code for Linux, BSD, and macOS. Mobile clients are supported on every platform.

Official page

Stand-alone MQTT-only libraries

Various community authors · Varies (typically MIT / BSD / Apache)

A number of single-purpose MQTT clients for Delphi are published on GitHub. They typically cover the MQTT 3.1.1 client side only, do not include MQTT 5.0 server, AMQP, STOMP, or WAMP, and are maintained by individual authors.

Official page

Side-by-side feature comparison

A check () means the project documents native support. A dash () means the project does not provide it natively. A tilde (~) means partial / via add-on / not explicitly documented — see the Sources section for what we could verify.

Protocols, transport, licensing

16 rows
Feature sgcWebSockets Indy (Internet Direct) ICS (Internet Component Suite) TMS FNC WebSocket / TMS Sparkle mORMot 2 Stand-alone MQTT-only libraries
WebSocket Client RFC 6455 client ~
WebSocket Server RFC 6455 server ~
TLS 1.3 TLS 1.3 supported by the provided transport ~ ~
HTTP/2 Client Native HTTP/2 client (RFC 7540 / 9113) ~
MQTT MQTT 3.1.1 / 5.0 client built in ~ ~
AMQP AMQP 0.9.1 / 1.0 client built in
STOMP STOMP 1.0 / 1.2 client built in
WAMP WAMP v1 / v2 client built in
Server push / streaming Long-lived push or streaming connection ~ ~ ~
Auto-reconnect Built-in client auto-reconnect / watchdog ~ ~ ~ ~
per-message-deflate (RFC 7692) WebSocket compression extension ~ ~ ~
Multi-platform Win / macOS / Linux / iOS / Android ~ ~
Commercial use allowed Licence permits closed-source commercial use
Source code available Library source is visible to the developer
Active maintenance Release or tagged activity in last 12–18 months ~ ~
Licence model Licence type Commercial BSD / MPL (open source) Free, source-available Commercial MPL / GPL / LGPL (open source) Varies (typically MIT / BSD / Apache)
Documented native support Not provided natively ~ Partial / via add-on / unverified

Honest fit for each library

Every library here has a real audience. The right pick depends on your protocol breadth, your licence preference, and your existing dependencies.

Choose sgcWebSockets

Pick sgcWebSockets when you need WebSocket plus messaging protocols (MQTT, AMQP, STOMP, WAMP), HTTP/2, and AI/LLM clients from one component set with a single commercial licence, broad Delphi version coverage (7–13) including C++ Builder, and FireMonkey targets for macOS, iOS, Android, and Linux.

Choose Indy (Internet Direct)

Pick Indy when WebSocket itself is not the requirement — for example, when you need a permissively-licensed TCP/UDP toolkit with mature HTTP, SMTP, POP3, IMAP, FTP, and NNTP support, or when you want to extend the existing TIdHTTPServer with your own WebSocket upgrade handler. Indy ships with RAD Studio, so it adds nothing to your dependency footprint.

Choose ICS (Internet Component Suite)

Pick ICS when you want an open-source Delphi networking suite with WebSocket client and server, modern TLS 1.3 (including post-quantum cryptography in V9.6) on top of OpenSSL 3.x, and you are comfortable wiring routes through the existing ICS web server. ICS is a long-term release tracking actively-maintained OpenSSL versions.

Choose TMS FNC WebSocket / TMS Sparkle

Pick TMS FNC WebSocket when WebSocket is the only network protocol you need on VCL and FireMonkey, when you already license other TMS FNC components (the visual and non-visual API style stays consistent), or when you specifically want the FNC cross-framework story (one codebase across VCL and FMX). For HTTP and HTTP/S service hosting, TMS Sparkle pairs with TMS XData.

Choose mORMot 2

Pick mORMot 2 when you want an open-source full-stack framework (ORM, SOA, REST, WebSocket, OpenAPI) for Object Pascal under MPL/GPL/LGPL, when your server runs on Linux under FPC, or when you want a single framework spanning the database, business logic, and the WebSocket transport.

Choose Stand-alone MQTT-only libraries

Pick a stand-alone MQTT-only library when MQTT is the single protocol you need, when the project must depend on permissively-licensed code only, and when you want to read every line of the wire-protocol implementation. Audit the chosen project's commit history before committing to it — activity varies a lot between authors.

Moving to sgcWebSockets — what differs

Short notes on the API and feature differences if you are switching from one of the libraries above. Not adversarial — just the practical mapping.

Moving from Indy (Internet Direct)

Indy gives you the raw HTTP and TCP plumbing; sgcWebSockets gives you the WebSocket framing, ping/pong, auto-reconnect, sub-protocols (MQTT/AMQP/STOMP/WAMP), and per-message-deflate built in. If you have an Indy-based HTTP server today, sgcWebSockets provides a separate TsgcWebSocketHTTPServer rather than a plug-in into Indy — existing HTTP routes need to be re-implemented under the sgc server, or run both side-by-side on different ports.

Moving from ICS (Internet Component Suite)

Both libraries expose a WebSocket client and a WebSocket-over-HTTP server. The named messaging protocols (MQTT, AMQP, STOMP, WAMP) and the AI/LLM and exchange-API clients are sgcWebSockets-only. If you currently run an ICS web server with WebSocket routes, sgcWebSockets provides TsgcWebSocketHTTPServer as a drop-in HTTP+WS host, but the route registration API is different.

Moving from TMS FNC WebSocket / TMS Sparkle

sgcWebSockets and TMS FNC WebSocket both implement RFC 6455 client and server. Migrate by swapping the component class and rewiring events. The protocol layers built on top (MQTT, AMQP, STOMP, WAMP), the HTTP/2 client and server, and the 30+ third-party API integrations are sgcWebSockets-only. If you use TMS MQTT separately, sgcWebSockets bundles MQTT into the same suite.

Moving from mORMot 2

mORMot 2 wraps WebSocket inside its SOA layer; sgcWebSockets provides a standalone WebSocket / HTTP/2 / MQTT / AMQP / STOMP / WAMP component you can drop into any Delphi project. If your application uses mORMot 2's ORM and SOA features, switching to sgcWebSockets means re-implementing the SOA layer; if you only used mORMot 2 for WebSocket transport, sgcWebSockets is a closer one-for-one swap.

Moving from Stand-alone MQTT-only libraries

If you currently use a stand-alone MQTT-only library and you start adding WebSocket, HTTP/2, AMQP, or AI/LLM API clients, sgcWebSockets consolidates all of those into one suite, with a single licence and a single update channel.

Every claim, linked

Each cell in the matrix above traces to one of these official documentation pages, repositories, or release notes. All URLs were HEAD-checked at the time of writing.

SourceURL
sgcWebSockets — product pagehttps://www.esegece.com/products/websockets/
sgcWebSockets — Delphi feature matrixhttps://www.esegece.com/products/websockets/features/feature-matrix-delphi/
Indy — project homepage (indyproject.org)https://www.indyproject.org/
Indy — GitHub repository (IndySockets/Indy)https://github.com/IndySockets/Indy
Indy — releases (latest tagged 10.6.3.14)https://github.com/IndySockets/Indy/releases
ICS — V9.0 release notes (WebSocket support introduced)https://wiki.overbyte.eu/wiki/index.php/ICS_V9.0
ICS — V9.6 release notes (TLS 1.3 / PQC)https://wiki.overbyte.eu/wiki/index.php/ICS_V9.6
ICS — download page (latest stable)https://wiki.overbyte.eu/wiki/index.php/ICS_Download
TMS Sparkle — product pagehttps://www.tmssoftware.com/site/sparkle.asp
TMS FNC WebSocket — product pagehttps://www.tmssoftware.com/site/tmsfncwebsocket.asp
mORMot 2 — GitHub repository (synopse/mORMot2)https://github.com/synopse/mORMot2
mORMot 2 — README (protocol list, supported targets)https://github.com/synopse/mORMot2/blob/master/README.md
mORMot 2 — releases (v2.4 stable)https://github.com/synopse/mORMot2/releases
Synopse forum (Object Pascal SOA / ORM)https://synopse.info/
GitHub topic: delphi-mqtt (community single-purpose MQTT clients)https://github.com/topics/delphi-mqtt
RFC 6455 — The WebSocket Protocolhttps://datatracker.ietf.org/doc/html/rfc6455
RFC 7692 — Compression Extensions for WebSocket (per-message-deflate)https://datatracker.ietf.org/doc/html/rfc7692

Try sgcWebSockets

Download the free Trial edition and benchmark sgcWebSockets against your current library on your own application.