Notations and some important data structures used in Habbo Hotel
Habbo Group Badge Notation (HGBN) v1 is a standard for the text-based notation designed to represent group badges within the Habbo ecosystem. It encodes structured badge data as a single string composed of multiple six-character segments. Each segment defines either a base image asset or a symbol overlay, including data about the asset id, tint color, and its placement on a 3×3 grid.
While HGBN v1 reflects the badge design definition, it is not an official format maintained by Sulake. Future updates or extensions may not be adopted by the company.
This specification exists to formalize and document how Habbo Hotel processes group badge components. It is:
HGBN is not a standard maintained by Sulake, and its future extensions MAY NOT be reflected in the game’s implementation.
HGBN v1 is a textual representation of layered symbols that enables:
This specification is intended for developers, researchers, archivists, and enthusiasts involved in the Habbo Hotel community, particularly those working on tools for Habbo group badges. It also serves as a common reference for understanding, implementing, and manipulating the Habbo Group Badge Notation (HGBN), which can be used for tasks such as developing interoperable software, emulators, and documentation for fan-driven projects. The audience also includes data scientists who may utilize this notation in image-related research or analysis. Familiarity with basic programming concepts, string manipulation, and image manipulation is recommended but not required.
HGBN v1.0 defines the known structure for how group badge designs used to be stored, based on the original implementation in Habbo Hotel.
HAFN is community-maintained. While efforts are made to ensure accuracy, Sulake may change the format at any time. Future extensions will aim to preserve backward compatibility whenever possible.
The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC 2119.
An implementation is considered HGBN v1.0 compliant if it adheres to the syntax, processing rules, and constraints defined in this document. A conforming parser implementation:
A valid HGBN string MUST:
X
for the base).A HGBN v1 string represents a complete badge by concatenating multiple six-character segments. The string is always ordered starting with the asset that should be at the bottom (base, identified by b
), followed by the assets on top (symbols, identified by s
).
Note
The trailing hash in the file name (e.g., b01bfc395d8c4be707922c3da5b3f561
) is probably used for image caching and security and is ignored in the notation specification. It is created by using MD5 on the notation string concatenated with the constant ef2356a4926bf225eb86c75c52309c32
.
The following Extended Backus-Naur Form (EBNF) defines the syntax of HGBN v1.0:
<hgbn> ::= <baseSegment><symbolSegment>+
<baseSegment> ::= "b"<assetId><colorId><basePosition>
<symbolSegment> ::= <symbolType><assetId><colorId><position>
<symbolType> ::= "s"
<assetId> ::= <digit><digit>
<colorId> ::= <digit><digit>
<basePosition> ::= "X"
<position> ::= <gridDigit>
<digit> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
<gridDigit> ::= "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"****
Field | Type | Format | Description |
---|---|---|---|
segmentId |
Character | b , or s |
b indicates a base segment; s indicates a symbol segment. |
assetId |
Integer | Two digits (00-99) | Identifier for the image asset. |
colorId |
Integer | Two digits (00-99) | Color tint identifier for the asset. |
position |
Integer | One digit (1-9) | Position on a 3×3 grid where the element is placed. |
The following regular expression can be used to validate the general structure of an HGBN v1.0 string:
/^(b\d{2}\d{2}X)((s|t)\d{2}\d{2}[1-9]){0,4}$/
X
position to represent that its position MUST NOT be changed.Error Code | Description |
---|---|
ERR_ASSET_ID_RANGE | assetId is not a two-digit number between 00 and 99. |
ERR_COLOR_ID_RANGE | colorId is not a two-digit number between 00 and 99. |
ERR_INVALID_POSITION | position is not a digit between 0 and 8. |
ERR_SYNTAX | The badge string is missing required segments or delimiters. |
An HGBN-compliant parser MUST reject invalid strings and report an appropriate error.
Consider the following example HGBN v1.0 string (without the trailing hash):
b1001Xs05175s05173s12114
Explanation:
b1001X
→ Base with asset id 10
, color id 01
, at grid position X
.s05175
→ Symbol with asset id 05
, color id 17
, at grid position 5
.s05173
→ Symbol with asset id 05
, color id 17
, at grid position 3
.s12114
→ Symbol with asset id 12
, color id 11
, at grid position 4
.A badge without the base could be specified as:
s44114s04115s04113s05074
Explanation:
s44114
→ Symbol with asset id 44
, color id 11
, at grid position 4
.s04115
→ Symbol with asset id 04
, color id 11
, at grid position 5
.s04113
→ Symbol with asset id 04
, color id 11
, at grid position 3
.s05074
→ Symbol with asset id 05
, color id 07
, at grid position 4
.
Possible future extensions of HGBN MAY include:
b
, and s
to support new features.Revisions to the specification SHALL be versioned appropriately, and backward compatibility MAY be maintained where possible.
Although HGBN is a textual notation and does not execute code, implementations MUST sanitize and validate input strings rigorously to prevent issues such as:
Strict adherence to the syntax and processing guidelines is required for safe implementation.
Not available
Not available
Not avaliable
Position Id | Grid Cell |
---|---|
1 | Top-left |
2 | Top-center |
3 | Top-right |
4 | Middle-left |
5 | Center |
6 | Middle-right |
7 | Bottom-left |
8 | Bottom-center |
9 | Bottom-right |
Kinas
from hhbr
puppaplaah
from hhbr
.gif
and from badge-fill
for non-transparent background)why/group-badges