1. Load your card

Accepts .json, .png (reads the embedded card), .charx and .txt, or paste the card text below.

What the validator checks

1. JSON syntax

If the file is not valid JSON you get the line and column of the first problem, a snippet with a marker under it, and the most likely cause (a trailing comma, a missing comma, smart quotes, a cut-off file). Fix it by hand, or send it to the repair tool.

2. Card format

The card is identified as V1 (flat fields), V2 (chara_card_v2) or V3 (chara_card_v3). Platform-native cards such as Voxta or CharacterAI are recognized too, but they have no V2/V3 spec to check against.

3. Field types and structure

Text fields must be text, tags and alternate_greetings must be lists, extensions must be an object, V2/V3 fields must sit inside data, and lorebook entries need keys, content, enabled and insertion_order.

4. Content warnings

Empty names or first messages, unbalanced {{ }} macros, legacy <USER> tags, text that was escaped twice, and the garbled characters (such as “’”) left behind by a wrong text encoding.

Errors, warnings and notes

Errors are spec violations that can stop an import. Warnings are things the spec lists but most apps tolerate, or content that looks wrong. Notes are for information only. A card with no errors is reported as valid.

Frequently Asked Questions

What does the character card validator check?

It checks that the file is valid JSON, identifies the card as V1, V2 or V3, and verifies field types and structure: text fields, the tags and alternate_greetings lists, the extensions object, the data wrapper, and lorebook entries. It also flags empty greetings, unbalanced macros and text-encoding damage.

Why does my card say it is not valid JSON?

The most common causes are a trailing comma, a missing comma between fields, curly (smart) quotes copied from a word processor, a comment, or a file that was cut off. The validator shows the line and column of the first problem and its most likely cause.

The card is valid but my app still rejects it. Why?

Some apps want a specific container, for example a PNG with embedded metadata or a CharX file, instead of loose JSON. See the guide on why a character card will not import, or convert the card to the format your app expects.

Is my card uploaded anywhere?

No. Validation runs in your browser and the card never leaves your device.