# Storage Format

#### File and File Name Format:

* All hand histories *MUST* be stored in plain text files.
* All hand histories files *MUST* have an .OHH file extension.
* Filenames *MUST* use only ASCII characters.

{% hint style="info" %}
Other than the above requirements, hand history filenames can be named anything.  We recommend including at least the table name in the filename.
{% endhint %}

#### Required Fields

All fields are required unless otherwise stated in the specification.

#### Hand History Grouping per File

Hand histories are self contained and theoretically can be one hand history per file or a million hand histories per file.  However, for efficiency and portability we recommend that there is one file for each table session which contains all of the hand histories played during that table session within a single file.

Since each hand history is a self-contained JSON object, to include multiple hand histories in a single file, each [hand history JSON object](/json-object/untitled-1.md) *MUST* be separated by one blank line such as:

```javascript
{"ohh": <standardized_hand_history_object_1>}

{"ohh": <standardized_hand_history_object_2>}

{"ohh": <standardized_hand_history_object_3>}
```

{% hint style="warning" %}
The resulting .OHH file will not be a valid JSON structure and will instead be several JSON objects; however, this trade-off allows writers to stream the hands to the end of the hand history file upon completion of the hand without re-parsing and/or re-saving previous hands.
{% endhint %}

{% hint style="info" %}
If hand histories are being provided to a user at a later date, it is acceptable to group all hand histories by date played into a single file so long as each hand history object is separated by one blank line.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://hh-specs.handhistory.org/storage-format.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
