For an MQTT client library for IoT devices, the strongest matches are eclipse/paho.mqtt.embedded-c (Eclipse Paho's embedded C/C++ MQTT client library is purpose-built), peterhinch/micropython-mqtt (peterhinch/micropython-mqtt is a lightweight MQTT client library designed for) and andrewmk/umqtt (umqtt is a lightweight MQTT client for MicroPython on). chrismoorhouse/micropython-mqtt and warmcat/libwebsockets round out the shortlist. Each is ranked by relevance to your query, popularity and recent activity.
Lightweight messaging libraries for implementing MQTT protocols in resource-constrained Internet of Things device applications.
This repository contains the source code for the Eclipse Paho MQTT C/C++ client library for Embedded platorms.
Eclipse Paho's embedded C/C++ MQTT client library is purpose-built for resource-constrained IoT devices, providing a lightweight implementation that supports MQTT 3.1.1 and 5 with TLS and minimal dependencies — exactly what this search requires.
MQTT is an easily used networking protocol designed for IOT (internet of things) applications. It is well suited for controlling hardware devices and for reading sensors across a local network or the internet.
peterhinch/micropython-mqtt is a lightweight MQTT client library designed for MicroPython on IoT devices, so it fits the embedded space, but it is implemented in Python rather than C or C++ as requested.
MQTT publish for micropython on the WiPy board.
umqtt is a lightweight MQTT client for MicroPython on embedded devices, fitting the category of an MQTT client library for IoT but implemented in Python rather than the preferred C/C++ and tailored to a specific board.
Async MQTT client library with auto reconnect for MicroPython devices such as the ESP32 or Pycom devices
This is an asynchronous MQTT client library for MicroPython devices like the ESP32, making it a genuine MQTT client for resource-constrained IoT, but it is written in Python rather than C/C++ as typically preferred.
libwebsockets is an event-driven networking framework written in C. It provides a suite of tools for implementing HTTP servers and clients, WebSocket bidirectional communication, MQTT client messaging, and TLS-enabled socket encryption. The project distinguishes itself through a non-blocking event-loop architecture capable of scaling to high connection volumes by distributing network sessions across multiple service threads. It uses a protocol-based callback system and a pluggable event loop integration that allows the networking core to synchronize with external system event libraries. The
libwebsockets is an event-driven C networking framework that includes MQTT client messaging with TLS support, making it a viable choice for embedded/IoT devices, though its broader scope means it is not as minimal as a dedicated MQTT client library.
This library is an MQTT client implementation designed for resource-constrained embedded systems, specifically targeting ESP8266 microcontrollers. It provides a framework for establishing persistent network connections to exchange data with remote messaging brokers, enabling reliable communication for IoT devices. The library distinguishes itself through its ability to maintain simultaneous connections to multiple independent messaging brokers, facilitating complex data routing across distributed environments. It utilizes a state-machine approach to manage connection lifecycles, including aut
This library is a lightweight MQTT client written in C specifically for ESP8266 IoT modules, fitting the target of resource-constrained devices and your language requirement, though its hardware-specific design limits broader platform use.
This project is a Java messaging software development kit designed to facilitate real-time data exchange between applications and message brokers. It functions as an MQTT client library, providing the necessary tools to implement publish-and-subscribe messaging patterns within distributed systems and internet-connected device environments. The library distinguishes itself through its focus on resilient network connectivity and reliable message delivery. It manages persistent connections through internal state machines that handle automatic reconnection and keep-alive heartbeats, ensuring stab
This is a Java MQTT client library from Eclipse Paho, so it fits the MQTT client library category, but it is not implemented in C or C++ and is not suited for resource-constrained embedded devices.
This library is an Arduino-compatible client for the messaging protocol designed for resource-constrained embedded systems. It provides a messaging interface that enables microcontrollers to establish persistent connections with brokers to exchange data and control signals. The library distinguishes itself through a focus on predictable resource usage, utilizing manual memory buffer management and a state-machine approach to handle connection persistence and automatic reconnections. It operates on a stream-oriented network abstraction, allowing it to interface with various hardware transport
This is an MQTT client library written in C specifically for Arduino, which makes it the right kind of lightweight embedded/IoT tool you are after, though the brief description leaves several desired features (like MQTT 5, TLS, and IPv6 support) unconfirmed.
This project is a cross-platform C library designed for implementing MQTT messaging in applications. It serves as an asynchronous networking toolkit that enables resource-constrained systems and distributed components to exchange telemetry data and control signals with messaging brokers. The library distinguishes itself through a state-machine-based protocol handler that manages connection lifecycles and persistent session states, ensuring reliable message delivery even during intermittent network connectivity. It utilizes a background thread to manage network operations, allowing application
This is Eclipse Paho's C MQTT client library, a well-known and widely used implementation that supports MQTT 3.1.1 and 5, runs on multiple platforms, and includes TLS — making it a solid, standard fit for embedded/IoT devices.
MQTTX is a cross-platform MQTT client application designed for testing, debugging, and managing MQTT brokers. It supports both MQTT v3.1.1 and v5.0, enables simultaneous management of multiple broker connections, and provides an interactive chat-style interface for publishing and subscribing with configurable quality of service, payload transformation, and topic visualization. The client can be used as a desktop application, a command-line tool, or a self-hosted web client deployable via Docker. What sets MQTTX apart is its integration of AI-assisted workflows, allowing users to generate MQTT
MQTTX is a cross-platform MQTT client application (desktop, CLI, web) for testing and debugging brokers, not a lightweight C/C++ library that you embed into IoT firmware — you would use it alongside embedded development, not as the client code itself.
Curl is a command-line tool and portable library for transferring data across a wide range of network protocols. It functions as a unified engine that abstracts diverse communication standards, allowing users and developers to move files and information between servers using a consistent interface. The project provides both a versatile command-line client for terminal-based automation and a stable programmatic interface for integrating complex network operations into applications. The system is distinguished by its protocol-agnostic core and its ability to manage both synchronous and asynchro
curl is a general-purpose data transfer library that happens to include MQTT support, but its primary identity is not a dedicated lightweight MQTT client for embedded devices—it's a multi-protocol tool better suited as a building block rather than a focused embedded MQTT client.
KCP is a low-latency transport protocol and reliability layer designed to provide TCP-like guaranteed delivery and ordering over UDP. It implements an automatic repeat request protocol to minimize network jitter and delays, prioritizing timeliness over bandwidth efficiency. The project distinguishes itself through a pluggable congestion controller and flow control logic, allowing the transport layer to be tuned for specific network environments. It includes a NAT keep-alive system that uses periodic heartbeat packets to maintain active communication paths and prevent address translation timeo
KCP is a transport protocol library for reliable ordered delivery over UDP, not an MQTT client library; it lacks any MQTT protocol support, which is the core requirement for your embedded IoT search.
| Repository | Stars | Language | License | Last push |
|---|---|---|---|---|
| eclipse/paho.mqtt.embedded-c | 1.5K | C | NOASSERTION | |
| peterhinch/micropython-mqtt | 685 | Python | MIT | |
| andrewmk/umqtt | 9 | JavaScript | GPL-2.0 | |
| chrismoorhouse/micropython-mqtt | 41 | Python | NOASSERTION | |
| warmcat/libwebsockets | 5.3K | C | NOASSERTION | |
| tuanpmt/esp_mqtt | 1.2K | C | MIT | |
| eclipse-paho/paho.mqtt.java | 2.3K | Java | NOASSERTION | |
| 256dpi/arduino-mqtt | 1.1K | C | MIT | |
| eclipse-paho/paho.mqtt.c | 2.3K | C | NOASSERTION | |
| emqx/mqttx | 4.8K | TypeScript | apache-2.0 |