Library & batch export
The Library tab lets you browse your collection of solved .art files and batch-export them for the companion viewer app. This page covers the folder tree, the export queue, targeting, formats, and resume behavior.
Is ART/GTO open source?
No. The solver itself is a commercial desktop app. What is open is the output: the .artgto format is documented so you can read your solutions with your own tools, convert ranges and build apps on top of them.
The full layout of a file — header, sections, index, and how the numbers are stored — is written down in File formats. If you would rather look at a solution than parse one, the browser viewer opens exports with nothing to install.
What's in a solver output file
A .artgto export is one file per solved spot. Reading one from your own code means walking four parts:
| Part | What it holds |
|---|---|
| Header | The ARTG signature, the format version (currently 1), and a pointer to the index at the end of the file |
| Manifest section | The preflop, flop and turn strategy nodes |
| Street sections | One compressed section per turn card, and one per turn + river pair |
| Index | Where every section sits in the file, preview metadata (board, ranges, pot), and a precision string (currently u8) |
A strategy node is one decision point in the game tree: the actions available there and, for every combo in the acting player's range, the frequency of each action. Frequencies are stored in 8-bit form — 0 to 255 per action, summing to 255 for each combo — and the precision string tells your reader how to scale them back to percentages.
Because the index sits at the end and lists every section, a reader can fetch the header, then the index, then only the sections it actually needs. That is how the web viewer opens a large export without reading the whole file.
Converting ranges and exporting results
What the app supports today:
- Range text in and out. The
Range Editor'sTextcard reads shorthand (AA,AKs:0.5), exact combos (8d7h),+expansions (JJ+) and PioSOLVER weight blocks ([50.0]…[/50.0]); ranges pasted from GTO Wizard work as-is.Export rangeturns the current range back into that same text, grouped by weight, ready to paste elsewhere. Ranges has the full syntax table. - Range files inside an export. Every export ships a
ranges\folder with one subfolder per position and plain text, comma-separated combo lists — readable with any text editor or script. - Two export formats.
.artgto, the single-file default the viewer reads, and a legacy JSON folder of.json.zstfiles for third-party tooling. Both are described in File formats.
There is no converter to other solvers' proprietary solution formats, and nothing beyond the range text above converts between range formats.
The folder tree
Open the Library tab and pick a library root — the top-level folder that holds your solved spots, typically organized as library/<pot-type>/<position-pair>/. The left pane shows a recursive folder tree rooted there.
Click a folder's checkbox to add it to the export queue. Click the folder name to select it and see its contents in the right pane. Use the Refresh tree button if you have added or removed .art files outside the app.
Settings → Folders as well. It persists across restarts.The export queue
Checked folders appear in the export queue at the bottom of the Library tab. The queue is persistent — it survives app restarts, just like the Jobs queue. You do not lose your selection if you close the app overnight.
Each row shows the folder path, a destination (where the exported files will go), and a count of pending spots. When Skip already exported is on (the default), the pending count reflects only the spots that have not been exported yet, not the entire folder.
Targeting destinations
You can set each row's destination individually with its Browse button. But for a large library, two bulk-targeting tools save time:
- Target pattern. Type a pattern like
D:\export\{rel_path}in theTARGET PATTERNfield and clickApply to all. The{rel_path}placeholder is replaced with each folder's path relative to the library root. Every row gets a destination in one click.
- Match folder. Click
Match folder…and pick the parent of your export tree. For every queued folder whose library subfolder (e.g.3bp/buvssb) already exists under that parent, the destination is auto-filled. Rows with no matching subfolder are left untouched. This is useful when you are adding new spots to an existing export tree.
Export formats
Pick a format from the EXPORT FORMAT dropdown before starting the batch:
| Format | Description |
|---|---|
.artgto (CBOR — companion-app format, single file) | One compact file per spot. This is what the companion viewer reads. Default. |
JSON folder (legacy — not read by the viewer) | A directory of .json.zst files per spot. Larger on disk. Kept for backward compatibility only. |
The choice persists across restarts and applies to the next export batch.
Compression level
Exports use zstd compression. The default level is 3 (zstd's fast default). Higher levels (up to 22) produce smaller files at the cost of more CPU time during export. Decompression speed in the viewer is unaffected by the level — the viewer is fast regardless.
You can change the compression level in Settings.
Resume: skip already exported
The Skip already exported checkbox (on by default) makes batch exports resumable. If the app is closed mid-export, or you add new spots to a folder and re-run the batch, only the spots that have not been exported to the destination are processed. Already-exported spots are skipped.
Turn this off if you want to force a full re-export — for example, after changing the export format or compression level.
Running the export
Click Export to start. A progress card shows the current folder, the current spot, and a progress bar. You can cancel at any time; already-exported files are kept.
When the batch finishes, a summary chip shows how many spots succeeded and how many failed, with the total time.
.art files in the Library tab does not.Where to go next
- The run log — reviewing which boards solved and which failed.
- File formats — details on
.artand.artgtofiles. - Web viewer — using exported files in the companion app.