Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Symbols

Status: Reference Last modified: 2026-08-21 13:42 EDT

CHAT uses a rich set of symbols for transcription conventions. This page documents the symbol categories and the symbol registry that drives both the grammar and the Rust crates. The symbol registry (spec/symbols/symbol_registry.json) is the source of truth, when this page and the registry disagree, the registry wins.

Symbol Registry

The authoritative symbol definitions live in spec/symbols/symbol_registry.json. This JSON file is the single source of truth, it generates:

  • Character sets for the tree-sitter grammar (grammar.js)
  • Rust constants for the model and validation crates
  • Validation rules for the spec tool

After any change to the symbol registry, run:

just symbols-gen

Symbol Categories

Terminators

Punctuation that ends an utterance:

SymbolNameUsage
.PeriodDeclarative
?QuestionInterrogative
!ExclamationExclamatory
+...Trailing offIncomplete utterance
+..?Trailing-off questionQuestion trails off
+/.InterruptionSpeaker interrupted by another
+//.Self-interruptionSpeaker interrupts self
+/?Interrupted questionQuestion interrupted
+!?Broken questionExclamation-question
+"/.Quoted new lineQuotation continues on next line

CA and Disfluency Symbols

The tables below are GENERATED from spec/symbols/symbol_registry.json, which is the single owner of what each symbol means. The Rust types CAElementType and CADelimiterType, the grammar’s character constants and these tables all come from the same record, so they cannot disagree.

The category names describe a PARSING ROLE, not a provenance. A ca_element_symbol attaches to a word token; a ca_delimiter_symbol brackets a stretch. Ask a symbol’s notation_family() for provenance; never read it off the name of the array the symbol sits in. That confusion is what once filed the blocking and segment-repetition disfluency marks as Conversation Analysis notation.

The Notation column is the symbol’s provenance and is independent of which category it parses into. A symbol marked disfluency comes from the CHAT manual’s Disfluency Transcription chapter and is not Conversation Analysis notation; CLAN classifies those explicitly as NOT CA. They sit in the ca_* categories purely because of how they parse.

Every example is parsed and validated by a test, so a row here cannot drift from what the grammar accepts.

Word-attached symbols (word_attached_symbols)

These attach to a word, so book↑ is a single token whose content carries the symbol.

SymbolCodepointMeaningNotationExample
U+2051HardeningCA⁑hello there .
U+2191Shift to high pitchCA↑hello there .
U+2193Shift to low pitchCA↓hello there .
U+21BBPitch resetCA↻hello there .
U+2260Blocking, a word attackdisfluency≠hello there .
U+2219InhalationCA∙hello there .
U+223EConstrictionCA∾hello there .
U+2906Sudden stopCA⤆hello there .
U+2907Hurried startCA⤇hello there .
U+1F29Laugh inside a wordCAἩhello there .

Paired delimiter symbols (paired_stretch_symbols)

These are PAIRED: each opens and closes a stretch, and an unmatched one is rejected (E230).

SymbolCodepointMeaningNotationExample
U+2047Unsure transcriptionCAhe said ⁇hello there⁇ today .
§U+00A7Precise articulationCAhe said §hello there§ today .
U+204ECreaky voiceCAhe said ⁎hello there⁎ today .
°U+00B0SofterCAhe said °hello there° today .
U+21ABSegment repetition, brackets repeated material that is NOT lexicaldisfluency↫b-b-b↫boy ran away .
U+2206FasterCAhe said ∆hello there∆ today .
U+2207SlowerCAhe said ∇hello there∇ today .
U+222CWhisperCAhe said ∬hello there∬ today .
U+222ESingingCAhe said ∮hello there∮ today .
U+2581Low pitch registerCAhe said ▁hello there▁ today .
U+2594High pitch registerCAhe said ▔hello there▔ today .
U+25C9LouderCAhe said ◉hello there◉ today .
U+263ASmile voiceCAhe said ☺hello there☺ today .
U+264BBreathy voiceCAhe said ♋hello there♋ today .
ΫU+03ABYawnCAhe said Ϋhello thereΫ today .

CA arrow separators

These are own-node separators between words rather than word-attachments, and the parser splits them as their own nodes. They are NOT yet registry-owned, and this table is still hand-written. They are not untyped: five of them are Separator variants in talkbank-model, whose glyph table is hand-written again in WriteChat and in several places across the grammar and the re2c backend. Bringing them into the registry is the same move the two families above have already made, and it is outstanding work rather than a decision.

