CLI tool
overtools/OWLib avatar
overtools/OWLib

DataTool: pulling Overwatch assets out of the game with C#

DataTool is a program that lets you extract models, maps, and files from Overwatch.

621 stars69 forksC#MIT

At a glance

What is it?
DataTool is a command line tool that reads the installed Overwatch client and extracts its models, maps, skins, voice lines and other assets, which means the interesting work is in the file format libraries underneath it rather than in the tool itself.
Who is it for?
DataTool fits a modder, artist or researcher who needs the actual assets out of an Overwatch install rather than screenshots of them, since it reads the installed client directly and can emit models, maps, unlockables and voice lines in bulk.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 12 days ago.
What is it written in?
Mainly C#, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What OWLib is: a set of file format libraries with a tool on top

The repository is described as a series of programs and tools to interact with the Overwatch files, and the name is OWLib while the tool in the overview is DataTool. The top level layout shows what sits underneath. There is a DataTool/ directory, a TACTLib/ directory, a TankLib/ directory and a TankPackage/ directory, plus TankTonka/, TankView/, TankLibHelper/, TankLib.Test/, ReplayMp4Tool/ and CASCEncDump/. There is also a TankPackage for the package format, an owm-formats/ directory and a types.txt, which is the kind of file that tells you the project has had to describe the game's data structures somewhere. The project is written in C#, MIT licensed, and builds as a solution named OverwatchToolchain with a .slnx file, a global.json pinning the SDK and a Directory.Build.props for shared build settings. The releases are named after DataTool, at v2.25.0.0+1151 on 2026-10-11, and the last push to the repository was on 2026-10-11.

The command shape, and the fact that it needs the game installed

DataTool is a command line application, and the project says plainly that you need to know how to use a command line to use it. The steps are: make sure Overwatch is installed, download the latest release from the Discord, extract all the files to a folder that is not your Overwatch directory, open a command line in that folder, and run DataTool.exe to get the list of help and supported commands. Most commands follow the structure of the game directory, then a mode, then mode arguments. That structure is the whole interface design, and it is a sensible one, because it keeps the same shape whether you are listing or extracting. The requirement that Overwatch be installed is worth pausing on, because it is the constraint that shapes the tool. DataTool does not ship a copy of the assets or a manifest of them. It reads the files that are already on your disk, which is also why the input is a directory path you pass in rather than a file you select.

Listing what is in the game

The list commands are the first thing to run, because they tell you what the tool can see in your particular install. The examples cover the main content categories.

code
DataTool.exe "C:\Games\Overwatch" list-heroes
DataTool.exe "C:\Games\Overwatch" list-unlocks
DataTool.exe "C:\Games\Overwatch" list-maps
DataTool.exe "C:\Games\Overwatch" list-achievements

Many of the list commands support JSON output, which is what you want if you intend to script against the result. You have to provide the --json flag and an --out flag to say where the JSON file should be saved, and the example shows the two together.

code
DataTool.exe "C:\Games\Overwatch" list-heroes --json --out="C:\Games\Extracts\Heroes.json"

The --out path is the extract directory in that example, not a path inside the game, which is consistent with the instruction to keep the tool out of the Overwatch directory.

The extract commands, and the filter syntax

The extraction commands are where the work happens. The most common ones are extract-unlocks for hero unlocks such as skins, highlight intros, emotes, sprays and icons, extract-general for the class-level unlocks such as class sprays, icons and portraits, extract-maps for maps, extract-hero-voice for hero voice lines grouped by type, and extract-conversations for hero conversations. The filter syntax is the part that makes bulk work practical. The command structure is the game directory, extract-unlocks, the output directory and then optional filters, and each filter follows the format of a hero name, a pipe, then a type and an item name. You can use * for the hero name or for the type to mean everything. The valid types are skin, icon, spray, victorypose, emote and voiceline. The examples show the range from a single named skin to everything for every hero.

code
DataTool.exe "C:\Games\Overwatch" extract-unlocks "C:\Games\Extracts" "Tracer|skin=Overwatch 1"
DataTool.exe "C:\Games\Overwatch" extract-unlocks "C:\Games\Extracts" "*|skin=Overwatch 1"
DataTool.exe "C:\Games\Overwatch" extract-unlocks "C:\Games\Extracts" "*|skin=*"
DataTool.exe "C:\Games\Overwatch" extract-unlocks "C:\Games\Extracts" *
DataTool.exe "C:\Games\Overwatch" extract-maps "C:\Games\Extracts" "Dorado"

