OPEN SOURCE · MIT · SEPTEMBER 2026

Is it really an AI tell? Count it first.

People judge writing by the word delve, the em dash, a text with no contractions, lists of three. This page counts 25 of those markers in three kinds of writing. In research abstracts and Reddit posts, the same documents were written by a person and again from the same prompt by four language models. In school essays, 5,867 US students answered seven assignments, and the same assignments were given here to two models, Claude and Llama 3. The page shows the sentences behind every word and phrase count. Several markers change sides between the kinds of writing, and in the school essays the same marker can point to one model and away from the other. It is a measurement, not a detector: it gives no score and cannot tell you who wrote anything.

Published 2026-09-16 · updated 2026-09-18 · 25 markers · 3 kinds of writing: 1,324 research abstracts and 1,338 Reddit posts by the person, against four RAID models and 44 abstracts by Claude · 5,867 school essays by students, against two models run here · re-measured weekly

A recording of the page: the grid across the three kinds of writing, “moreover” opened in research abstracts and in Reddit posts, “in conclusion” opened in school essays, one assignment with the essays the models wrote to it, and a pasted text set against how often people use each marker
The recording shows the grid across the three kinds of writing, “moreover” opened in research abstracts, where it is the people's word, and in Reddit posts, where it is GPT-4's, “in conclusion” opened in school essays, one assignment with the essays the models wrote to it, and the paste box. Every word and phrase cell opens to what the pattern matched: the forms, the word in front, and up to five examples picked by a seeded shuffle. The paste box highlights markers and shows base rates. It gives no score, and the text stays in your browser.

The problem

Ask how to spot machine-written text and the answers barely change: the word delve, the em dash, no contractions, everything in threes, moreover and furthermore. Readers are documented to judge by some of these, contractions and first person among them (Jakesch et al., PNAS 2023). Teachers, editors, reviewers and moderators use the same markers to decide which texts to doubt.

Almost none of them had been counted where it would mean something: in the same document, written once by a person and once by a model, and in more than one kind of writing. A word list compiled from chatbot output says what the chatbot writes, not whether people write it too, and a count from one kind of writing says little about another. The detector software built for the same job has its own record of calling human writing machine-made; essays by non-native English writers are the documented case (Liang et al., Patterns 2023).

This page does not add another list. It counts the ones that exist.

How it works

The RAID benchmark gave language models the title of a real document and published both the person's text and each model's. This page takes two of RAID's kinds of writing: research abstracts from arXiv, and posts from Reddit, posted in 2021. Every writer covers the same documents, so a difference between columns is about the writer and not the topic. The third kind, school essays, has no RAID counterpart and is built differently: US students' essays to seven assignments, set against essays two models wrote here to the same assignments (below). Each kind of writing is measured on its own, with its own placebo and its own correction. Each marker is a regular expression, or for sentence length a variation threshold, defined in src/markers.ts, and the page runs the same file on anything you paste.

