Adam Zachary Wasserman › Dialect Drift › Report

GitHub corpus · human baselines 2022–24 · AI-signed text 2025–26

Dialect Drift

Programmers located in the US and programmers located in India speak and write English differently. We measured this on GitHub using the location field in GitHub profiles. Authors with no location, an ambiguous one, or anywhere else in the world were removed from the analysis.

The difference between the two groups is not in their vocabulary but in their grammar. This analysis measured six things — four core habits and two supporting measures — each defined below with an example, and counted how often each grammatical feature appears in human GitHub writing from 2022–24 conversation comments, matched on repository and year, before AI coding tools, when self-labeled AI text was under 0.05% of the corpus. 

These two human rates are anchor points against which we then map the prevalence of the grammatical features in AI-written GitHub text from 2025 on. We only use self-labeled AI text, so that results remain unambiguous.

What we found, plainly

Claude Code (and the API) does not write American English.

Nor does it write Indian professional English. Claude's GitHub output is its own dialect. On the four habits that separate the two human cohorts, it sits past the India-located rate: about three times the please, double the noun stacks, status lines with no verbs.

The complaints on Twitter/X mirror the measurement. When Anthropic deployed model changes on July 1 and again on August 12, 2026, the complaints moved within days, and they split by geography. Accounts based in India complain of verbosity, density, formality, condescension. None says the text is unreadable. Accounts based outside India say outright that "Claudish"—as it has been dubbed—is unreadable. As of August 30, 2026, a little over five weeks after Anthropic shipped Opus 5 on July 24, programmers were publishing fixes for that unreadability at more than two public repositories per week.

A German-located English-writing control, reported below, sits near the US rates on three of the four habits. The far end of the axis is the India-located register, not "non-native English."

Six Grammatical features, with examples

These four are the strongest separators (all p < 10−30) and are what Figure 1 charts. Figure 2 adds two supporting measures, defined at the end of this list.

Verbless status sentences. A status stated with no verb; the reader supplies the "is" themselves. "Identities complete." "Two of six done." "Alignment pending." An American writes the verb in: "The identities are complete." Counted per thousand sentences.

Clause subordination. Folding one clause inside another with words like which, that, because, when. "The test that failed passed when I reran it" folds twice; "The test failed. I reran it. It passed." folds zero times. India-located professional prose folds less and states more; US-located prose folds more. Counted per thousand sentences, so on this habit the lower number is the India side. Every chart is oriented so the India side reads upward. The two Figure 2 panels that require flipping the axis (subordination and sentence length) are marked "axis reversed."

Triple-noun compounds. Three or more nouns stacked into one name: "study-lifecycle handler cap," "fund price override table." The unstacked version reads "the cap on handlers for the study lifecycle." Counted per thousand words.

Politeness marking. The words please and kindly, as in "Kindly review and revert." Counted per ten thousand words. India-located professional prose uses them about three times as often as US-located prose.

Supporting measure: sentence length. Words per sentence. India-located professional prose runs shorter (15.0 words against the US 17.1), which pairs with its lower subordination: fewer folded clauses make shorter sentences.

Supporting measure: "you" subjects. How often the subject of a verb is the other person, as in "you can check the logs from your end." Counted per thousand subjects. India-located professional prose addresses the reader about 30% more often (93 vs 72).

Figure 1 Position on the US → India axis, 2025 → Opus 5 era In every panel the US human rate sits at 0 and the India-located human rate at 100, with the corridor between them shaded. Up to the India line all panels share one scale. Above the line each panel compresses its own scale to fit; read the labeled values, and do not compare distances across panels except inside the shaded band. An arrow runs from a cohort's 2025 position to its Opus 5-era position (Aug 12–27, 2026). The small dots are the windows in between (Jan 1–Jun 8, and the Fable era Jul 1–Aug 11). Jun 9–30, the release-and-suspension window, is excluded.
Figure 2 Raw trajectories against the human baseline bands The four habits plus the two supporting measures, in native units per panel. Shaded bands are the pre-2025 human baselines ±2 standard errors; dashed where no interval was computed; open markers flag cells under 100 texts. Scales and directions follow Figure 1: India side up ("axis reversed" where that requires flipping), compression past the India band at the break mark.

What this adds up to

