Chilkat for Lua — Downloads

Chilkat for Lua is the Chilkat library as a Lua C module: local chilkat = require("chilkat"), classes such as chilkat.Http and chilkat.JsonObject, snake_case members (http:quick_get_str(url), http.connect_timeout = 30), failures returned as nil, err, progress callbacks as plain functions, and LuaLS annotations for editor completion. HTTP and REST, email, FTP, SFTP, SSH, zip, encryption, signatures, certificates, XML, JSON, sockets and more, for Lua 5.1 (and LuaJIT), 5.4 and 5.5 on Windows, Linux, Alpine Linux and macOS.

Install with one command
# Linux, Alpine Linux, macOS  (as root if the Lua directories need it: ... | sudo sh)
curl -fsSL https://chilkatdownload.com/lua/install.sh | sh
# Windows (PowerShell)
irm https://chilkatdownload.com/lua/install.ps1 | iex

The installer asks your Lua for its version (5.1/LuaJIT, 5.4 or 5.5) and its package.cpath, detects the platform, downloads the matching build from this page, puts chilkat.so / chilkat.dll into the first writable module directory and checks that require "chilkat" works. Options: --lua=PATH, --dest=DIR, --dry-run (PowerShell: -Lua, -Dest, -DryRun).

Using LuaRocks?
luarocks install chilkat --server=https://chilkatdownload.com/luarocks/lua5.4
# Lua 5.1 or LuaJIT: .../luarocks/lua5.1      Lua 5.5: .../luarocks/lua5.5
# Alpine Linux:      .../luarocks/lua5.4-musl  (lua5.1-musl, lua5.5-musl)

Chilkat's own LuaRocks repositories on chilkatdownload.com hold prebuilt binary rocks — nothing is compiled. A rock is tied to its Lua version, so LuaRocks refuses one built for another Lua. luarocks remove chilkat uninstalls it.

Jump to: Which download? · Windows · Linux · Alpine Linux · macOS · Getting started · The API in brief · Troubleshooting

Documentation & Samples

Which download do I need?

A Lua C module is built for one Lua version line, so each download is for one Lua ABI and one platform:

Your interpreterDownload
Lua 5.1, LuaJIT 2.0 / 2.1 (also OpenResty)chilkat-lua5.1-<platform>
Lua 5.4chilkat-lua5.4-<platform>
Lua 5.5chilkat-lua5.5-<platform>
Lua 5.2, 5.3not built
lua -v                                   # which Lua
lua -e "print(_VERSION, package.cpath)"  # its version and where it looks for C modules

Platforms: Windows (win32, x64, arm64), Linux glibc (x86_64, aarch64, armv7l), Alpine Linux musl (x86_64, aarch64), macOS (arm64, x86_64). The Linux builds do not load on Alpine, nor the reverse.


Windows

Each .zip contains a code-signed chilkat.dll, linked with the C runtime statically (no redistributable needed). The DLL imports the Lua C API by name from lua51.dll, lua54.dll or lua55.dll — whichever your lua.exe uses, MSVC- or MinGW-built, LuaJIT's lua51.dll included. Getting started →

v11.7.0 • 11-Nov-2026 • sha256: 3aaf0ad9179ae3e18e5ceba3a62d540cfffeee038a4cea3eeb4414bcac818da9
Chilkat for Lua 5.5, Windows 64-bit

v11.7.0 • 11-Nov-2026 • sha256: ea2706aac1f36336d1905d09ed9274da8b52eb0a8d501379e12bb024c6f22ec2
Chilkat for Lua 5.5, Windows 32-bit

v11.7.0 • 11-Nov-2026 • sha256: 5130156eee595a901ef18ce05459493d9a5b8ee897ffaf9cfb837739c809df74
Chilkat for Lua 5.5, Windows ARM64

v11.7.0 • 11-Nov-2026 • sha256: 38b6faea358aac4f94d0c4a9f38547571ee0f2da9dd8058f65b3939c417ecc6d
Chilkat for Lua 5.4, Windows 64-bit

