{"id":908,"date":"2025-09-29T16:39:05","date_gmt":"2025-09-29T16:39:05","guid":{"rendered":"https:\/\/protolinker.com\/?page_id=908"},"modified":"2026-05-05T14:04:00","modified_gmt":"2026-05-05T14:04:00","slug":"downloads","status":"publish","type":"page","link":"https:\/\/protolinker.com\/en\/downloads\/","title":{"rendered":"Download"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"908\" class=\"elementor elementor-908\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b9c5b27 e-con-full e-flex e-con e-parent\" data-id=\"b9c5b27\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c59611f elementor-widget elementor-widget-html\" data-id=\"c59611f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<section class=\"pl-download-section\" id=\"download\">\n  <div class=\"pl-download-header\">\n    <span class=\"pl-section-kicker\">Download<\/span>\n    <h1>Download Protolinker<\/h1>\n    <p>\n      Cross-platform protocol conversion for industrial systems.<br>\n      Converts Modbus, Serial, OPC UA, MQTT, REST, and more with local control.\n    <\/p>\n  <\/div>\n\n  <div class=\"pl-download-grid\">\n    <article class=\"pl-download-card\">\n      <img decoding=\"async\" src=\"https:\/\/protolinker.com\/wp-content\/uploads\/2025\/07\/windows_icon.png\" alt=\"Windows\">\n      <h3>Windows<\/h3>\n      <p>Installer (.exe)<\/p>\n      <a\n        href=\"https:\/\/protolinker.com\/wp-content\/uploads\/installers\/protolinker-windows-latest.exe\"\n        class=\"pl-download-button pl-button-primary\"\n      >\n        Download 64-bit Installer\n      <\/a>\n    <\/article>\n\n    <article class=\"pl-download-card\">\n      <img decoding=\"async\"\n        id=\"macos-logo\"\n        src=\"https:\/\/protolinker.com\/wp-content\/uploads\/2025\/07\/macos_icon_grey.png\"\n        alt=\"macOS\"\n      >\n      <h3>macOS<\/h3>\n      <p>DMG (Intel &amp; Apple Silicon)<\/p>\n      <a\n        href=\"https:\/\/protolinker.com\/wp-content\/uploads\/installers\/protolinker-macos-latest.dmg\"\n        class=\"pl-download-button pl-button-primary\"\n      >\n        Download Universal DMG\n      <\/a>\n    <\/article>\n\n    <article class=\"pl-download-card\">\n      <img decoding=\"async\" src=\"https:\/\/protolinker.com\/wp-content\/uploads\/2025\/07\/linux_icon.png\" alt=\"Linux\">\n      <h3>Linux<\/h3>\n      <p>Deb Package (x86_64)<\/p>\n      <a\n        href=\"https:\/\/protolinker.com\/wp-content\/uploads\/installers\/protolinker-linux-x86_64-latest.deb\"\n        class=\"pl-download-button pl-button-primary\"\n      >\n        Download amd64 .deb\n      <\/a>\n      <p>Deb Package (ARM64)<\/p>\n      <a\n        href=\"https:\/\/protolinker.com\/wp-content\/uploads\/installers\/protolinker-linux-arm64-latest.deb\"\n        class=\"pl-download-button pl-button-secondary\"\n      >\n        Download arm64 .deb\n      <\/a>\n    <\/article>\n  <\/div>\n<\/section>\n\n<script>\n  (() => {\n    function startDownloadThemeSync() {\n      const downloadSection = document.querySelector(\".pl-download-section\");\n      if (!downloadSection) return;\n      const darkClassNames = [\n        \"dark\",\n        \"dark-mode\",\n        \"darkmode\",\n        \"darkmode--activated\",\n        \"is-dark\",\n        \"is-dark-theme\",\n        \"night-mode\",\n        \"wp-dark-mode\",\n        \"wp-dark-mode-active\",\n        \"wp-dark-mode-enabled\"\n      ];\n      const lightClassNames = [\n        \"light\",\n        \"light-mode\",\n        \"lightmode\",\n        \"is-light\",\n        \"is-light-theme\",\n        \"wp-light-mode\",\n        \"wp-light-mode-active\"\n      ];\n      const themeAttributes = [\n        \"data-theme\",\n        \"data-color-mode\",\n        \"data-bs-theme\",\n        \"data-mode\",\n        \"data-scheme\",\n        \"color-scheme\"\n      ];\n      function hasClass(element, classNames) {\n        return Boolean(\n          element &&\n            element.classList &&\n            classNames.some((className) => element.classList.contains(className))\n        );\n      }\n      function valueContainsTheme(value, themeName) {\n        return new RegExp(`(^|[\\\\s_-])${themeName}($|[\\\\s_-])`, \"i\").test(\n          String(value || \"\")\n        );\n      }\n      function getElementTheme(element) {\n        if (!element) return null;\n        for (const attribute of themeAttributes) {\n          const value = element.getAttribute(attribute);\n          if (valueContainsTheme(value, \"dark\")) return \"dark\";\n          if (valueContainsTheme(value, \"light\")) return \"light\";\n        }\n        const className =\n          typeof element.className === \"string\" ? element.className : \"\";\n        if (valueContainsTheme(className, \"dark\")) return \"dark\";\n        if (valueContainsTheme(className, \"light\")) return \"light\";\n        if (hasClass(element, darkClassNames)) return \"dark\";\n        if (hasClass(element, lightClassNames)) return \"light\";\n        return null;\n      }\n      function getSiteTheme() {\n        const htmlTheme = getElementTheme(document.documentElement);\n        if (htmlTheme) return htmlTheme;\n        const bodyTheme = getElementTheme(document.body);\n        if (bodyTheme) return bodyTheme;\n        return null;\n      }\n      function applyDownloadTheme() {\n        const theme = getSiteTheme();\n        if (theme) {\n          downloadSection.setAttribute(\"data-pl-theme\", theme);\n        } else {\n          downloadSection.removeAttribute(\"data-pl-theme\");\n        }\n      }\n      applyDownloadTheme();\n      requestAnimationFrame(applyDownloadTheme);\n      window.addEventListener(\"load\", applyDownloadTheme, { once: true });\n      setTimeout(applyDownloadTheme, 120);\n      setTimeout(applyDownloadTheme, 450);\n      setTimeout(applyDownloadTheme, 1200);\n      const observer = new MutationObserver(applyDownloadTheme);\n      const themeAttributeFilter = [\n        \"class\",\n        \"style\",\n        \"data-theme\",\n        \"data-color-mode\",\n        \"data-bs-theme\",\n        \"data-mode\",\n        \"data-scheme\",\n        \"color-scheme\"\n      ];\n      observer.observe(document.documentElement, {\n        attributes: true,\n        attributeFilter: themeAttributeFilter\n      });\n      observer.observe(document.body, {\n        attributes: true,\n        attributeFilter: themeAttributeFilter\n      });\n    }\n\n    if (document.readyState === \"loading\") {\n      document.addEventListener(\"DOMContentLoaded\", startDownloadThemeSync);\n    } else {\n      startDownloadThemeSync();\n    }\n  })();\n<\/script>\n\n<style>\n  .pl-download-section {\n    --pl-bg: #ffffff;\n    --pl-blue: #0090ff;\n    --pl-green: #3ddc6f;\n    --pl-text: #000000;\n    --pl-muted: rgba(0, 0, 0, 0.68);\n    --pl-card-bg: rgba(255, 255, 255, 0.94);\n    --pl-card-border: rgba(10, 15, 23, 0.12);\n    --pl-soft: rgba(0, 144, 255, 0.08);\n    --pl-shadow: 0 24px 70px rgba(10, 15, 23, 0.08);\n    max-width: 1000px;\n    margin: auto;\n    padding: 80px 20px 40px;\n    background: var(--pl-bg) !important;\n    color: var(--pl-text) !important;\n    font-family: Inter, \"Segoe UI\", system-ui, -apple-system, BlinkMacSystemFont, sans-serif;\n    text-align: center;\n  }\n\n  html.dark .pl-download-section,\n  body.dark .pl-download-section,\n  .dark .pl-download-section,\n  html.dark-mode .pl-download-section,\n  body.dark-mode .pl-download-section,\n  .dark-mode .pl-download-section,\n  html.is-dark-theme .pl-download-section,\n  body.is-dark-theme .pl-download-section,\n  .is-dark-theme .pl-download-section,\n  html.wp-dark-mode-active .pl-download-section,\n  body.wp-dark-mode-active .pl-download-section,\n  .wp-dark-mode-active .pl-download-section,\n  .wp-dark-mode-enabled .pl-download-section,\n  .darkmode--activated .pl-download-section,\n  html[data-theme=\"dark\"] .pl-download-section,\n  body[data-theme=\"dark\"] .pl-download-section,\n  html[data-color-mode=\"dark\"] .pl-download-section,\n  body[data-color-mode=\"dark\"] .pl-download-section {\n    --pl-bg: #000000;\n    --pl-text: #ffffff;\n    --pl-muted: rgba(255, 255, 255, 0.74);\n    --pl-card-bg: rgba(12, 12, 12, 0.96);\n    --pl-card-border: rgba(255, 255, 255, 0.14);\n    --pl-soft: rgba(0, 144, 255, 0.16);\n    --pl-shadow: 0 24px 80px rgba(0, 0, 0, 0.36);\n  }\n\n  html.light .pl-download-section,\n  body.light .pl-download-section,\n  .light .pl-download-section,\n  html.light-mode .pl-download-section,\n  body.light-mode .pl-download-section,\n  .light-mode .pl-download-section,\n  html.is-light-theme .pl-download-section,\n  body.is-light-theme .pl-download-section,\n  .is-light-theme .pl-download-section,\n  html.wp-light-mode-active .pl-download-section,\n  body.wp-light-mode-active .pl-download-section,\n  .wp-light-mode-active .pl-download-section,\n  html[data-theme=\"light\"] .pl-download-section,\n  body[data-theme=\"light\"] .pl-download-section,\n  html[data-color-mode=\"light\"] .pl-download-section,\n  body[data-color-mode=\"light\"] .pl-download-section {\n    --pl-bg: #ffffff;\n    --pl-text: #000000;\n    --pl-muted: rgba(0, 0, 0, 0.68);\n    --pl-card-bg: rgba(255, 255, 255, 0.94);\n    --pl-card-border: rgba(10, 15, 23, 0.12);\n    --pl-soft: rgba(0, 144, 255, 0.08);\n    --pl-shadow: 0 24px 70px rgba(10, 15, 23, 0.08);\n  }\n\n  .pl-download-section[data-pl-theme=\"dark\"] {\n    --pl-bg: #000000;\n    --pl-text: #ffffff;\n    --pl-muted: rgba(255, 255, 255, 0.74);\n    --pl-card-bg: rgba(12, 12, 12, 0.96);\n    --pl-card-border: rgba(255, 255, 255, 0.14);\n    --pl-soft: rgba(0, 144, 255, 0.16);\n    --pl-shadow: 0 24px 80px rgba(0, 0, 0, 0.36);\n  }\n\n  .pl-download-section[data-pl-theme=\"light\"] {\n    --pl-bg: #ffffff;\n    --pl-text: #000000;\n    --pl-muted: rgba(0, 0, 0, 0.68);\n    --pl-card-bg: rgba(255, 255, 255, 0.94);\n    --pl-card-border: rgba(10, 15, 23, 0.12);\n    --pl-soft: rgba(0, 144, 255, 0.08);\n    --pl-shadow: 0 24px 70px rgba(10, 15, 23, 0.08);\n  }\n\n  .pl-download-section *,\n  .pl-download-section *::before,\n  .pl-download-section *::after {\n    box-sizing: border-box;\n  }\n\n  .pl-download-header {\n    max-width: 760px;\n    margin: 0 auto;\n  }\n\n  .pl-section-kicker {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    margin-bottom: 14px;\n    padding: 8px 14px;\n    border: 1px solid var(--pl-card-border);\n    border-radius: 999px;\n    background: var(--pl-soft);\n    color: var(--pl-blue) !important;\n    font-size: 14px;\n    font-weight: 700;\n    letter-spacing: 0.02em;\n  }\n\n  .pl-download-header h1 {\n    margin: 0;\n    color: var(--pl-text) !important;\n    font-size: clamp(34px, 5vw, 48px);\n    line-height: 1.08;\n    letter-spacing: -0.03em;\n  }\n\n  .pl-download-header p {\n    margin: 12px 0 0;\n    color: var(--pl-muted) !important;\n    font-size: 18px;\n    line-height: 1.6;\n  }\n\n  .pl-download-grid {\n    display: flex;\n    flex-wrap: wrap;\n    justify-content: center;\n    gap: 20px;\n    margin-top: 40px;\n  }\n\n  .pl-download-card {\n    flex: 1 1 280px;\n    max-width: 320px;\n    padding: 24px;\n    border: 1px solid var(--pl-card-border);\n    border-radius: 20px;\n    background: var(--pl-card-bg) !important;\n    box-shadow: var(--pl-shadow);\n    color: var(--pl-text) !important;\n    backdrop-filter: blur(14px);\n  }\n\n  .pl-download-card img {\n    width: 80px;\n    height: 80px;\n    object-fit: contain;\n  }\n\n  .pl-download-card h3 {\n    margin: 0 0 10px;\n    color: var(--pl-text) !important;\n    font-size: 24px;\n    line-height: 1.2;\n  }\n\n  .pl-download-card p {\n    margin: 10px 0 8px;\n    color: var(--pl-muted) !important;\n    font-size: 15px;\n    line-height: 1.5;\n  }\n\n  .pl-download-button {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 44px;\n    margin: 5px 0;\n    padding: 0 18px;\n    border-radius: 999px;\n    font-size: 14px;\n    font-weight: 800;\n    text-align: center;\n    text-decoration: none !important;\n    transition:\n      transform 160ms ease,\n      background 160ms ease;\n  }\n\n  .pl-download-button:hover {\n    transform: translateY(-1px);\n  }\n\n  .pl-button-primary {\n    border: 0;\n    background: linear-gradient(135deg, var(--pl-blue), var(--pl-green));\n    color: #ffffff !important;\n    box-shadow: 0 14px 32px rgba(0, 144, 255, 0.28);\n  }\n\n  .pl-button-secondary {\n    border: 1px solid var(--pl-card-border);\n    background: transparent;\n    color: var(--pl-text) !important;\n  }\n\n  .pl-button-secondary:hover {\n    background: var(--pl-soft);\n  }\n\n  @media (max-width: 640px) {\n    .pl-download-section {\n      padding: 64px 16px 36px;\n    }\n\n    .pl-download-grid {\n      margin-top: 30px;\n    }\n\n    .pl-download-card {\n      max-width: none;\n    }\n  }\n<\/style>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Download Download Protolinker Cross-platform protocol conversion for industrial systems. Converts Modbus, Serial, OPC UA, MQTT, REST, and more with local control. Windows Installer (.exe) Download 64-bit Installer macOS DMG (Intel &amp; Apple Silicon) Download Universal DMG Linux Deb Package (x86_64) Download amd64 .deb Deb Package (ARM64) Download arm64 .deb<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-908","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/protolinker.com\/en\/wp-json\/wp\/v2\/pages\/908","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/protolinker.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/protolinker.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/protolinker.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/protolinker.com\/en\/wp-json\/wp\/v2\/comments?post=908"}],"version-history":[{"count":15,"href":"https:\/\/protolinker.com\/en\/wp-json\/wp\/v2\/pages\/908\/revisions"}],"predecessor-version":[{"id":1325,"href":"https:\/\/protolinker.com\/en\/wp-json\/wp\/v2\/pages\/908\/revisions\/1325"}],"wp:attachment":[{"href":"https:\/\/protolinker.com\/en\/wp-json\/wp\/v2\/media?parent=908"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}