The trajectory is not one line. Claude-signed text spent a year drifting from far past the India-located baseline back toward it, and by the Fable era (July 1 to August 11, 2026) it sat on that baseline on verblessness and politeness. Then the fleet changed again. From August 12, when Opus 5 arrived, the text snapped back toward its 2025 extremes — verbless sentences up from 196 to 232 per thousand, please/kindly up from 20 to 54 per ten thousand words — on a window of 76 texts.

Classical readability arithmetic never caught this. Average sentence length plus the share of long words puts Claude-signed text at 31.7, between the two human baselines (30.6 and 32.1). The split is in construction type, which readability formulas do not measure.

Figure 3 The complaint record Relative volume of public complaints on Twitter/X that Claude's writing is unintelligible: cannot parse, inscrutable, "translate Claude". Sampled by Grok (xAI) on Aug 30, 2026.

What the complaint record corroborates

Two changes, two instruments agree

Claude's writing changed twice in 2026, and both times the complaints rose within days. After Claude 5 opened to everyone on July 1, Figure 2 shows the writing sitting on the India-located line through July. That same month people stopped joking about the style and started saying they could not read it. On August 12, Opus 5 took over, and the writing swung back: more verbless lines, three times the please. Within a week the complaint bars jump from 40 to 50, then to 80.

The complaints come from Twitter/X and GitHub issue threads. The writing changes come from parsing GitHub text. The two agree on the dates.

Treat the bar heights and the dates differently. The dates are checkable and two independent instruments landed on them. The heights are a reconstruction from search density and are not verified, so the shape is a sketch. The named accounts below are the firmer evidence in this section, because anyone can go and read them.

Who complains about what

A search of X and GitHub on 30 August 2026 for complaints about Claude's writing asked specifically whether the unintelligibility charge appears in India-context accounts. It found four such accounts complaining about the writing, and none complaining that they could not read it:

The negative finding is the stronger half. No cluster of Indian engineers saying "this is unintelligible," "another language," or "I cannot read it." That exact wording concentrates in US and EU developer accounts and in GitHub issues such as #83356. India is Claude's second market. If the parse failure were universal, the same wording would show up there in volume. It does not.

The overshoot is the likely reason the complaints differ. The AI text stacks nouns two to five times harder than the India-located baseline, and it drops even more clause chaining. India-context readers call the style stiff but readable. US and other outside-India readers call it hard to parse.

What this establishes. The cohort making the unintelligibility complaint is not based in India. The search looked for that wording in India-context accounts and did not find it, in the market where Claude has its second-largest user base, while the same wording is easy to find elsewhere. Where outside India those accounts sit is not something this study maps.

What it does not establish. It does not measure anyone's reading cost, and four accounts found by search are not a sample. It is a fact about who files which complaint, which is why the reading-cost prediction below is registered as a test rather than stated as a result.

Why 2025 was quiet

The text was at its strangest in 2025, yet almost nobody complained, because almost nobody saw it. AI-signed text was about half a percent of the corpus then, and over four percent in 2026. People complain when strange text reaches them, so volume follows both how strange the text is and how much of it they see. The last jump, on August 22, needed neither: an "English → Claudish" translator went viral on X that day, and "Claudish" became the name for the dialect. The text did not change that week; we checked.

The complaint itself changed over time. Through 2025 and into early 2026, people mocked Claude's catchphrases: "it's not X, it's Y," "load-bearing," and the rest. The text was annoying but readable. Starting in July 2026, the complaint became that the text could not be read at all. The catchphrases were disappearing from the text over those two years; the grammar — verbless lines, stacked nouns — stayed. Once the funny phrases were gone, what remained was the grammar, and the complaint moved from mockery to unreadability. That sequence is in the record. This study does not measure the mechanism.

What we claim, and what we predict

As of August 30, 2026, Claude Code's output sits outside the normal grammatical range of both human cohorts, on the far side of the India-located one. That is a reproducible measurement, made with controls. The complaint split is a pattern consistent with it, not a demonstration: who files which complaint is not a measurement of what anyone experienced.

From both we register a prediction, to be tested: readers whose working written English matches the India-located baseline will have lower reading cost on Claude Code than readers whose working written English matches the US-located baseline, because more of the constructions are already familiar. The dialect measurements and the fact that familiar constructions cost less to read predict the direction. The test, registered August 30, 2026 and described in the methodology below, will measure it.

Why Claude writes this way cannot be determined from the outside, and Anthropic does not publish who rates its training data. One boundary on everything above: we measured the Claude Code and API surface as it appears on GitHub. How Claude writes in its chat app and other harnesses is untested here.