StepWhat is done
Same documents1,496 research abstracts and 1,375 Reddit posts. Each was written by a person and again from the same prompt by GPT-3.5, GPT-4, Llama chat and Mistral chat, in the 2023 versions RAID used, and only the rows RAID generated with greedy decoding and no repetition penalty are taken. RAID's adversarial rows (homoglyphs, inserted whitespace, deliberate misspellings) are left out, because measuring style there would measure the attack. The human abstracts come with line breaks every 79 characters and the models' texts do not, so those breaks are joined before anything is counted. The people's Reddit posts come with no line breaks at all, so every writer's post is read as one line, with list marks, heading marks and bold taken off first. School essays have no shared document: 5,867 essays US students wrote to seven assignments, from the PERSUADE 2.0 corpus, and 200 essays per model written here to the same seven assignments.
Dropped before countingEvery model text goes through the same checks, and each kind of writing publishes what every column lost (cleaning.json). A text that stops mid-sentence at its length limit, or that is a refusal, a label or talk about the task instead of the text asked for, is dropped from its own column. A document that any writer wrote in a language other than English is left out of every column, the person's included: 37 of the Reddit posts. A research abstract with an arXiv version posted between 30 November 2022, the day ChatGPT opened, and 4 June 2024, the date of RAID's file, is left out of every column too, because its text may have been revised after ChatGPT: 172 of the 1,496. The table below shows what is left of the abstracts and posts. In the school essays the checks dropped no essay from any column; for the two Claude columns the cut-off and not-an-answer checks are reported, not applied, and found none. The students' essays need no dating check: every one used here was in the Kaggle Feedback Prize release of December 2021, a year before ChatGPT, checked essay by essay.
Paired by document, or by assignmentFor a property of a whole text, each model's text is paired with the person's text for the same document, and the pair is kept only when both fall in the same length band (80–129, 130–219, 220–399 or 400–800 words). The pair counts are in the table below, and every pairing publishes its n. School essays have no shared document, so a model's essay is paired with a student's essay on the same assignment and in the same length band, drawn from a seeded shuffle, and the pairing is published as an assignment pairing, never as a document pairing: 196 pairs for Claude and 200 for Llama 3. Those pairs are looser than the others.
Two measuresA word or phrase becomes occurrences per thousand words over the whole column. That rate still depends on length, and the models do not write to the people's lengths: GPT-4's abstracts are shorter than the person's (a median of 109 words against 176) and its Reddit posts are longer (218 against 167). So a word's verdict compares GPT-4 with the person only between texts within a tenth of each other in length. The test is exact; the rate intervals are exact Poisson intervals, widened when writers repeat a word within one text, because those repeats are not independent; and a verdict has to survive a Benjamini–Hochberg correction across that kind of writing's markers. A property of a whole text, such as no contractions anywhere, becomes the share of texts that have it on the pairs above, with Wilson intervals. In the school essays the verdict compares Claude, told it is a student, with the students, and Claude writes longer essays than they do (a median of 570 words against 406), so the same equal-length comparison decides there.
Only texts a marker can judgeA text a marker cannot say anything about is left out, not counted as a no. Every sentence the same length needs at least five sentences, so in the abstracts it is measured on 158 of GPT-4's 222 pairs. The people's Reddit posts have no line breaks, so a bulleted list or a heading cannot be seen in anyone's post, and those two markers are not recorded for posts.
The writer's own wordsBlock quotes, quoted lines and code are removed from the casual and careful writing before counting, and a span in double quotes does not count towards contractions, first person or personal detail. A contraction typed without its apostrophe (“dont”, “thats”) counts as a contraction, for every writer. In Reddit posts, a hyphen typed straight after a word and followed by a space, and a “--” between two words, count as dashes, because that is how many people type a dash there.
PlaceboIn each kind of writing, the person's texts are split at random into two halves and the same tests run on both. Every row should tie; all 25 do in the abstracts, all 23 recorded rows do in the Reddit posts, and all 25 do in the school essays. There the students' 5,867 essays face 200 per model, and splitting the students in half would test 2,900 against 2,900, a much larger experiment than the one beside it, so each half is cut to the size of the comparison, bin by bin.
Remembered, not writtenAsked for the abstract of a real paper, a model can reproduce the published one, and that is human writing under a machine label. contamination.ts drops any machine text that shares more than half of its five-word sequences with the person's document. It removed none of RAID's texts, in abstracts or posts, and four of Claude's fifty; a fifth that did the same is now left out as dated. School essays have no single document to compare with, so a machine essay is checked against all the students' essays on the same assignment, taken together: on average 4.1% of a Claude essay's five-word sequences and 13.7% of a Llama 3 essay's also occur somewhere in those essays, and none comes close to half.
EvidenceFor each of the 17 countable markers, in each kind of writing and every arm where it matched, evidence.json lists the forms that matched (withheld for open-ended patterns in the arms that cannot be quoted), the word in front of each match, and up to five examples picked by a seeded shuffle rather than by anyone looking for good ones: sentences from RAID's model texts, the arXiv abstracts, the Claude arm and the essays written here, links for casual and careful writing, ids for HC3 and for the students' essays. A model's sentence that contains the whole title of its Reddit post, five words in a row of that person's post, or eight words in a row of any person's post or title is not quoted either; a shorter run of a title's words can still appear.
Comparison armsCasual writing: 4,000 everyday online comments. Careful writing: 3,863 edited question-and-answer posts. Both were posted before 2022-11-30, the day ChatGPT opened, and are taken as human writing on that basis (sources: Hacker News; Stack Exchange's english, academia and writing sites). A third arm is 4,000 answers from GPT-3.5 answering questions (HC3). These are other kinds of writing and share no documents with the person, so for shares they are matched to the person's texts by length band from a seeded shuffle, separately for each kind of writing: the abstracts, the posts and the students' essays. They show how much of a marker is about the kind of text rather than the writer.
WriterAbstracts kept (of 1,496)PairsPosts kept (of 1,375)Pairs
Person1,3241,338
GPT-3.51,2974451,297342
GPT-41,3242221,330645
Llama chat1,013236878360
Mistral chat1,0353811,204423
Claude44 of 5019

Llama chat loses the most. 191 of its abstracts and 271 of its posts stop mid-sentence at its length limit, and 120 abstracts and 189 posts are not the text asked for. Mistral chat loses 289 abstracts and 95 posts that way. “Pairs” counts the document pairs with the person inside one length band. The school essays have their own writers, counted in their own section.

What gets quoted. Sentences are quoted only from RAID's model texts, which are MIT-licensed, from the arXiv abstracts, which are CC0, and from the texts generated for this project: the Claude abstracts, and the school essays Claude and Llama 3 wrote here, which are part of the repository under its MIT licence. The people's Reddit posts are counted and never quoted or linked, and their text is not in the repository. The students' essays are counted the same way: they come from PERSUADE 2.0, which is CC BY-NC-SA 4.0, no essay, sentence or name of theirs is quoted or committed, and they are referenced by id. The casual and careful writing is linked to where it was posted, never quoted, and its text is not in the repository either: what ships is ids and counts, and the fetch scripts rebuild the corpora.

Each row gets one verdict in each kind of writing. In abstracts and posts it comes from GPT-4 against the person; in school essays, from Claude, told it is a student, against the students. For a word or phrase it comes from the rate test at equal lengths; for a property of a whole text, from the shares on the same documents, or in school essays on the same assignments. GPT-4 marker when GPT-4 is higher (Claude marker when Claude is, in school essays), more human when the person is, careful writing when the two cannot be told apart but both sit above casual writing, not recorded when no text of that kind can show the marker, and no signal otherwise. Next to the verdict, the page counts how many of RAID's four models separate the marker from the person, each decided by the same rules; in school essays, how many of the two models run there, Claude and Llama 3. A model is counted only where there was enough to compare: at least five uses of a word between it and the person, or, for a property of a whole text, thirty pairs and five texts on the rarer side. That count describes; it is not a further test. A verdict describes a marker across hundreds of texts. It says nothing about any single one.

Corrected on 16 and 17 September

On 16 September: the first numbers this project published, in its README and in a thread on X, were partly wrong, because three patterns counted the wrong thing: two measured how the source was typed rather than who wrote it, and one counted possessives as contractions. No first person ignored case, so the “(i)” of a numbered list and the “i” of “i.e.” counted as “I”, and first person came out as a GPT-4 marker. The dash counted only the “—” character, and RAID's human abstracts are plain ASCII from TeX, where people type “---”, a spaced “--” or a spaced hyphen. The published line that the people used no em dash was true only of that character: counted however it is typed, the dash is something the people write and the four RAID models almost never do. No contractions counted every possessive “'s”, which is where the published 89% of human abstracts against 85% of GPT-4's came from; contractions are close to absent in all of them.

The pairing was wrong too. It took texts in file order, RAID's file is ordered by topic, and so the two sides of a comparison were different papers; “crucial” read as careful writing because of that. Two changes were made to the texts themselves. RAID's human abstracts come with line breaks every 79 characters, and those breaks hid phrases from their patterns on the human side only; they are now joined. Quotes and code are now removed from the casual and careful writing before counting. Several other patterns were widened or narrowed in the same pass, and the verdicts now come from the tests described above. The findings about “delve”, “moreover” and “leverage” held. The README lists each change and why it was made.

On 17 September, when the Reddit posts were added, the abstracts went through the checks described above, and the published abstracts numbers moved; no GPT-4 verdict did. The 172 dated abstracts are out of every column, four documents of the earlier 1,500 are no longer in the set, and Llama chat and Mistral chat lost the most texts to the other checks. GPT-4's “delve” went from 1.26 (207) to 0.97 (141) per thousand words, and from 20.2% to 19.4% of its abstracts on the same documents. Its “leverage” went from 2.14 to 2.34, and its “crucial” from 0.74 to 0.79, now in 9.0% of its abstracts against the person's 2.3% on the same documents (it was 8.3% against 2.0%). The person's dashes went from 85 to 75, and the share of the person's abstracts with first person from 0.7% (10 of 1,500) to 0.5% (6 of 1,324). GPT-4's “we” went from 1.77 to 1.59 per thousand. Llama chat's “in conclusion” went from 0.32 (132) to 0.30 (81) and the person's from 4 uses to 3, and the other models now use it once at most, not twice. Mistral chat's “crucial” went from 0.90 to 1.10, still the highest of the four models. The model texts are now picked by an explicit rule, greedy decoding with no repetition penalty, instead of by their order in RAID's file. That rule came in the same run as the checks, and the published data does not separate their effects. One earlier claim was also stronger than the data: the first version called “delve” a GPT-4 word and not an AI word, and Llama chat's own comparison with the person, new in this release, separates it too (q = 0.027), at a sixteenth of GPT-4's rate. The Claude arm lost two documents as dated, one of which it had already lost as remembered, so it is 44 texts instead of 45, and its comparison table covers the 23 documents every writer kept instead of 45.

Every number on this page is from the run of 18 September 2026. That run added the school essays. Each kind of writing is measured and corrected on its own, so adding one leaves the others alone: the abstracts and posts numbers are the same as in the run of 17 September.

What the counts showed

Rates are occurrences per thousand words on the full columns, with the occurrence count in brackets. Each verdict is the one described above: for words and phrases it comes from the comparison at equal lengths, not from the whole-column rates shown here. Every word and phrase count below opens on the page to the matches behind it; the whole-text shares (no contractions, first person, sentence length) show how many texts they rest on.

The same markers in three kinds of writing

The page opens with a grid: for every marker and each kind of writing, a verdict and how many of the models separate the marker from the people. In abstracts and posts the verdict is GPT-4's and the count runs over RAID's four models. In school essays the verdict is Claude's, told it is a student, against the students, and the count runs over the two models run there, Claude and Llama 3. These are the rows that matter most here. “Above” means a model shows the marker more than the person does, “below” less, and “of” counts the models with enough uses or texts to compare.

MarkerResearch abstractsReddit postsSchool essays
“delve”GPT-4 markerabove in 2 of 2 (GPT-4, Llama chat)GPT-4 markerabove in 2 of 2 (GPT-3.5, GPT-4)no signaltoo rare to compare either model
“moreover”more humanbelow in 4 of 4GPT-4 markerabove in 2 of 2 (GPT-3.5, GPT-4)no signalabove in 1 of 2 (Llama 3)
“furthermore”careful writingabove in 1 (GPT-3.5), below in 1 (Mistral chat), of 4no signalabove in 2 of 4 (GPT-3.5, Mistral chat)more humanabove in 1 (Llama 3), below in 1 (Claude), of 2
“crucial”GPT-4 markerabove in 4 of 4GPT-4 markerabove in 3 of 4 (not Llama chat)more humanabove in 1 (Llama 3), below in 1 (Claude), of 2
“leverage” as a verbGPT-4 markerabove in 4 of 4no signal4 uses in all, no model to compareno signalno writer uses it, no model to compare
“it is important to note”no signaltoo rare to compare any modelGPT-4 markerabove in 3 of 4 (not Llama chat)no signaltoo rare to compare either model
“not only … but also”careful writingbelow in 2 of 4 (GPT-3.5, Mistral chat)GPT-4 markerabove in 3 of 4 (not Llama chat)more humanabove in 1 (Llama 3), below in 1 (Claude), of 2
“in conclusion” / “in summary”no signal0 of 1 (Llama chat, the only model with enough uses)GPT-4 markerabove in 3 of 4 (not Llama chat)more humanabove in 1 (Llama 3), below in 1 (Claude), of 2
“it's not X, it's Y”no signaltoo rare to compare any modelno signal0 of 4Claude markerabove in 1 of 2 (Claude)
a three-item listGPT-4 markerabove in 3 of 4 (not GPT-3.5)GPT-4 markerabove in 4 of 4more humanabove in 1 (Llama 3), below in 1 (Claude), of 2
a dash, however it is typedmore humanbelow in 4 of 4no signalabove in 1 of 4 (Llama chat)no signal0 of 2
every sentence the same lengthGPT-4 markerabove in 4 of 4GPT-4 markerabove in 3 of 4 (not Llama chat)more humanabove in 1 (Llama 3), below in 1 (Claude), of 2
no contractionscareful writingtoo few texts with a contraction to comparemore humanbelow in 2 (GPT-4, Llama chat), above in 1 (Mistral chat), of 4Claude markerabove in 2 of 2
no first personcareful writing0 of 1 (GPT-3.5)no signalabove in 1 (Mistral chat), below in 1 (GPT-3.5), of 4more humanbelow in 1 of 2 (Claude)
no personal detailcareful writingtoo few texts to compareGPT-4 markerabove in 4 of 4more humanbelow in 1 of 2 (Claude)
no informal spellingcareful writingtoo few texts to compareGPT-4 markerabove in 4 of 4no signal0 of 2

Across all 25 rows, GPT-4's verdict in the abstracts is GPT-4 marker for 5, more human for 2, careful writing for 6 and no signal for 12. In the posts it is GPT-4 marker for 10, more human for 1 and no signal for 12, and 2 markers are not recorded. GPT-4's verdict differs between those two kinds on 11 of the 23 markers recorded in both. In the school essays, Claude's verdict is Claude marker for 2, more human for 8 and no signal for 15. No placebo split, in any of the three kinds, disagrees on any row.

Between abstracts and posts, several markers change sides. “Moreover” is the people's word in abstracts and GPT-3.5's and GPT-4's in posts, where Llama chat and Mistral chat never write it. “Leverage”, which with “crucial” separates all four models in abstracts, is almost absent from posts. Of the essay scaffolding, “in conclusion” and “it is important to note” give no signal in abstracts, and “not only … but also” is a careful-writing marker there, used more by the person than by GPT-3.5 and Mistral chat; in posts all three separate three of the four models. The dash that points to the people in abstracts gives no signal for GPT-4 in posts. Personal detail and informal spelling, two of the markers readers are documented to judge by, say nothing in abstracts, where nobody writes them, and separate all four models in posts, where people do. What holds in both is mostly shape: three-item lists and sentences of even length. “Crucial” is the one word that runs above the person for most models in both. “Delve” separates in both too, but in posts every writer rarely uses it.

School essays show the same thing inside a single kind of writing. On six markers, one of its two models writes the marker more often than the students and the other less often: “in conclusion”, “not only … but also”, “furthermore”, “crucial”, even sentence lengths and three-item lists. On all six, Llama 3 is above the students and Claude below. The one word or phrase that points to Claude there, “it's not X, it's Y”, gives no signal in abstracts or posts.

In research abstracts

FindingCounted
In these abstracts, “delve” is mostly GPT-4's word.GPT-4 0.97 (141) on the same abstracts where Llama chat writes it 0.06 (16), GPT-3.5 0.01 (2), and Mistral chat and the person 0.00 (0). 124 of GPT-4's 141 are “delves”, most often after it (39), study (35) or paper (26). On the same documents, 43 of GPT-4's 222 abstracts contain it (19.4%) and none of the person's. Llama chat's 16 are enough to separate it from the person too, at a sixteenth of GPT-4's rate. Much of what is said about the word describes one model's habit. Verdict: GPT-4 marker.
“Moreover” is a human word hereThe person 0.44 (105), in 102 of the 1,324 abstracts; GPT-3.5, GPT-4 and Mistral chat 0.00, Llama chat 0.07 (19). At equal lengths GPT-4 has none where equal rates would have given it about 11, and all four models sit below the person. It is rare in casual (0.01) and careful writing (0.05) as well, so it belongs to academic prose, and in these abstracts it is the people who write it. Verdict: more human. In Reddit posts it changes sides; see below.
Counted however it is typed, the dash is the people's, not the four RAID models'RAID's human abstracts are plain ASCII from TeX, so the people type a dash as a spaced hyphen, a spaced “--” or “---”. Counting all of those, the person writes 0.31 (75: 33 spaced hyphens, 23 “--”, 19 “---”), in 51 of the 1,324 abstracts. GPT-4 writes 0.03 (5) and Llama chat 0.02 (5), all spaced hyphens; GPT-3.5 and Mistral chat write none, and no RAID abstract, human or model, contains the “—” character. Compared at equal lengths, GPT-4 has 5 dashes where equal rates would have given it about 11, a narrower gap than the whole-column rates suggest, and the verdict sits close to the 0.05 line (q = 0.040). Verdict: more human. Casual writing (2.12, 1,144) and careful writing (1.94, 1,716) use dashes far more than either, and there too the “—” character is fewer than one in five of them (171 and 321). GPT-3.5 answering questions: 0.11 (85). Claude, the one model here that is not from RAID, writes more dashes than the person: 0.72 (8) against 0.31. With only 8 dashes, its interval (0.20–1.85) overlaps the person's (0.23–0.42).
“Leverage” as a verb runs above the person in all four RAID models, and so does its shapeGPT-4 2.34 (340), GPT-3.5 2.00 (316), Llama chat 1.60 (440), Mistral chat 0.89 (123), against 0.30 (71) for the person. The form differs too: 22.5% of the person's matches are “leverages” (16 of 71), against 82.7–86.8% for the four models, and the word in front is most often method, that or approach. RAID's GPT-4 arm: “The proposed method leverages both labeled and unlabeled data to improve the segmentation performance.” The models make the paper the subject; the person writes “we” 14.32 times per thousand words, GPT-4 1.59. Llama chat (15.41) and Mistral chat (12.72) write “we” about as often as the person and still write “leverages”, so the two habits are related, not the same. Verdict: GPT-4 marker. Claude's 44 abstracts do not follow: 0.18 (2), both “leverage”.
“Crucial” runs above the person in all four RAID models tooGPT-4 0.79 (115), GPT-3.5 0.75 (119), Llama chat 0.57 (156), Mistral chat 1.10 (151), against 0.19 (46) for the person and 0.03 in both casual (15) and careful writing (25). On the same documents, 20 of GPT-4's 222 abstracts have it (9.0%) against 5 of the person's (2.3%). Verdict: GPT-4 marker. It read careful writing before the 16 September correction, when its pairs were different papers.
GPT-4 writes more lists of three, and some of them are templatesA three-item list in one sentence: GPT-4 5.29 (769), Llama chat 4.76 (1,305), Mistral chat 2.80 (385), GPT-3.5 2.00 (316), the person 1.62 (389). GPT-4's most frequent list, “accuracy, robustness, and computational [efficiency]”, occurs 30 times, with “accuracy, robustness, and efficiency” 8 and “accuracy, efficiency, and robustness” 6 more; “[computer] vision, medical imaging, and remote [sensing]” occurs 14 times and the same three in another order 10 more. Those two templates are 68 of its 769. Llama chat repeats “diagnosis, treatment planning, and monitoring” 20 times; no list in the person's abstracts appears more than twice. The pattern takes a middle item of several words only before a serial comma, which the models nearly always use and the people mostly do not, so it leans toward the models. Verdict: GPT-4 marker, with Llama chat and Mistral chat also above the person and GPT-3.5 not.
“Every sentence the same length” holds for all four modelsSentence lengths that barely vary (a coefficient of variation under 0.40, over at least five sentences): 99.4% of GPT-4's abstracts against 71.5% of the person's (157 and 113 of the 158 document pairs where both have five sentences). GPT-3.5, Llama chat and Mistral chat sit above the person on their own pairs too, and casual writing matched to the abstracts' lengths is at 21.2%. Abstracts are even to begin with, so the gap is between the models and a kind of writing that already leans that way. Verdict: GPT-4 marker.
No contractions says the text is an abstract, not who wrote itShare of texts with no contraction: 99.6% of the person's abstracts (1,319 of 1,324). On the 222 document pairs, all of GPT-4's abstracts and all of the person's; GPT-3.5, Llama chat and Mistral chat 100% on theirs. On texts matched to the abstracts' lengths: casual writing 9.7%, careful writing 29.7%, GPT-3.5 answering questions 50.3%. Almost nobody writes a contraction in an abstract, so a missing one says what kind of text it is. Verdict: careful writing.
No first person is the same storyShare of texts with no “I”, “me” or “my”: 99.5% of the person's abstracts (1,318 of 1,324). On the 222 document pairs, all of GPT-4's abstracts and 219 of the person's (98.6%). On texts matched to the abstracts' lengths: casual writing 19.5%, careful writing 32.5%, GPT-3.5 answering questions 87.0%. Abstracts do not say “I”, whoever writes them. Verdict: careful writing; it read GPT-4 marker only while “(i)” and “i.e.” counted as “I”.
A hedging phrase depends on the kind of writing“It is (also) important to note” / “worth noting”: 0.65 (485) for GPT-3.5 answering questions, 0.00 (0) for GPT-3.5 continuing the abstracts. An earlier version of the project, built when HC3 was the only machine arm, called it GPT-3.5's formula, and matching the documents showed that was wrong. The Reddit posts add a caveat to that correction: there RAID's GPT-3.5 writes the phrase 13 times (0.07), and three of the four models write it more than the person, who never does. The phrase is missing from the models' abstracts, not from the models.
“In conclusion” / “in summary” is a Llama habit, by rateLlama chat 0.30 (81, of which 56 are “in summary”); the person 0.01 (3), GPT-3.5 0.01 (1), GPT-4 and Mistral chat 0. GPT-3.5 answering questions writes it too, 0.25 (185). The verdict compares GPT-4 with the person, so this row reads no signal. Even Llama chat's own comparison does not separate it from the person (q = 0.30): its abstracts are long (a median of 277 words), and few of the person's are as long. “A Llama habit” describes the whole-column rate, not a tested difference.

In Reddit posts

RAID's Reddit documents are posts from 2021, each written by a person and again by each model from the post's title. The people's posts are counted and never quoted, here or on the page; the sentences below are from RAID's model texts. GPT-4 writes posts longer than the person (a median of 218 words against 167), and people write posts with “I”, contractions and slang, which makes them a different test from abstracts.

FindingCounted
“Moreover” changes sidesThe person 0.00 (1 use in 239,051 words); GPT-4 0.14 (40), GPT-3.5 0.07 (13), Llama chat and Mistral chat none. RAID's GPT-4 arm: “Moreover, the visual representation of Bites the Dust is stunning.” At equal lengths GPT-4 has 39 where equal rates would have given it about 28. In abstracts the same word pointed to the people. Verdict: GPT-4 marker, and GPT-3.5 separates too.
Essay scaffolding separates three of the four models“In conclusion” / “in summary”: GPT-4 0.25 (75), GPT-3.5 0.19 (38), Mistral chat 0.15 (31), Llama chat 0.04 (8), the person 0.00 (1). RAID's GPT-4 arm: “In conclusion, I believe that survival game developers should prioritize mod support.” “It is important to note” / “worth noting”: Mistral chat 0.21 (42), GPT-3.5 0.07 (13), GPT-4 0.05 (16), Llama chat 0.03 (6), the person none. “Not only … but also”: GPT-3.5 0.33 (66), GPT-4 0.16 (46), Mistral chat 0.07 (14), Llama chat 0.06 (13), the person 0.01 (2). At equal lengths GPT-4 has 71, 16 and 40 of these where equal rates would have given it about 53, 12 and 27. On all three phrases, GPT-3.5, GPT-4 and Mistral chat separate from the person and Llama chat does not. In abstracts, “in conclusion” and “it is important to note” gave no signal, and “not only … but also” leaned to the person for GPT-3.5 and Mistral chat. Verdict: GPT-4 marker, for all three.
“Crucial” still runs above the personGPT-3.5 0.53 (105), GPT-4 0.18 (53), Mistral chat 0.07 (15), Llama chat 0.04 (8), the person 0.01 (2). At equal lengths GPT-4 has 52 where equal rates would have given it about 36. Three of the four models separate; Llama chat does not. Verdict: GPT-4 marker.
“Delve” is rare for everyoneGPT-3.5 0.06 (12), GPT-4 0.04 (12), Llama chat 0.00 (1), Mistral chat and the person none. GPT-3.5 and GPT-4 still separate from the person, GPT-4 close to the 0.05 line (q = 0.038), but at about one use in 16,000 to 25,000 words, against 0.97 per thousand in GPT-4's abstracts. Verdict: GPT-4 marker.
“Leverage” all but disappearsFour uses across every writer: the person 1, GPT-3.5 2, Llama chat 1, GPT-4 and Mistral chat none. That is too few to compare any model. In abstracts it separated all four. Verdict: no signal.
Lists of three and even sentences holdA three-item list: GPT-4 3.77 (1,110), Mistral chat 3.10 (633), GPT-3.5 2.74 (543), Llama chat 2.02 (419), the person 1.00 (238). All four models separate, and at equal lengths GPT-4 has 1,023 where equal rates would have given it about 746. Every sentence the same length, on the same documents: GPT-3.5 78.9% against the person's 25.2%, Mistral chat 75.0% against 26.8%, GPT-4 36.1% against 23.9%; Llama chat's 32.1% against 23.5% overlaps. Casual writing matched to the posts' lengths: 21.0%. Verdict: GPT-4 marker, for both.
The dash gives no signal for GPT-4Counted however it is typed: Llama chat 0.66 (138), GPT-4 0.44 (130), the person 0.28 (68), GPT-3.5 0.23 (45), Mistral chat 0.19 (39). Almost all are spaced hyphens: the person's 68 are 57 of those, 6 “—” and 5 “--”, and GPT-4 typed “—” once. RAID's GPT-4 arm: “You can set it up for virtually any bill - rent, utilities, credit card payments, student loans, car payments, insurance, subscriptions, and so on.” At equal lengths GPT-4 has 126 where equal rates would have given it about 111, which does not separate (q = 0.12). Only Llama chat separates, as a model marker. Verdict: no signal. This verdict rests on a choice. On Reddit many people type a dash as a hyphen stuck to the word before it, or as “--” between two words, and the dash pattern counted neither, because in abstracts those are words broken at a line end and TeX joins. In posts both now count as dashes, for every writer.
GPT-4 and Llama chat use contractions more reliably than the personShare of posts with no contraction anywhere: the person 6.4% (86 of 1,338). On the same documents, GPT-4 1.2% against the person's 5.6%, and Llama chat 1.4% against 5.8%. GPT-3.5 (9.1% against 5.0%) does not separate, and Mistral chat goes the other way, 15.6% against 8.3%. On texts matched to the posts' lengths: casual writing 8.7%, careful writing 28.8%, GPT-3.5 answering questions 50.6%. Verdict: more human, which here means that the person more often writes a post with no contraction. Contractions typed without the apostrophe now count, and Mistral chat's separation rests on that step.
No first person: Mistral chat often writes as someone elseShare of posts with no “I”, “me” or “my”: the person 3.6% (48 of 1,338). On the same documents, Mistral chat 35.5% against the person's 4.5%, while GPT-3.5 (1.2%), GPT-4 (2.6%) and Llama chat (0.6%) stay low. Many of Mistral chat's posts explain the title to a reader (“If you …”) instead of speaking as the one posting it. GPT-3.5 separates the other way: its posts almost always use first person. Verdict: no signal, since GPT-4 (2.6% against 2.3%) does not separate.
Personal detail and informal spelling separate every modelNo personal detail (“my wife”, “my boss”, “when I was”, “last year” and similar): 81.4% of the person's posts; on the same documents, the models 91.6–94.7% against the person's 75.8–80.9%. No informal spelling (“gonna”, “kinda”, “lol”, “tbh” and a few others): 83.9% of the person's posts; the models 97.8–100% against 83.2–86.1%. All four models separate on both. Casual writing matched to the posts' lengths sits with the models (95.8% and 93.2%), so these markers also measure how personal a kind of writing is. Verdict: GPT-4 marker, for both.

A Claude arm, generated here

RAID has no Claude arm, so one was generated for this project with Claude Opus 5, reached through Claude Code. That is the same system that wrote this project's code, and the arm is marked on the page for that reason. RAID's own prompts for 50 of the papers were given verbatim, one call per document, with one added instruction because the pipeline needs a bare string back: “Return only the abstract text itself.” No style instruction, no examples. All 50 returned texts are published with their prompts in claude-abstracts.json. Five of them reproduce the published abstract: more than half of their five-word sequences come from it. Two are about papers left out as dated, like every writer's texts for those papers, and one of the two is among the five. That leaves 44. The overlap check removed none of the four RAID models' texts. There is no Claude arm for Reddit posts.

Claude's documents are a subset, mostly about image segmentation (36 of the 44 have “segment” in the title), so claude-matched.json counts every RAID writer on the same documents: the 23 of Claude's 44 that every RAID model also kept after the checks. Llama chat lost 17 of the 44, most of them cut off. Per thousand words, occurrences in brackets:

On the 23 documentsPersonGPT-4Claude
words counted4,4822,5465,937
“delve”0.00 (0)0.00 (0)0.00 (0)
“leverage” as a verb0.45 (2)4.32 (11)0.17 (1)
“crucial”1.12 (5)1.18 (3)0.00 (0)
“furthermore”0.00 (0)0.00 (0)0.17 (1)
“moreover”1.12 (5)0.00 (0)0.67 (4)
a dash, however it is typed0.00 (0)0.00 (0)0.34 (2)
a three-item list1.78 (8)5.11 (13)6.06 (36)

On these documents Claude writes “leverage” once and “crucial” not at all, against the person's 2 and 5, and one “furthermore” where the person writes none; no writer uses “delve”. It writes “moreover” 4 times, which none of the four RAID models does here. On this small set the RAID models use “crucial” about as often as the person (0.82 to 1.35 against 1.12), so the word says little here. Claude's three-item lists, 6.06 (36, in 18 of the 23 texts), run well above the person's 1.78 and at or above GPT-4's 5.11 and Llama chat's 5.55. Across all 44 of its abstracts Claude wrote 8 dashes, in 4 texts, six of them the “—” character, as in: “Learning from scribbles — sparse, quickly drawn strokes marking a few pixels of each class — is an attractive alternative …”. Only 2 of the 8, both “--”, fall in the 23 shared documents. Counts this small move a lot, so read the brackets.

Read these with the caveats. The generator and the author of the measurement are the same system, and a model asked to write while its style is being measured is not in the same position as one simply doing the task. Claude Code puts a system prompt in context, so this is a model inside a product, not the bare model. There are 44 texts against 1,013 to 1,324 in each RAID abstracts column, all academic abstracts, and only 19 of them form a document pair with the person inside one length band. Counts this small have wide intervals: across the 44, “leverage” at 0.18 has an interval of 0.02–0.65, and the dash at 0.72 one of 0.20–1.85, which overlaps the person's 0.23–0.42.

In school essays

The third kind of writing is built differently, and the difference matters for how to read it. There is no shared document. US school students answered seven assignments, and the same seven assignments were given here to two models. A model's essay is compared with a student's essay on the same assignment and of about the same length, not with a rewrite of the same text, so these pairs are looser than the ones in abstracts and posts.

The students. 5,867 essays from the PERSUADE 2.0 corpus, out of its 25,996: the ones written to the seven assignments that need no reading passage, mostly in grade 8 (4,101) and grade 11 (1,342). Three of the seven ask for a letter to the principal. Every essay used here was in the Kaggle Feedback Prize release of December 2021, a year before ChatGPT, and that was checked essay by essay against the official file (kaggle-2021.json). The corpus is CC BY-NC-SA 4.0. The students' essays are counted and never quoted: no essay, sentence or name of theirs is in the repository or on the page.

Why the machine side was written here. Three public sets pair student essays with model essays, and none could be used. OUTFOX sampled its models at temperature 1.3, and most of its essays turn into word salad before they end. Ghostbuster's human essays were published in December 2022 and January 2023, after ChatGPT, so its human column cannot be shown to be human. ArguGPT does not release its human essays. So each assignment was given, with nothing else, to three writers:

The prompt says nothing about length, style or format, and no student's text is in it. Each essay was written in its own session and is committed with the exact prompt it was given, the model, the date and a hash (claude-essays, llama3-essays). The essays cannot be regenerated word for word: Ollama returned different essays for the same prompt and seed, and Claude Code does not expose its sampling settings. What can be repeated is the measurement, from the essays as committed. The same assistant that wrote these essays also wrote this page and the code that counts them, which is why their columns carry an asterisk. This is the part of the project to be most skeptical of.

WriterEssaysPairs with a studentMedian words
Students (PERSUADE 2.0)5,867406
Claude*, told it is a student200196570
Llama 3*, told it is a student200200371
Claude plain*, the assignment alone200200566

No essay was dropped from any column, and none comes near the line for remembered text. Rates are per thousand words over all of a writer's essays, occurrences in brackets; shares are of essays.

FindingCounted
The same marker points to Llama 3 and away from Claude, on the same assignmentsOn six of the 25 markers, one of the two models writes the marker more often than the students and the other less often. “Not only … but also”: Llama 3 1.13 (85), the students 0.11 (283), Claude 0.00 (0). “Furthermore”: 0.80 (60), 0.09 (218), 0.00 (0). “Crucial”: 0.17 (13), 0.05 (127), 0.00 (0). A three-item list: 4.67 (352), 1.49 (3,683), 0.81 (95). Every sentence the same length: 69.0% of Llama 3's essays, 33.7% of the students', 2.0% of Claude's. “In conclusion”, the sixth, is the next row. Llama 3 is the writer the checklists describe; Claude, told it is a student, does almost none of it. On these markers a checklist would take the students for the machine. Verdict: more human, on all six.
“In conclusion” is in almost every Llama 3 essay and almost no Claude essayEssays with “in conclusion”, “in summary” or “to sum up”: Llama 3 94.5%, the students 22.1%, Claude 0.5%, one use in 200 essays. Per thousand words: Llama 3 2.51 (189), the students 0.55 (1,368), Claude 0.01 (1). At equal lengths Claude has 1 where equal rates would have given it about 60. Given the assignment alone, Claude also writes it once. Verdict: more human, while Llama 3 separates the other way.
“It's not X, it's Y” is Claude's ownClaude 0.25 (29), the students 0.00 (12 in all 5,867 essays), Llama 3 0.03 (2). At equal lengths Claude has 29 where equal rates would have given it about 3. From one of Claude's essays: “That’s not really getting advice, that’s shopping.” Llama 3 does not separate. Given the assignment alone, Claude writes it just as often (0.24, 27). Verdict: Claude marker.
No contractions is the one marker both models shareEssays with no contraction anywhere: Claude 35.2%, against 17.5% of the students' essays; Llama 3 44.0%. Both separate from the students, in the same direction; it is the only marker on which both models do. Verdict: Claude marker.
The belief markers turn aroundThe checklists say machine text lacks first person and personal detail. Every one of Claude's essays uses “I”, “my” or “me”; 24.9% of the students' essays do not. 14.3% of Claude's essays have no personal detail (“my friend”, “last year”, “when I was”), against 90.3% of the students'. Told it is a student, the model writes more first person and more small stories than the students did. Llama 3 matches the students on both (23.0% and 88.0%). The corpus removed the students' names from their essays, and the models sign their letters with invented names (Claude) or leave “[Your Name]” (Llama 3), so nothing about names is compared. Verdict: more human on both, which here means that the students more often write an essay without them.
The student framing is not what keeps Claude off the checklistGiven the assignment alone, Claude avoids the same words: one “in conclusion” and no “furthermore”, “moreover” or “crucial” in 200 essays. It writes “it's not X, it's Y” just as often (0.24). The framing barely moves the belief markers either: without it, 1.5% of the essays have no first person and 17.0% no personal detail, against 0.0% and 14.3% with it. This column is shown and kept out of every test.
“Moreover”, “delve” and the dash say little here“Moreover”: Llama 3 0.42 (32), the students 0.03 (68), Claude 0.00 (0). Only Llama 3 separates; Claude's comparison does not reach the cut-off (q = 0.064). “Delve” is too rare to compare: 2 uses by the students, 1 by Llama 3, none by Claude. The dash, however it is typed: the students 0.01 (25), Llama 3 0.03 (2), Claude 0.00 (0), and neither model separates. Verdict: no signal, for all three.
Read this kind of writing for what it can show. These are two models, one of them this project's own assistant, writing in 2026 to assignments students answered before 2022, compared by assignment rather than by document. A difference between the columns can be the writer, the year or the model generation, and this kind of writing cannot separate them. What it does show is that a checklist built from one model's habits can point the wrong way for another, on the same assignment. The placebo, cut to the size of the comparison beside it, ties on every row.

What it does not do

A count looks wrong? Open an issue with the marker and the sentence. The evidence files are there so a pattern can be argued with.

How it was built

TypeScript throughout. RAID is 2.3 GB across ten parquet shards, and none of it is downloaded whole: the row-group statistics say which groups can hold the wanted rows, and only those are fetched over HTTP range requests, paced so the host does not have to refuse. RAID's copy on Hugging Face has no Reddit posts, so those come from RAID's own CSV file, read over two range requests, and the people's posts are never committed. The students' essays come from PERSUADE 2.0 and are never committed either; the essays the models wrote here are. The abstracts were dated once against arXiv's own records. Every Monday a GitHub Actions workflow rebuilds the corpora from their public sources, reruns the checks, re-measures every marker in each kind of writing and commits data/summary.json and one folder per kind of writing under data/genres/. On every push, CI typechecks, runs the 254 tests and rebuilds the page. The page is static, built with esbuild and served from GitHub Pages.

The first version was built in one day, the Reddit posts were added the next and the school essays the day after, with Claude Opus 5 writing the code through Claude Code and a human deciding what to measure, what to quote and what not to claim. It follows Will it run on a Mac? and Why didn't my job run?, which apply the same rule to shell flags and to GitHub Actions: publish what was measured, with the evidence next to it.

Türkçe özet

"Is it really an AI tell?", insanların bir metne "bunu yapay zekâ yazmış" demek için baktığı işaretleri (delve kelimesi, uzun tire, kısaltma kullanmamak, üçlü listeler) sayan açık kaynak bir sayfa. Üç tür yazı ölçülüyor. İkisi RAID veri setinden: 1.324 akademik özet ve 2021'den 1.338 Reddit gönderisi. Bunlarda her belge hem bir insan tarafından yazılmış hem de aynı istemden dört dil modeli (GPT-3.5, GPT-4, Llama, Mistral) tarafından yeniden yazılmış; karşılaştırmalar belge belge yapıldığı için sütunlar arasındaki fark konudan değil yazardan geliyor. Üçüncüsü okul kompozisyonları: ABD'li öğrencilerin yedi ödeve yazdığı 5.867 kompozisyon (PERSUADE 2.0, hepsi Aralık 2021'deki Kaggle Feedback Prize sürümünde), aynı ödevlerin burada verildiği iki modelle karşılaştırılıyor: öğrenci olduğu söylenen Claude ve Llama 3, her biri 200 kompozisyon. Burada ortak belge yok, eşleştirme ödev ödev yapılıyor. Her yazı türü ayrı ölçülüyor. Karşılaştırma için ChatGPT öncesinden günlük ve özenli insan yazısı da ölçülüyor. Ana bulgu: bir işaret yazara olduğu kadar yazı türüne de bağlı. "Moreover" özetlerde insanın, Reddit gönderilerinde GPT-3.5 ve GPT-4'ün kelimesi. "Leverage" özetlerde dört modeli de insandan ayırıyor, gönderilerde neredeyse hiç geçmiyor. "In conclusion" ve "it is important to note" özetlerde bir şey söylemiyor, gönderilerde dört modelin üçünü insandan ayırıyor. Tire özetlerde insanların işareti, gönderilerde ise GPT-4 için bir sinyal vermiyor. Üçlü listeler ve eşit uzunlukta cümleler iki türde de modellerde daha sık. Özetlerde "delve" büyük ölçüde GPT-4'e özgü (binde 0,97); kısaltma ve "ben" kullanmamak ise yazarı değil, metnin akademik özet olduğunu gösteriyor. Okul kompozisyonlarında altı işaret Llama 3'ü gösterirken Claude'dan uzaklaşıyor: "in conclusion" Llama 3 kompozisyonlarının %94,5'inde, öğrencilerinkinin %22,1'inde, Claude'unkilerin %0,5'inde geçiyor. Claude'a özgü olan ise "it's not X, it's Y" kalıbı. Bu kompozisyonların makine tarafı burada yazıldığı için kelimesi kelimesine yeniden üretilemiyor; tekrarlanabilen, kaydedilmiş kompozisyonlar üzerindeki ölçüm. Ölçüm iki kez düzeltildi. 16 Eylül'de üç kalıbın yanlış şeyi saydığı ve eşleştirmenin farklı makaleleri karşılaştırdığı görüldü; ilk yayımlanan sayıların bir kısmı bu yüzden yanlıştı. 17 Eylül'de ChatGPT'den sonra arXiv'de yeni sürümü yayımlanan 172 özet, yarıda kesilen ya da istenen metin olmayan model çıktıları ve İngilizce olmayan belgeler ölçümden çıkarıldı; özetlerdeki sayılar değişti, GPT-4'ün hiçbir hükmü değişmedi. Bu proje için Claude Code üzerinden Claude ile 50 özet de üretildi; yayımlanmış özeti tekrarlayan 5'i ve tarih kontrolüne takılan 2'si (biri o 5'ten) çıkarıldı, 44'ü kaldı. Kodu yazan sistemle aynı olduğu için bu kol ayrıca işaretli. İnsanların Reddit gönderileri ve öğrencilerin kompozisyonları sayılıyor ama hiçbir yerde alıntılanmıyor. Bu bir dedektör değil: puan vermiyor, bir metni kimin yazdığını söyleyemiyor; yapıştırdığınız metin tarayıcıdan çıkmıyor. E-posta, sohbet, ürün yorumları ve Reddit dışındaki sosyal platformlar kapsanmıyor. Ölçüm her hafta GitHub Actions ile yenileniyor, lisans MIT.