This project was created to allow inspection of ability data that has been extracted from The Elder Scrolls Online game files.
Note
This website downloads around 20mb of data. It should be cached by your browser but please be careful on mobile data plans.
You can just use website: https://sheumais.github.io/esoiddictionary/
To extract the data for yourself follow these steps:
- Download ESOExtractData
- Run the following command, substituting in the appropriate file paths for your system/game.
EsoExtractData.exe "C:\Program Files (x86)\Steam\steamapps\common\Zenimax Online\The Elder Scrolls Online\depot\eso.mnf" .\export\ --extractsubfile combined --archive 0- In the
export\000\folder, locate the largest(Number)_Uncompressed.EsoFileDatafile. (Example:1257315_Uncompressed.EsoFileData)
This file contains all the data, and is compressed and then copied into /static/data.bin.zst each patch.
All ability data remains the copyrighted intellectual propery of Zenimax Online Studios.
Due to the nature of the file (a database dump from ZOS) the format can and will change between patches slightly.
An implementation of a parser is updated by Dave from UESP when necessary and can be found on GitHub.
I got Claude to port the file format definition to a Rust struct which is available as an (unstable) crate.
The format of the file is also documented on UESP.net.
Download and install Rust
Install trunk
cargo install --locked trunkAdd the WebAssembly target
rustup target add wasm32-unknown-unknownServe locally
trunk serve --public-url /esoiddictionary/The game ability data, despite being ~100mb on disk, can be compressed down to <8mb.
This compressed form of the data is bundled with the web assembly file, allowing extremely quick navigation of the data.
I run a short script to generate the byte indexes of each skill and put that into /static/index.bin.
These indexes are used to get the data from the decompressed file quickly. The indexes map into the original 100mb data, which exists in the browser's memory after being downloaded (hence the short load before the website opens despite the data being cached).
The website is written in Rust using the Yew framework.