Describe your remotes in a schema. Get server and client modules that pack them into buffers, check everything a client sends, and hold up when a client is hostile.
You describe your events and functions, and what they carry, in a .blink file. The compiler turns
that file into a server module and a client module. Both are plain Luau with no runtime dependency.
Calls are batched into one buffer per frame, and each type is packed as tightly as its declaration
allows.
Packets are bounded before they are parsed. Each player gets a byte budget, and each event can
get its own rate limit. Every length is checked before the read it pays for. One malformed
event is dropped without taking the rest of the batch with it. How the server protects
itself.
Small on the wire
Booleans and optional flags share a bitfield, and boolean[] packs eight elements to a byte.
A length is sent relative to its range, and a rotation fits in 7 bytes. Unreliable events that
cannot fit are refused at compile time. Bandwidth and sizes.
Checked at compile time
A schema that cannot work never builds. That covers map keys that can never be looked up,
cyclic imports, unbounded decode loops and debug remotes left in a release build. Each gets a
diagnostic with a code and a source span. Diagnostics.
Tooling included
The CLI has watch mode and build profiles. A Studio plugin gives you an editor with live
diagnostics and autocomplete, and TypeScript definitions are available for roblox-ts.
Studio plugin.
BlinkBlox is a maintained fork of Blink. Upstream froze this line
of the compiler in 2026 and began a rewrite, and it declared an unbounded parse of a hostile client
buffer out of scope. This fork fixes that and continues from there, without giving up the
TypeScript output, the Studio plugin or the documentation.
Zap is a neighbouring compiler that focuses on bandwidth. It
leaves rate limiting to the game, and one malformed event discards the rest of that player’s batch.
BlinkBlox
Blink 0.18
Zap
Per-player, per-event rate limits
Yes
No
No
A malformed event drops only itself
Yes
No
No
Shared bitfield for booleans and optionals
Yes
No
Yes
TypeScript output
Yes
Yes
Yes
Install BlinkBloxRokit, pesde, release binaries or the Studio plugin.
Quick startFrom an empty file to a working event in five minutes.