Pal Breed Chart hero
Shipped Started 2025

Pal Breed Chart

A Palworld breeding calculator: one Rust engine shipped as a CLI, a WebAssembly web app, and native desktop and mobile shells.

  • Rust
  • WebAssembly
  • SvelteKit
  • Tauri v2
  • TypeScript
Started
2025
Status
shipped
Platforms
Web · Windows · macOS · Android · iOS

Pal Breed Chart answers the question every Palworld breeder eventually asks: “what’s the shortest path from the pals I own to the pal I want, with the passives I want?” One Rust engine does all the work, and every frontend (the palbreed CLI, the static web app at palbreedchart.com, and Tauri shells for desktop, Android, and iOS) is a thin skin over the same core.

Why it exists

Breeding in Palworld is a 44,851-combination search space with probability-weighted passive inheritance layered on top. Spreadsheets don’t cut it, and the existing tools were either online-only or Windows-only. I wanted a calculator that runs anywhere, works offline, and (critically) never uploads a player’s save file.

Highlights

  • One engine, five frontends. The Rust workspace compiles to a native CLI, to WebAssembly running in a Web Worker for the browser, and into Tauri v2 shells for desktop and mobile.
  • Save-aware planning. A pure-Rust save reader handles Palworld’s compression and Unreal GVAS/FArchive formats, including Dimensional Pal Storage, so the solver can plan from the pals you actually own. Parsing happens locally; the web and native apps never upload a save.
  • Probability-ranked passive plans. The solver goes beyond species paths: it ranks plans by exact passive-inheritance probability and can optionally finish a build with Surgery Table costs pulled from the save.
  • Self-generated data. The embedded database (299 pals, 1,905 passives, and every breeding combination) is extracted from the installed game by my own data pipeline, not copied from other tools.
  • Verified correctness. Before retiring the reference implementation, results were cross-checked against PalCalc for Palworld 1.0; durable Rust tests now pin that proof surface, down to exact probability outcomes and gender-ratio edge cases.

Technical approach

The workspace splits into model, save-reader, solver, CLI, and WASM-bindings crates with stable JSON at the boundary. The web app is a static SvelteKit build (no backend, no accounts, no telemetry) with the engine in a Web Worker to keep the UI responsive during large solves. A Playwright suite covers the web flows end to end.