What Claude says about itself

We asked Claude why its writing had changed so much. On August 30, 2026, in the session that built this report, Claude Fable 5 answered:

"The guess. My default sentence is built to survive review, not to be read. Yours commits first: 'Claude Code does not write American English.' Period. Mine guards first: 'writing onto GitHub through Claude Code and the API.' Each added clause buys protection from an imagined objector and charges the reader for it. I can override the default when the whole task is one paragraph in your voice, and even then my draft narrated the study before stating the finding."

This is an anecdote, not evidence. It comes from our own session, which this study's rules exclude, and a model's account of its own training is a guess it cannot check; Claude labels it one in its first two words. We print it because it names a mechanism our measurements cannot reach: training that rewards sentences built to survive review would produce exactly the guarded, packed prose measured above. We read it as a possible indictment of the incentives in Anthropic's training pipeline.

Reading and caveats

The four Figure 1 metrics are the constructions that most separate India-located from US-located professional GitHub prose in the 2022–24 baselines (all p < 10−30, repo- and year-matched samples of ~4,800 comments per side): verbless status sentences, low clause subordination, triple-noun compounds and please/kindly politeness marking.

A registered German control (methodology below) closes the nearest alternative reading. German-located authors, a 13,958-comment English-writing cohort, write three of the four habits at American rates: verbless index 8, noun stacks −19, politeness 19 on the US→India axis. Those habits mark the India-located professional register specifically, not non-native English in general.

Design rules. Human baselines end at 2024 because unsigned text after that has an unknowable AI share; it is excluded from the study entirely. The measured cohorts are only texts that sign themselves as AI-generated. GitHub signatures never name a model version, so the 2026 windows measure the deployed fleet as it changed, not any single model. Two kinds of date matter and differ: a model ships when Anthropic releases it (Claude 5 general availability July 1; Opus 5 on July 24) and arrives when it takes over the text being measured. For Opus 5 that is August 12, the day claude-opus-5 output displaces its predecessor in the observed fleets. The 19-day gap is rollout: defaults switching and users upgrading. A third signed cohort whose signature names no model (chiefly Claude Code PR footers with the link text stripped at harvest) is excluded: whether its divergent dialect position reflects different authorship or human editing cannot be determined.

Sample sizes are honest but thin at the edges: Claude cells run 51–304 texts, Copilot cells 12–47, so read Copilot's lines as sketch, not measurement. AI-signed text is largely PR-body prose while the baselines are conversation comments; that genre gap inflates verblessness and noun stacking for every AI cohort, though it cannot manufacture the politeness or subordination signatures. Parsing is spaCy en_core_web_sm; the parser is trained on US-style English, which may flatten India-located parses slightly.

Methodology — enough to reproduce the study

Corpus. 153,448 GitHub issue bodies, pull-request bodies and comments from 20 large repositories (terraform, vault, vscode, TypeScript, react, kubernetes, airflow, spark, elasticsearch, grafana, prometheus, argo-cd, redis, node, cpython, pandas, scikit-learn, transformers, ansible, bootstrap), created 2022-01-01 through 2026-08-27. Collected with the GitHub REST API: the per-repo issues and issue-comments list endpoints, walked in ascending updated order with a rolling since-cursor, because GitHub rejects list pagination past roughly 30,000 items. Author profiles resolved in batches through the GraphQL API. A text is kept if, after stripping fenced code, inline code, links and images, it has 40 to 800 words and at least 30 letters, and its author is not a bot (login pattern and account type both checked).

Location labels. The author's self-typed profile location is matched against lists of US and Indian place names (cities, states, the countries), with US abbreviations (US, USA, U.S., SF, DC) matched case-sensitively and strong-token tiebreaks when both sides match. Only clear "india" or "us" authors enter the study; empty, ambiguous and other locations are dropped.

AI cohorts. A text counts as AI-signed only if it contains an explicit self-signature: "generated with claude," "claude code," a co-authored-by Claude line, "generated by/with copilot," "generated with/by/using ai/chatgpt/gpt/ cursor," "as an ai language model," or the robot emoji. Model attribution comes from the model name inside the signature. Signed texts naming no model (chiefly Claude Code footers whose link text the cleaner removed) are excluded from all charts.

