It provides custom base-256 and base-64 encodings, specially tailored to ESO's character set support.
This library compresses binary data.
It provides custom base-256 and base-64 encodings, specially tailored to ESO's character set support.
Main Functions
Prefixing
If your addon intends to read the data from a publicly visible source such as a guild note, mail, chat, etc. you will need a way to know that it is your message. Even if you are using it as internal storage, it is preferred (and often necessary) that you provide a schema for multi-dimensional mapping. As such, you should generally use this over the Encode/Decode directly for anything but the most basic encodings.
Important note: always define prefixes as early as possible in your addon, preferably in AddOnLoaded. Keep in mind that you want someone that is receiving the data to also already have the prefix defined. If you wait until you're sending data to define a prefix, if person B doesn't perform X (because they are receiving, not sending): they won't be able to receive.
prefix: can be anything besides a number. I recommend a small, but unique string. This is a global scope and two addons using the same exact prefix will cause one to fail. Fortunately, if that ever happened the user would get an error message specifying which two addons are conflicting, which would make it easy to report to the author. Prefixes are not limited to the character set of the encoding, only to ESO's overall character set.
addonName: does not have to be the official name of the addon, but it is highly recommended for the purpose of the error message in the event of a conflict.
purpose: must be unique to the addon, but does not need to be globally unique. Shorter is better. This is used in the encoding and decoding process for an author to distinguish between data when the same addon is using the encode function for different types of data (such as recipes and blueprints). Even if you only plan to do one type of data, a purpose is still needed.
base: determines whether this prefix is associated with base 64 or 256. A prefix can only be associated with one base and all future Parse, Encode and Decode uses with this prefix will adhere to what is defined here. Defaults to 256.
schema: in order to transfer large amounts of data between players, it's necessary to forgo passing the keys along. That's where the schema option comes in. First, a few notes about the schema table
- It does not allow mixed key types in the same dimension but does allow them on different dimensions.
- It can not reliably support auto-indexed multi dimensional tables due to Lua being fickle about order.
- It is only supported for prefixed encoding, meaning if you aren't using DefinePrefix you can't define a schema.
As long as you follow the above rules on schema limitations, using schema is very simple: refer to the examples in LBE Test.
Parsing
If your data source is not guaranteed to be purely your data, this will trim it out and give you back a comprehensive table.
text_string: any source that returns a string of text that may contain what you're trying to parse.
addonName: if included, only strings that use a prefix by this addon will be returned.
purpose: if included with addonName, only this specific prefix will be returned.
dataToString: determines whether the decode should be handled by DecodeToString (string inside this output table) or DecodeToTable (table inside of a table). This flag has its own function: ParseDataToString. Shares the function ParseFirstDataToString with firstOnly.
firstOnly: determines if the parser should stop looking after it has found a match. This flag has its own function: ParseFirst.
The returned table will contain the decoded data, the addon name, encoding base, purpose, prefix, schema and schemaType (if applicable). The table is numerically indexed, allowing more than one of the same prefix to exist in the same dataset.
If your data source is guaranteed to be purely your data, but possibly an earlier version, this will return purely the data in a table (or a new copy of the schema if the data was not found)
Additional Functions
Encoding
binary: can be a number (not recommended), a string or a table of boolean values. It will handle the conversion from the table, so you do not need to worry about whether it is a numeric or boolean binary value.
base: 64 or 256. Defaults to 256. If addonName and purpose are provided, this parameter inherits from them and is ignored.
Decoding
The "base256" must be a string or number (not recommended).
Returns a table of boolean values.
base: 64 or 256. Defaults to 256. If addonName and purpose are provided, this parameter inherits from them and is ignored.
Returns a string.
Versioning
As your schema changes, you will need to handle the different versions that may be in use.
Note: If you know the data in the old schema will fit inside of the new schema, use ParseTrusted instead of handling this yourself (LBETest includes examples on short and long form version handling).
This attempts to convert the data from one schema to another.
binary_table: the real, old data
addonName: likely the same, but is the name of the addon from the new schema
purpose: the new schema's purpose
Returns a table or false on failure.
If you know the old version won't work, this function will make a blank copy of the new schema instead to be used in its place.
Returns a table or false on failure.
Helpers
These are functions that you don't necessarily need but I found useful.
IsTrue will take a value and determine if it is true. Unlike Lua's default, it evaluates 0 and empty strings as false. If strict is true, only the most basic forms of boolean "true" will be considered true. For example: 5 or "content" would evaluate as false.
NumBool will take a value (assumed boolean) and return 0 or 1. When combined with doing your boolean checks using IsTrue, it allows saving booleans as a single byte instead of multiple in savedvars, which adds up for addons using a lot of booleans.
LBE:SplitString will take an input string and break it down character by character into a table. If "separator" is used it will be the preferred method of breaking the string. This splitter does not consume any characters unless specified by separator.
Works like SplitString, except it determines whether the character is true or false and outputs it as a boolean value. Only recommended for parsing binary strings.
Combines two 1D tables, such as combining separate lists of IDs together.
Converts a 1D table into a table of of those indexes, such as turning a list of IDs into a schema.
Creates a copy of a schema's table into a new table with all values set to false.
Converts a table into a new table that abides by the schema that comes from that addonName/purpose combo.
Overwrites values in the target table with values in the origin table where they have matching indices.
Converts the table per its schema into a binary string.
How to Include
It is recommended to have users download the library directly. If you want to include it, all you have to do is include the entire folder as is.
In your addon, simply add this line
To view examples and test out the functions, install: LBE Test
Compression Size
Regardless of selection, keep in mind the byte size of your prefix (if applicable), the prefix glue is 2 bytes (only applicable if using a prefix) and the check digit is 1 byte.
Base 256
The final size is affected by several factors. ESO measures input by characters but saved data by byte. Some of the characters in the encoding are 2 bytes, so the ratio is not always 8:1. The byte size can be checked with # before attempting to send/save it to a location of limited data.
Base 64
This uses purely single byte characters. As such, you can expect a consistent 6:1 ratio.
Help
Are you interested but have no idea where to start? Send me a PM and I can easily assess whether LBE will do what you want and how difficult it would be to do.
ABOUT THIS LISTING
This page describes LibBinaryEncode by Rhyono. The description and screenshots are the author's own, imported from their listing on ESOUI on 3 October 2026: https://www.esoui.com/downloads/info1647-LibBinaryEncode.html
Mythiq.net hosts no files for it. The download button goes straight to the release file on cdn.esoui.com, so you are downloading from the author's own host, not from a copy of ours.
The download count, rating and comments on this page start at zero and count Mythiq.net only. The source's own figures are not copied here — they measure a different site, and a number that cannot be checked against our own ledger is not worth printing.
Requirements
Game versions
7.3.5
7.2.5
7.1.5
7.0.5
6.3.5
6.2.5
API VERSION
Built for ESO API version 7.3.5, 7.2.5, 7.1.5, 7.0.5, 6.3.5. After a patch the game marks add-ons built for the previous API as out of date; the "Allow out of date add-ons" checkbox in the add-on menu loads them anyway, and most work.
LIBRARIES
Many ESO add-ons depend on a shared library — LibAddonMenu-2.0 above all — which is installed separately, exactly like an add-on. A dependency that is missing shows as the add-on simply not appearing in the list.
CONSOLE
Add-ons are PC and Mac only. There is no way to load them on console.
Installation
1. Download the archive with the button on this page and unzip it.
2. Move the unzipped folder into your add-ons directory:
Windows — Documents\Elder Scrolls Online\live\AddOns
3. Start the game, and at the character select screen click Add-Ons.
4. Tick the add-on. If it is greyed out and marked out of date, tick "Allow out of date add-ons" at the top of the same panel.
5. Log in. Most add-ons need a /reloadui after they are first enabled.
UPDATING
Delete the old folder first. ESO loads everything it finds, and two copies of one add-on is the usual cause of "an add-on has produced an error" on login.
This release downloads from cdn.esoui.com, not from us, so
there is no checksum to compare against. Scan the archive before you unpack it.
Version history
v1.34Latest
16 Mar 2022 · 7.5 KB via cdn.esoui.com · 0 downloads Download
Version 1.34 - API Bump
Version 1.33 - API Bump
Version 1.32 - API Bump
Version 1.31 - API Bump
Version 1.30 - API Bump
Version 1.29 - API Bump
Version 1.28 - API Bump
Version 1.27 - API Bump
Version 1.26
*Fixed MergeTables issue (thanatos6110)
*Exposed FlattenTable
Version 1.25 - Optimized MergeTables
Version 1.24
*Non-boolean values will now default to false instead of true
*Added MergeTables
Version 1.23 - Added ParseTrusted
Version 1.22
*Fixed an issue
*Added partial logging (disabled and only should be used for debugging)
Version 1.21 - Replaced all 2 dimension support with Nth dimension
Version 1.20 - API Bump
Version 1.19
*API Bump
*Added ConcatTables
Version 1.18 - Added IsLibrary flag
Version 1.17 - API bump
Version 1.16
*Added partial validation to encoding to prevent non-schema indexes from being included
*Removed decode and encode (lowercase)
*Decode and Parse now default to table output
*Added DecodeToString
*Added DecodeToString64
*Added ParseDataToString
*Added ParseFirstDataToString
Version 1.15
*Changed insufficient data for schema to fill to the best of its ability and use false for the remainder
*Added Parse being able to specifically return first prefix found
*Added ParseFirst
*Added ParseFirstDataToTable
*Added ConvertSchema
*Added CloneSchema
Version 1.14
*Replaced non-parsing characters in base-256 encoding. Previously encoded strings may fail to parse.
Version 1.13
*Added schema to multiple functions
*Added ConvertTable to convert auto-indexed ID tables to schema-ready tables
*Added support for 1 and 2 dimensional numeric tables
*Added schema extractor and sorters
*Fixed LBE:IsTrue and LBE:NumBool not returning a value
*DecodeToTable now uses schema to generate table data
*DecodeToTable64 now inherits from DecodeToTable
*Disallowed updating a prefix after defining it
*Boolean addon names and purposes are now disallowed
Version 1.12
*Added custom base 64 encoding
*Added Encode64, Decode64, DecodeToTable64
*Added base parameter and awareness to multiple functions
Version 1.11
*Added automatic encoding glue when using a prefix
*Added check digit to ensure decoding length
Version 1.10
*Removed LibStub dependency
*Added Decode and Encode aliases
*Moved table output decode to DecodeToTable
*DecodeToTable uses boolean return values instead of strings
*Improved SplitString
*Added SplitBooleanString
*Added DefinePrefix
*Added support for custom prefixes in Encode and Decode
*Added Parse and ParseDataToTable for taking strings that are not pure data
Version 1.09
*API bump
*Added AddOnVersion
Version 1.08 - API bump
Version 1.07 - API bump
Version 1.06 - API bump
Version 1.05 - API bump
Version 1.04 - API bump
Version 1.03
*Changed string 0 to evaluate false.
*Added strict flag to IsTrue and NumBool.
*Added choice flag for decoding to a string or table.
*Added specialized string splitter.
Version 1.02 - API bump
Version 1.01 - API bump
Off-site on cdn.esoui.com —
no checksum, because we never held this file.
Link checked by our review team on 3 Oct 2026.
Tell us if something is wrong — a file that will not work, content taken from
someone else, or anything that looks unsafe. Reports go to our review team, not
to the author.
We use cookies to ensure that we give you the best experience on our website and improve your experience. By continuing to use this site you consent to such use of cookies.