v11.7.0 • 11-Nov-2026 • sha256: 8ac0244576bb647c5a02bcea47fbbc64390c468c1b9a6abf4d810b684ecd2e7f
Chilkat for Lua 5.4, Windows 32-bit

v11.7.0 • 11-Nov-2026 • sha256: 0fae26290c429b30a6dee473842211ab035500f99bfa95cf64cd67b38630b846
Chilkat for Lua 5.4, Windows ARM64

v11.7.0 • 11-Nov-2026 • sha256: d36fd78dbd126c2dc2bb54a2193836f4c8396fbc963fb4736ecb3ffcf00922d2
Chilkat for Lua 5.1 / LuaJIT, Windows 64-bit

v11.7.0 • 11-Nov-2026 • sha256: 1ab4e4740b357a3cfcf43c09176584eed0e85ca63e8abc4fd0122ff5eb52a4d9
Chilkat for Lua 5.1 / LuaJIT, Windows 32-bit

v11.7.0 • 11-Nov-2026 • sha256: e172b87220aebf86ed9b6989189e6290931cdf460b4adecc2d2ac34bf935cf49
Chilkat for Lua 5.1 / LuaJIT, Windows ARM64


Linux (x86_64, aarch64, armv7l)

For glibc-based distributions (Debian/Ubuntu, RHEL/Fedora, SUSE, Arch, Raspberry Pi OS, …). Each .tar.gz contains chilkat.so. Alpine Linux uses musl and needs the Alpine downloads below. Getting started →

v11.7.0 • 11-Nov-2026 • sha256: 0df21963acef70313daa2351058942259fcb5318d770e4cd9700b60932c54120
Chilkat for Lua 5.5, 64-bit Linux (x86_64)

v11.7.0 • 11-Nov-2026 • sha256: 969c9a884ae0eaf02a86756a2ec36344864225bd628950e737e4e0a654396c21
Chilkat for Lua 5.5, arm64 Linux

v11.7.0 • 11-Nov-2026 • sha256: 14e43336da42196941974423cf645448d99d654560abb70e986e2205d0c984c2
Chilkat for Lua 5.5, armv7l Linux

v11.7.0 • 11-Nov-2026 • sha256: 5a999930fee5491cabe7eebabd92d391e114311f16da76348dc28e413d443101
Chilkat for Lua 5.4, 64-bit Linux (x86_64)

v11.7.0 • 11-Nov-2026 • sha256: 94389901a9093b20c273572cb5349c0a1242bf99b6b6bf8410d3b4f18d3a4417
Chilkat for Lua 5.4, arm64 Linux

v11.7.0 • 11-Nov-2026 • sha256: 93969c0f242c6544911362af3a85984e43aa060bc60147079846ce053b597f5f
Chilkat for Lua 5.4, armv7l Linux

v11.7.0 • 11-Nov-2026 • sha256: 6b147c5a4caf44f2cd0dadf0d277103bd4cf39996b01ab2345535869e57452e3
Chilkat for Lua 5.1 / LuaJIT, 64-bit Linux (x86_64)

v11.7.0 • 11-Nov-2026 • sha256: 35f8bcb652e231101d9532764a6dd460df17a5b1c5afa978ca238cedbaa870cc
Chilkat for Lua 5.1 / LuaJIT, arm64 Linux

v11.7.0 • 11-Nov-2026 • sha256: 8913a208fabef8da4609dfb235b018d1808044b79b7a31a3485dc8263b4d94c3
Chilkat for Lua 5.1 / LuaJIT, armv7l Linux


Alpine Linux (x86_64, aarch64)

For musl-based systems (Alpine Linux, including the official Alpine Docker images).

v11.7.0 • 11-Nov-2026 • sha256: 452b9f2a4000ec9a619ff7225dd01ce520b5b3f0ca796612771f9c355ef231d2
Chilkat for Lua 5.5, 64-bit Alpine Linux (x86_64)