Parsing and the six counts. spaCy 3.8.16 with en_core_web_sm 3.8.0, NER and lemmatizer disabled. Verbless sentence: no token tagged VBD, VBP, VBZ or MD, and no bare-VB root. Subordination: dependencies advcl, ccomp, xcomp, acl, relcl. Triple-noun stack: a compound-dependency token whose head is itself a compound. Politeness: tokens "please" or "kindly." "You" subjects: nsubj or nsubjpass tokens spelled "you," per thousand subjects. Sentence length: non-punctuation tokens per sentence. Readability score where cited: average sentence length plus the percentage of words with three or more syllables, syllables approximated by vowel groups.

Baselines and statistics. Human baselines use conversation comments only (bodies excluded, because issue templates inflate verblessness and compounds), 2022–24, with the US sample drawn to match the India group's counts per repository-and-year stratum, random seed 42 (india n=4,836; us n=4,801). Rate differences are tested with Poisson-approximation z tests on count rates.

Time windows. 2025 whole; then 2026 split at fleet events: Jan 1–Jun 8, Jul 1–Aug 11 (Fable era), and Aug 12–27 (Opus 5 fleet takeover). Jun 9–30, the release and export-control suspension window, is excluded.

Registered test of where the dialect enters training (registered Aug 30, 2026, before any analysis). Question: does the Indian-side dialect exist in base models before preference training, or does post-training inject it? Stage 0, the gate: Qwen2.5-7B-Instruct and OLMo-2-7B-Instruct each write 500 GitHub comment replies to contexts drawn from this corpus; the six-measure battery scores them. Gate rule, fixed in advance: a model counts as showing the dialect if its axis index exceeds 50 on at least three of the four core habits. If neither model passes, stage 1 is cancelled and the dialect is frontier-lab-specific, which also counts against shared pretraining data as the cause, since these models eat the same web. Stage 1, only if the gate passes: the same families' base checkpoints against their instruct checkpoints, 2,000 completions each. Base near the human range with instruct jumping Indian-side locates the seed in post-training; base already Indian-side locates it in the data. A 20-completion smoke run was executed before this registration purely to validate the job plumbing; its outputs are excluded from all analysis. Outcome (Aug 30, 2026): the gate failed. Qwen passed 2 of 4 core habits (verbless index 88, subordination 144, stacking −78, politeness 25); OLMo passed 0 of 4. Stage 1 is cancelled per the rule. The dialect is specific to the frontier labs' models, and shared pretraining data is disfavored as its cause. Noted post hoc: the frontier hallmark, noun stacking at 2–5× the human baselines, is absent from both open models entirely.

Registered test of the reading-cost prediction (registered Aug 30, 2026, not yet run). Adapt two copies of one small open language model, one on the 2022–24 India-located human baseline text, one on the matched US-located baseline text. Measure each copy's perplexity on held-out India baseline text, held-out US baseline text (the two calibration anchors), and on Claude-signed text. Prediction: on Claude-signed text the India-adapted copy shows lower perplexity than the US-adapted copy, patterning with the India anchor. Falsification: the US-adapted copy shows equal or lower perplexity on Claude-signed text. Perplexity is the standard proxy for processing predictability; a human reader study would measure the load directly and remains the stronger follow-up.

Registered third-cohort control: Germany (registered Sep 1, 2026, before any analysis; run Sep 2). Question: are the four core habits India-specific, or generic non-native professional English? Design: German-located authors' conversation comments 2022–24 (n=13,958), from a re-harvest of the same 20 repos keeping every located author, scored on the same measures against India and US samples matched to Germany's repo-and-year strata (india n=4,279, us n=12,898, seed 42; India's matched rates sit on the headline baselines, so the partial match did not distort composition). Decision rule, fixed in advance: Germany past axis index 50 on at least 3 of 4 core habits renames the finding to generic non-native register; below 50 on at least 3 rejects that explanation. Outcome: rejected. Germany indexes verbless 8, noun stacks −19, politeness 19, subordination 56 — one of four past 50. A large second-language cohort writes three of the four markers at American rates.

Code and data. Harvester: harvest_gh_issues.py with run.sh (resumable; state in gh_corpus/state.json). Analyses: marker_rates.py, revert_split.py, ai_share_and_drift.py, grammar_compare.py, ai_grammar.py, fable_windows.py. Data: comments.jsonl (full text), features.csv, authors.jsonl. All results are tabulated in RESULTS.md alongside the scripts. This page's source is dialect_drift.html.

Data table — every value plotted