# kaitai-io/kaitai_struct

Kaitai Struct: declarative language to generate binary data parsers in C++ / C# / Go / Java / JavaScript / Lua / Nim / Perl / PHP / Python / Ruby / Rust

Repository: https://github.com/kaitai-io/kaitai_struct
Canonical: https://ross.abutalabs.com/products/kaitai_struct
Homepage: https://kaitai.io
Language: Shell
License Family: other
Topics: reverse-engineering, protocol-analyser, file-format, declarative-language, ruby, java, javascript, python, csharp, golang, perl, php, graphviz, cpp, lua, nim, c-plus-plus, go, rust
Last push: 2026-08-17T19:29:59+00:00

## Health v2 (maintenance only)
Score: 76/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 98, release rhythm 35, longevity 100
- inputs: {"age_days": 3847, "days_push": 16, "days_rel": null, "gap_med": null, "n_releases_24m": 0}
- flags: no_releases, no_license
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 4664, forks 209 (observed 2026-08-28T04:08:56.497439+00:00)

## What it is
Kaitai Struct is a declarative language for describing binary data structures (file formats, network packet layouts) in .ksy files. A compiler generates ready-to-use parsers in many target languages including C++, C#, Go, Java, JavaScript, Python, Ruby, and Rust.

## Use cases
- parse binary file formats without hand-writing parsers
- reverse engineer unknown file formats
- dissect network packet protocols
- generate parsers for the same format in multiple programming languages
- extract assets from game or firmware binary files
- document and share binary format specifications

## When to choose
- you need to parse a binary format across several languages
- you want a declarative, maintainable spec instead of error-prone manual parsing code
- you are reverse engineering file formats or protocols
- you want to reuse a large library of pre-defined format descriptions

## When to avoid
- you need to write (serialize) binary data as well as read it — writing support is limited
- your format is highly dynamic or requires complex procedural parsing logic
- your target language is not among the supported ones
- you need a runtime-configurable parser rather than compiled code

## Facets
- artifact type: library
- maturity: active
- function: parser, serialization, developer-tools, reverse-engineering
- domain: parsers, files, reverse-engineering, developer-tools, programming-languages
- platform: cross-platform, cpp, go, rust, python, jvm, ruby, php, lua, dotnet
- tags: binary-format, declarative-language, code-generation, protocol-analysis, file-format, ksy, javascript, nim, perl

## Member repositories
- kaitai-io/kaitai_struct (main) score 76

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:08:56.497439+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-29T18:19:25.810264+00:00, confidence not recorded.
  - readme: https://github.com/kaitai-io/kaitai_struct (fetched 2026-08-28T04:08:56.497439+00:00, sha e01327380ffa)
  - homepage: https://kaitai.io (fetched 2026-08-29T09:03:47.279367+00:00, sha bdbb58ede9d9)
  - site_page: https://doc.kaitai.io/ (fetched 2026-08-29T09:03:47.288153+00:00, sha 73d3bd926c68)
- Data as of 2026-08-30T08:39:29.467469+00:00.
