{"id":28989,"date":"2026-01-19T13:14:30","date_gmt":"2026-01-19T12:14:30","guid":{"rendered":"https:\/\/daniel.haxx.se\/blog\/?p=28989"},"modified":"2026-01-19T16:25:39","modified_gmt":"2026-01-19T15:25:39","slug":"now-with-mqtts","status":"publish","type":"post","link":"https:\/\/daniel.haxx.se\/blog\/2026\/01\/19\/now-with-mqtts\/","title":{"rendered":"Now with MQTTS"},"content":{"rendered":"\n<p>Back in 2020 we added <a href=\"https:\/\/daniel.haxx.se\/blog\/2020\/04\/14\/curl-mqtt-true\/\" data-type=\"post\" data-id=\"13836\">MQTT<\/a> support to curl.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/curl.se\/\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"459\" src=\"https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2016\/04\/good_curl_logo-1200x459.png\" alt=\"\" class=\"wp-image-8936\" srcset=\"https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2016\/04\/good_curl_logo-1200x459.png 1200w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2016\/04\/good_curl_logo-200x76.png 200w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2016\/04\/good_curl_logo-450x172.png 450w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2016\/04\/good_curl_logo-768x294.png 768w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>When curl 8.19.0 ships in the beginning of March 2026, we have also added MQTTS; meaning MQTT done securely over TLS.<\/p>\n\n\n\n<p>This bumps the number of supported transfer protocols to 29 not too long after the project turned 29 years old.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69da8ca0d0765&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69da8ca0d0765\" class=\"aligncenter size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1080\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2026\/01\/curl-coverage11.jpg\" alt=\"\" class=\"wp-image-29040\"\/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">The 29 transfer protocols (or schemes) that curl supports in January 2026<\/figcaption><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69da8ca0d0af8&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69da8ca0d0af8\" class=\"aligncenter size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1080\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2026\/01\/libcurl-backends7.jpg\" alt=\"\" class=\"wp-image-29047\"\/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">libcurl backends as of now<\/figcaption><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">What&#8217;s MQTT?<\/h2>\n\n\n\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/MQTT\">Wikipedia describes it<\/a> as <em>a lightweight, publish\u2013subscribe, machine-to-machine network protocol for message queue\/message queuing service. It is designed for connections with remote locations that have devices with resource constraints or limited network bandwidth, such as in the Internet of things (IoT). It must run over a transport protocol that provides ordered, lossless, bi-directional connections\u2014typically, TCP\/IP.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Coming protocol support <em>reduction<\/em><\/h2>\n\n\n\n<p>If things go as planned, the number of supported protocols will decrease soon as we have RTMP scheduled for removal later in the spring of 2026.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Back in 2020 we added MQTT support to curl. When curl 8.19.0 ships in the beginning of March 2026, we have also added MQTTS; meaning MQTT done securely over TLS. This bumps the number of supported transfer protocols to 29 not too long after the project turned 29 years old. What&#8217;s MQTT? Wikipedia describes it &hellip; <a href=\"https:\/\/daniel.haxx.se\/blog\/2026\/01\/19\/now-with-mqtts\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Now with MQTTS<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[33,491,378,381],"class_list":["post-28989","post","type-post","status-publish","format-standard","hentry","category-curl","tag-curl-and-libcurl","tag-mqtt","tag-protocols","tag-tls"],"_links":{"self":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/28989","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/comments?post=28989"}],"version-history":[{"count":9,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/28989\/revisions"}],"predecessor-version":[{"id":29050,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/28989\/revisions\/29050"}],"wp:attachment":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/media?parent=28989"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/categories?post=28989"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/tags?post=28989"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}