Import & Export
Open WebUI provides tools to backup your chat history and restore it later, or migrate conversations from other platforms.
Accessing Import & Export
- Click on your profile name or avatar in the bottom-left corner of the sidebar.
- Select Settings from the menu.
- Navigate to the Data Controls tab.
- Use the Import Chats or Export Chats buttons.
Exporting Chats
Click the Export Chats button to download all your conversations as a JSON file. This backup includes:
- All chat messages and their metadata
- Model information used in each conversation
- Timestamps and conversation structure
It's a good practice to periodically export your chats, especially before major updates or migrations.
Importing Chats
Click the Import Chats button and select a JSON file to restore conversations. Open WebUI supports importing from:
- Open WebUI exports: Native JSON format from previous exports
- ChatGPT exports: Conversations exported from OpenAI's ChatGPT (auto-detected and converted)
- Custom JSON files: Any JSON file that follows the expected structure documented below
Allow Chat Import gates forking a chat as well, which copies an existing conversation into a new one. Where it is not granted, the Import Chats row here, the Fork chat action under an assistant response and the /fork entry in the chat input's / menu are all left out of the interface rather than shown and refused. Admins are always exempt. See Permissions.
Import Behavior
- Imported chats are added to your existing conversations (they don't replace them)
- Each imported chat receives a new unique ID, so re-importing the same file will create duplicates
- If using ChatGPT exports, the format is automatically detected and converted
- Tags your account does not have yet are created from the file. An export stores each tag in lowercase with underscores, so a tag named Import Test comes back as import_test
Chat Import JSON Schema
The import file must be a JSON array of chat objects. There are two accepted formats: the standard format (used by Open WebUI exports) and a legacy format.
Standard Format (Recommended)
Each object in the array should have a chat key containing the conversation data:
[
{
"chat": {
"title": "My Conversation",
"models": ["qwen3.6:27b"],
"history": {
"currentId": "message-id-2",
"messages": {
"message-id-1": {
"id": "message-id-1",
"parentId": null,
"childrenIds": ["message-id-2"],
"role": "user",
"content": "Hello, how are you?",
"timestamp": 1700000000
},
"message-id-2": {
"id": "message-id-2",
"parentId": "message-id-1",
"childrenIds": [],
"role": "assistant",
"content": "I'm doing well, thank you!",
"model": "qwen3.6:27b",
"done": true,
"timestamp": 1700000005
}
}
}
},
"meta": {
"tags": ["greeting"]
},
"pinned": false,
"folder_id": null,
"created_at": 1700000000,
"updated_at": 1700000005
}
]Legacy Format
If the objects in the array do not have a chat key, the entire object is treated as the chat data itself (i.e. the object is wrapped in { "chat": <object> } automatically):
[
{
"title": "My Conversation",
"models": ["qwen3.6:27b"],
"history": {
"currentId": "message-id-2",
"messages": {
"message-id-1": {
"id": "message-id-1",
"parentId": null,
"childrenIds": ["message-id-2"],
"role": "user",
"content": "Hello!"
},
"message-id-2": {
"id": "message-id-2",
"parentId": "message-id-1",
"childrenIds": [],
"role": "assistant",
"content": "Hi there!",
"model": "qwen3.6:27b",
"done": true
}
}
}
}
]