v11.7.0 • 11-Nov-2026 • sha256: 4c6aa76310d59374f81d576d9ace8d3643469bdf02bb1d2583101e764a6a04d5
Chilkat for Lua 5.5, arm64 Alpine Linux

v11.7.0 • 11-Nov-2026 • sha256: 78a17080e2a925e59b78e388da3e3dddcb67f9dc431713f60c035b7f64b64819
Chilkat for Lua 5.4, 64-bit Alpine Linux (x86_64)

v11.7.0 • 11-Nov-2026 • sha256: ecfe25245d017f0774016180fe1afd6fd4401ca85cec26d2ebe1d8cdef5b68c1
Chilkat for Lua 5.4, arm64 Alpine Linux

v11.7.0 • 11-Nov-2026 • sha256: e77ae678d93b00f492d3792aa13ebb1ac98ae62026feb54783d048c84529a679
Chilkat for Lua 5.1 / LuaJIT, 64-bit Alpine Linux (x86_64)

v11.7.0 • 11-Nov-2026 • sha256: e5116bfdd8e8266e9c8e08305a7789a7f13e948409aa9f39e9a8ccf45accc61d
Chilkat for Lua 5.1 / LuaJIT, arm64 Alpine Linux


macOS (Apple silicon, Intel)

Each .tar.gz contains a code-signed chilkat.so (the extension Lua looks for on macOS too). Homebrew's lua (5.4) and luajit work with these.

v11.7.0 • 11-Nov-2026 • sha256: 435d5ca7a0693f999fb56ed8b4164a9eb6d4b7e62e3dac64b0ff316785ad3f61
Chilkat for Lua 5.5, arm64 MacOS

v11.7.0 • 11-Nov-2026 • sha256: 10a99dcf327d111b658180886bb2156b6aba96ccbfa2139120b0515e30562aca
Chilkat for Lua 5.5, x86_64 MacOS

v11.7.0 • 11-Nov-2026 • sha256: aec40e9c744304608988c5532685e52818477df5a0092224bdbdaa6722d5a291
Chilkat for Lua 5.4, arm64 MacOS

v11.7.0 • 11-Nov-2026 • sha256: 0e27b8d8f1dcab22738e07e55d29d6ccda3098966c88ec46d9303bd0f94d2c08
Chilkat for Lua 5.4, x86_64 MacOS

v11.7.0 • 11-Nov-2026 • sha256: 281442eab90d58ca50b34b0dd3f776d44a0d44acf8258a16ef38b4d65b10137d
Chilkat for Lua 5.1 / LuaJIT, arm64 MacOS

v11.7.0 • 11-Nov-2026 • sha256: 1d1635c5f600e6a4427b7ecf1bbc2b5a0beb23e103157dfff0baa6b06109e8b2
Chilkat for Lua 5.1 / LuaJIT, x86_64 MacOS


Getting started

  1. Download and extract

    tar xzf chilkat-lua5.4-x86_64-linux.tar.gz        # Linux / Alpine / macOS (your file name)
    # Windows: right-click the .zip → Extract All, or:  tar -xf chilkat-lua5.4-x64.zip

    macOS only: if the browser added a quarantine attribute, clear it so Gatekeeper does not block the module: xattr -dr com.apple.quarantine chilkat-lua5.4-arm64-macosx

  2. What's in the download

    chilkat-lua<abi>-<platform>/
    ├─ chilkat.so            the module (chilkat.dll on Windows)
    ├─ types/chilkat.lua     LuaLS annotations for editors
    ├─ test.lua              checks that the module loads
    ├─ README.txt
    └─ license files and a software bill of materials (chilkat.cdx.json)
  3. Try it without installing

    From the extracted folder (test.lua adds the current directory to package.cpath):

    lua test.lua
  4. Install

    Copy chilkat.so (or chilkat.dll) into a directory on your Lua's package.cpath — e.g. /usr/local/lib/lua/5.4, or on Windows the directory of lua.exe — or point LUA_CPATH at its directory (LUA_CPATH="/opt/chilkat/?.so;;"). Or use the one-command installer or LuaRocks above.

  5. Unlock

    Chilkat is fully functional for a 30-day trial. Call unlock_bundle once when your program starts; any string starts the trial, and your purchased unlock code is used the same way:

    assert(chilkat.unlock_bundle("Anything for 30-day trial"))