The documentation is candid about the cost of the broad cases, labelling the all heroes skins command as taking a long time and the everything command as taking a very long time, since it includes skins, emotes and highlight intros.

Voicelines and the flags that reshape the output

Voice extraction has its own set of switches, and they are worth reading because they show how much the tool's output is a product of choices rather than a fixed format. There are flags for extracting subtitles as txt files next to the audio files, which is off by default, and then a set of grouping flags for when extracting voice lines: grouping by hero is on by default, grouping by type is on by default, grouping by skin is off by default, and grouping by locale is off by default. Each of these can be turned on and off independently, so you can ask for the same voice data organised by hero, by type, by the skin a line belongs to, or by the language it was recorded in. The commands themselves are simple, with extract-hero-voice and extract-conversations taking the game directory, the output directory and the hero name.

code
DataTool.exe "C:\Games\Overwatch" extract-hero-voice "C:\Games\Extracts" Tracer
DataTool.exe "C:\Games\Overwatch" extract-conversations "C:\Games\Extracts" Tracer

The filters for unlockable voice lines use the same type syntax as the other unlocks, so a voiceline filter such as Reaper|voiceline=* pulls one hero's lines and leaves the rest alone.

Blender is where the extracted models go

The models are extracted so that they can be used, and the route is a Blender addon. To import skins or maps into Blender you need to install the project's addon, which lives in a separate repository called io_scene_owm, and the releases and updates for the addon are posted on the same Discord as the tool. The requirement is Blender 3.5 or above. The separation into two repositories is a reasonable structure, since the addon has a different release cycle and a different audience from the extraction tool, but it does mean that extracting assets and using them are two installations, and the addon is the piece that turns a pile of extracted files into something you can open in a 3D application. The project also ships ReplayMp4Tool and TankView in the tree, and a CASCEncDump directory, which suggests the toolkit reaches beyond assets into the game's data formats and replay handling.

Distribution through Discord, and the disclaimer

Two things are worth knowing before you plan to use this. The first is where the binaries come from. The overview says downloads for the tools and updates are posted on GitHub releases and on the Discord, and the how-to section says to download the latest release from the Discord, with support and discussion also there. If the invite link does not work, the project says to paste XM93ZdB into the invite box. So there are two channels, one of which is a chat server rather than a release feed, and the practical advice is to compare what you download against the GitHub release. The second is the legal framing. The project states it is not affiliated with Blizzard Entertainment, all trademarks referenced are the properties of their respective owners, and it carries a 2025 Blizzard Entertainment copyright line. The default branch is develop rather than main, so the build you get from a release may not be the head of the branch you are reading.

Editorial conclusion

DataTool fits a modder, artist or researcher who needs the actual assets out of an Overwatch install rather than screenshots of them, since it reads the installed client directly and can emit models, maps, unlockables and voice lines in bulk. It does not fit a user without the game installed, because the tool's input is the game's own directory, and it does not fit someone looking for a supported asset pipeline, because the project states it is not affiliated with Blizzard and distributes releases through a Discord channel rather than a signed release page. Before you run it, keep the extracted files out of the game directory, as the project instructs, and expect the extract-everything commands to take a very long time, since the documentation flags them as slow and the all-heroes voiceline pull is a separate job again.

Frequently asked questions

What does DataTool do and what does it need?

DataTool is a command line application that extracts models, maps, skins, voice lines and other assets from an installed Overwatch client. You need Overwatch installed, the release extracted to a folder that is not the game directory, and a working command line.

How do I extract only one hero's skin from Overwatch?

Use the extract-unlocks command with a filter in the format hero name, a pipe, then type and item name. The example in the project overview is DataTool.exe with the game directory, extract-unlocks, the output directory and Tracer|skin=Overwatch 1. Valid types include skin, icon, spray, victorypose, emote and voiceline.

Can DataTool output JSON?

Many of the list commands support JSON output, and you need both the --json flag and an --out flag to say where the file goes. The example passes list-heroes with --json and --out pointing at a Heroes.json file in the extracts folder.

How do I use the extracted models in Blender?

You need the project's separate Blender addon, io_scene_owm, whose releases are posted on the project's Discord. Blender 3.5 or above is required, and the addon is what imports the skins and maps the tool extracts.

Official sources

  1. Issues
  2. License: MIT
  3. overtools/OWLib on GitHub
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/overtools-owlib.svg)](https://hysenlabs.com/projects/overtools-owlib)

Was this useful?