#roblox #rbxm

no-std rbxm

Reader for Roblox model files

7 releases

0.3.0 Dec 17, 2022
0.2.1 Nov 16, 2021
0.1.3 May 8, 2021

#463 in Encoding

24 downloads per month




crates.io Documentation MIT/Apache-2 licensed

A reader for Roblox model files, implemented in Rust.


  • Strongly-typed handling of many Roblox instance kinds
  • Feature flags to add support for less stable formats, E.G. CSGPHS Meshes.
  • #[no_std] support, as long as alloc is present


use rbxm::{from_file, SerdeError, ModelError};

fn main() {
    // Read a model from a file
    let model = match from_file("./Model.rbxm") {
        Ok(model) => model,
        Err(SerdeError::IoError(err)) => panic!("IO Error: {}", err),
        Err(err) => panic!("Error parsing model: {}", err),

    // Get a part from a path, this looks for a root node named ModelSection with a child named Part, and returns
    // that child.
    let part = match model.get_path("ModelSection/Part") {
        Ok(part) => part,
        Err(ModelError::NotFound) => panic!("Couldn't find instance at \"ModelSection/Part\""),
        Err(ModelError::AmbiguousPath) => panic!("Found more than one instance matching \"ModelSection/Part\""),
        Err(err) => panic!("Model Error: {}", err),

    println!("Part Class: {}", part.borrow().kind.class_name())


  • Complete instance info documentation
  • XML file support
  • More helper methods on data
  • Instance new methods + #[non_exhaustive] for better future compat
  • Improve parsing modularity, add a low-level API for it maybe


Licensed under either of


Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.


~60K SLoC