New Expression, at the top of the Expressions section, creates an .exp3.json expression file beside the model. The chevron beside each expression button opens Edit… and Duplicate…, and for files that sit loose on disk, Rename… and Delete… as well
All of this is Live2D only. A saved file appears under Expressions at once, with no model reload
The Editor
The dialog's left column holds the file's own settings; its right column gives every parameter on the model a row
| Control | What It Does |
|---|---|
| Name | The file name, with the extension fixed at the end of the field. Editing an existing file locks it — use Rename… to change it |
| Fade In, Fade Out | The fades written into the file, 0 to 5 seconds. A file that declares neither gets Cubism's 1 second |
| Solo | On by default. Mutes every other expression while you edit |
| Show Physics | Lists the parameters physics drives as well, off by default |
| Active at Top | Sorts the rows that are on to the top of the list |
| Filter Parameters | Filters the list by name or parameter id. Beside it is how many rows there are and how many are on |
| Capture Pose | See Capture Pose |
| Revert | Drops every change since you opened the editor and returns to what the file holds |
Each row's switch decides whether that parameter is written into the expression; switching it on reveals a Blend dropdown and a slider. The row is captioned with the parameter's group and id, and a parameter physics drives carries a Physics badge
Save writes the file and Cancel abandons the edit — it turns rose while there is an unsaved change to lose
Blend Modes
| Mode | What the File Stores | Slider Range |
|---|---|---|
| Add | A delta from the parameter's default. Active expressions sum — the default for a new row | The parameter's own range |
| Overwrite | An absolute value. With several expressions active, the last one wins | The parameter's own range |
| Multiply | A factor. Active expressions multiply | -3 to 3, matching VTube Studio |
The slider always shows where the parameter comes to rest, Add included: it converts through the parameter's default, and the delta is what lands in the file
Changing a row's mode and changing it back loses nothing — each mode keeps its own value
VTube Studio reads Overwrite as an offset from the default, while Cubism and Persona read it as an absolute value. Use Add for an expression file that has to behave the same in both
Preview
While the editor is open the model shows the rows you are editing, live. The preview is written after every driver, so an edit lands visibly even on a parameter face tracking is moving — the same placement VTube Studio's expression editor uses
The expression under edit is muted meanwhile: it keeps its active state and its fades and simply contributes nothing, so the preview never stacks on top of it. Solo mutes every other expression the same way; switch it off and the rows blend over whatever else is active, exactly as the saved file will
Muting is not switching off. While the editor is open, a shortcut, an automation or the Plugin API still toggles and persists the real active set, and closing the editor has nothing to put back
Parameters physics drives are never previewed — at playback the simulation answers them. Show Physics only makes them editable and saveable
Playback ranks these differently from the preview: face tracking has the last word on the parameters it drives, so a saved expression loses to tracking on those. The preview shows the edit anyway, so that you can work on those parameters while tracking runs
Capture Pose
Capture Pose samples every parameter as the model stands this frame — tracking, motions and the idle all resolved — and switches on the ones sitting away from their default as Add rows
When every parameter is exactly at its default the button does nothing and reports Nothing to capture
Where Files Are Saved
A new or duplicated file lands at the model root, the folder VTube Studio uses for expressions; when a listed expression already carries that file name, it lands beside that file instead. Editing an existing file always writes back to its own path
It is listed the moment it is saved: a new file becomes another entry under Expressions, an edited one updates in place. An active expression shows the edit straight away, with no fade
A name that collides with any listed expression file is refused — shortcuts and Remembering Expressions both bind by file name. A file that already exists asks Replace the existing file? first
Expressions cannot be saved when the model folder is not writable — the bundled model is one such case. Use a model from a folder of your own instead
Renaming and Deleting
Only loose expression files can be renamed or deleted. The ones the model declares in its .model3.json cannot be: Persona never modifies model files. They can still be edited in place with Edit…, or copied with Duplicate…, and the copy is loose
Rename… renames the file beside the model, and the avatar shortcuts bound to it and its entry in Remembering Expressions follow. An active expression stays active under its new name
Delete… moves the file to the Trash and removes the shortcuts bound to it; the confirmation says how many
Both write the shortcuts and the remembered set before they touch the file: a sidecar that refuses the write — read-only, or malformed — refuses the whole operation with the file untouched
File Compatibility
What the file already holds is kept: its fades, the parameters switched off, and any key Persona does not recognise — VTube Studio's IsModelCustomizationExpression among them — are all written back. VTube Studio's own writer drops them
A parameter's repeated entries of one mode fold into a single row: Add sums, Multiply multiplies, Overwrite takes the last, exactly as playback composes them. The row is therefore that parameter's whole effect, and switching it off drops all of it
An entry for a parameter this model lacks — which happens when one file is shared across models — is written back as it is, and the list says below it how many entries it cannot show. When a parameter's entries mix modes, the earlier runs stay behind its row, played and written only while the row is on
Last updated on September 19, 2026