A first program

local chilkat = require("chilkat")
assert(chilkat.unlock_bundle("Anything for 30-day trial"))

local http = chilkat.Http.new()
http.connect_timeout = 10                              -- properties are fields
http:set_event_handler({
    percent_done = function(pct) io.write(pct, "%\r") end,   -- return true to abort
})

local html, err = http:quick_get_str("https://www.chilkatsoft.com/")
if not html then
    print(err)                                         -- the reason: http.last_error_text
    os.exit(1)
end
print("HTTP " .. http.last_status .. ", " .. #html .. " bytes")

local json = chilkat.JsonObject.new()
assert(json:load('{"a":1,"b":"x"}'))                  -- assert() raises with the Chilkat log
print(json:int_of("a"), json:string_of("b"))

The API in brief

The same classes, members and behavior as every other Chilkat product, in Lua style.

Chilkat for Lua
Loadinglocal chilkat = require("chilkat")
Objectslocal http = chilkat.Http.new()
Propertieshttp.connect_timeout = 30
local t = http.connect_timeout
Methodshttp:quick_get_str(url)
NamesChilkat's names in snake_case: QuickGetStr → quick_get_str, LastErrorText → last_error_text; class names as in Chilkat, without Ck
Failurereturns nil, err (err is the object's last_error_text), as io.open does; wrap the call in assert() to raise instead
Questionsmethods that answer a question (json:has_member, zip:entry_of) return true / false
Misusea wrong argument type, a missing argument, an unknown or read-only property raise a Lua error
Strings and bytesUTF-8 strings in and out; binary data as Lua strings (bd:get_data())
Progress eventsobj:set_event_handler{ percent_done = function(pct) ... end, abort_check = ..., progress_info = ... }; a true return aborts the method
Lifetimegarbage collected; obj:dispose() frees early, and in Lua 5.4+ local http <close> = ...
Indexes0-based, as in all Chilkat APIs: for i = 0, json.size - 1 do
Asyncno *Async methods; bound long calls with heartbeat_ms + abort_check

Troubleshooting

module 'chilkat' not found
chilkat.so / chilkat.dll is not in any directory of package.cpath of the Lua that runs the script: print it with lua -e "print(package.cpath)", or set LUA_CPATH.
undefined symbol: lua_newuserdatauv (or another lua_ function)
The download is for another Lua version: use chilkat-lua5.1-* for Lua 5.1 and LuaJIT, chilkat-lua5.4-* for 5.4, chilkat-lua5.5-* for 5.5. It can also mean the host program was built without exporting the Lua API (a statically linked Lua that cannot load any C module).
Windows: The specified module could not be found
The module imports the Lua API from lua51.dll / lua54.dll / lua55.dll. A Lua whose DLL has another name (for example lua5.4.dll), or a lua.exe without a Lua DLL, cannot load it; use a build with the standard DLL name (LuaBinaries, LuaJIT, MSYS2, vcpkg).
Error loading shared library on Alpine (or the reverse)
A glibc (Linux) build on Alpine Linux, or an Alpine build on a glibc distribution: use the download for the C library of the system.
macOS: the module “cannot be opened” or fails a code-signature check
Clear the download's quarantine attribute: xattr -dr com.apple.quarantine <extracted folder>.
chilkat.Http has no property 'conect_timeout'
Property names are checked: a misspelled property raises an error instead of being silently ignored.