SymbolCodepointMeaning
U+2192Level pitch contour
U+2197Rising to mid
U+2198Falling to mid
U+21D7Rising to high
U+21D8Falling to low
U+2196, U+2199, U+2190Registered as separators; named in neither the CHAT manual’s symbol table nor CLAN’s symbol enum.

Word Segment Characters

Characters that are forbidden at the start of words, forbidden in the rest of words, or forbidden throughout. These define the lexical boundaries of what constitutes a “word” in CHAT.

The grammar uses these sets to construct the word-matching regex patterns. Characters like [, ], <, >, (, ) are structural delimiters and cannot appear inside words.

Event Segment Characters

Characters forbidden in event descriptions (&=event content). Events have slightly different lexical rules than words.

Language Codes

CHAT uses ISO 639-3 three-letter language codes in @Languages headers and @s: word markers:

@Languages:	eng, fra
*CHI:	I want a croissant@s:fra .

Common codes: eng (English), fra (French), deu (German), spa (Spanish), zho (Mandarin), jpn (Japanese).

Special Markers

@ Markers (Word-Level)

The form-marker set has ONE owner: spec/form_markers/form_marker_registry.json. The FormType enum, both directions of its marker mapping, the re2c lexer’s code set and the table below are all generated from it, so a marker cannot exist in one and not another.

MarkerMeaningNotes
@bBabblingabame@b
@cChild-invented formgumma@c, meaning sticky
@dDialect formyounz@d, meaning you
@fFamily-specific formbunko@f, meaning broken
@fpFilled pauseum@fp, deprecated, use &-um instead, because filled pauses are excluded from grammatical analysis
@gGeneral special formgongga@g
@iInterjection, interactionuhhuh@i
@kMultiple lettersabcd@k, mnemonic is “kana”: a Japanese kana is one symbol for a whole syllable
@lLetterb@l, the letter b
@lsLetter pluralp@ls, the plural of a letter
@nNeologismbreaked@n, meaning broke
@oOnomatopoeiawoofwoof@o, a dog barking
@pPhonologically consistent formaga@p
@qMetalinguistic useif@q, as in no if@q-s or but@q-s, when citing words
@sasSign and speechapple@sas, signs and says apple
@siSinginglalala@si
@slSigned languageapple@sl, signs apple
@tTest wordwug@t
@uUnibet transcriptionbinga@u
@wpWord playgoobarumba@wp
@xExcluded wordsstuff@x
@z:<label>User-defined codeword@z:rtfd, any user code

Where the CHAT manual and chatter disagree, and why chatter is right:

  • @x: The manual’s Letters column writes @x:*, implying a label, but its own Example column writes bare stuff@x and depfile.cut sanctions bare *@x beside *@s:* and *@z:*. @x:foo is rejected (E203); do not “fix” this to match the manual’s table.

Every meaning above is taken from the “Special Form Markers” table in the CHAT manual, and each links to that marker’s own anchor there. They were corrected wholesale on 2026-08-11: six had been glossed with plausible expansions of the letters rather than their actual meanings, so @k read as “kinship” (it is “kana”, multiple letters), @p as “proper name” (it is a phonologically consistent form), @sl as “slang” (it is signed language), @sas as “second attempt success” (it is sign and speech), @g as “gemination” (it is the general special form), and @ls as “letter sequence” (it is the letter plural; the sequence is @k). If you find another that disagrees with the manual, the manual wins.

@a was removed on 2026-08-11. The corpus authority eliminated it from every file on 2024-09-03 together with @e and @lp; the other two were dropped from chatter at the time and @a was overlooked. It has no main-tier occurrences in any corpus, and appears in neither depfile.cut nor the manual’s table.

The second-language qualifier @s:LANG is a separate construct (see the L2 morphotag section of the Batchalign book); it is not part of FormType.

& Markers (Events and Fillers)

PrefixMeaning
&=Paralinguistic event (e.g., &=laughs)
&-Filler (e.g., &-um)
&+Phonological fragment (e.g., &+sh)
&~Nonword (e.g., &~mama)
&*Other speaker’s speech event (e.g., &*MOT:word, speech attributed to another speaker)

Scope Markers

MarkerMeaning
[/]Partial retrace, speaker repeats the same words
[//]Full retrace, speaker restarts with different words
[///]Multiple retracing, multiple false starts
[/-]Reformulation, speaker rephrases with different structure
[*]Error
[?]Best guess
[>]Overlap follows
[<]Overlap precedes
[= text]Explanation
[: text]Replacement