Indicator Encyclopedia
145 indicators across text, image, and statistical analysis.
Detects text that sounds authoritative but says nothing checkable: claims with no quantitative anchors, abstract noun-heavy phrasing, and confident assertions backed by no data.
Layer 1Detects circular paraphrasing, repeated phrasal templates and low lexical variety that signal padded or AI-generated prose.
Layer 1Detects unnaturally rigid formal organisation: uniform paragraph lengths, uniform sentence lengths, stereotypical list sizes and recurring generic section headings.
Layer 1Detects claims that lack concrete factual support, citations, data references, figure/table anchors, or traceable Results antecedents, in the immediate context.
Layer 1Detects unnaturally uniform authorial tone across the document. Human writers shift voice between sections naturally; AI-generated text maintains a flat, consistent stylistic temperature throughout.
Layer 2Detects decorative connectors and logic jumps between adjacent sentences, paragraphs, and IMRaD (Introduction, Methods, Results and Discussion) sections. AI-generated text often uses linking words without genuine semantic continuity.
Layer 2Detects overuse of large language model (LLM)-characteristic vocabulary, decorative jargon, undefined key terms, section-level terminological imprecision, and low domain-noun richness. AI-generated academic text relies on a finite set of "excess" style words rather than genuine domain-specific terminology.
Layer 2Detects formulaic hedging phrases, booster absence, over-reliance on "may" as a default hedge, and cross-section hedge uniformity. AI-generated text defaults to a narrow, repetitive hedging vocabulary and avoids assertive language entirely.
Layer 1Detects overgeneralised conclusions that use universal quantifiers, lack conditional language, make vague recommendations, and float untethered from the body's specific findings. large language model (LLM)-generated conclusions systematically strip qualifiers and produce broader claims than the evidence supports.
Layer 1Detects promotional language, unsupported superlatives, and AI-characteristic rhetorical contrast patterns. AI-generated text defaults to an inflated marketing register with formulaic "It's not X, it's Y" constructions amplified by reinforcement learning from human feedback (RLHF) training.
Layer 1Measures how uniform a text's predictability is across sentences. A language model rates each sentence for predictability, and the coefficient of variation of those ratings is scored: uniform predictability, low variation, is the machine signal, while human writing bursts between the surprising and the routine.
Layer 4Scans for invisible and unusual Unicode characters that indicate AI generation, copy-paste from large language model (LLM) interfaces, or adversarial text manipulation. Detects homoglyph substitutions, zero-width characters, bidirectional overrides, and Unicode normalisation issues.
Layer 1Detects encoding corruption patterns (mojibake), replacement characters, broken ligatures, and whitespace anomalies. AI-generated text is paradoxically clean; human text carries the scars of multiple tools, encoding conversions, and imperfect typing.
Layer 1Measures punctuation diversity and detects AI-characteristic punctuation patterns. large language model (LLM) output is dominated by periods and commas, underuses semicolons and parentheses, and overuses mid-sentence dash parentheticals at 3.28x human rates.
Layer 1Flags text that is suspiciously error-free. Human writing carries minor imperfections (typos, formatting inconsistencies, acronym capitalization variants, natural contraction patterns). AI-generated text is machine-perfect, and that perfection is itself the signal (Penn, 2026; MDPI, 2026).
Layer 1Detects residual formatting and conversational markers left behind when text is copied from large language model (LLM) interfaces. Includes Markdown markup, LLM conversation prefixes, Perplexity-style citations, LaTeX remnants, and Claude Extensible Markup Language (XML) thinking blocks.
Layer 1Detects unnaturally uniform sentence rhythm across five dimensions: sentence-length variation, distribution shape, burstiness, repetitive openings, and section-level rhythm uniformity. AI-generated text tends toward suspiciously consistent sentence lengths while human writing shows characteristic variability.
Layer 2Detects large language model (LLM) artifacts specific to non-English text across 12 languages. AI models trained predominantly on English produce characteristic errors when generating text in other languages: mixed diacritics, English calques translated literally, and unnatural connector patterns.
Layer 1Looks at how diacritics are encoded rather than whether they are spelled correctly. It flags text whose accents are broken apart into separate marks, stacked into Zalgo-style clutter, or left floating with no letter to attach to, all of which point to machine processing, corruption, or deliberate obfuscation.
Layer 1Reports how strongly a text exhibits the lexical and structural habits associated with ChatGPT (GPT-4 and GPT-4o) output: a characteristic weighted vocabulary together with the formatting tics the model carries over from its chat interface.
Layer 1Reports how strongly a text exhibits the lexical and structural habits associated with Claude output: a characteristic hedged, dialectical register, inserted safety framing, residual reasoning markup, and a pronounced em-dash density.
Layer 1Reports how strongly a text exhibits the lexical and structural habits associated with Gemini output: a synthesising, breakdown-oriented vocabulary and a report-style layout of tables, bold section headers and templated intro-bullets-conclusion structure.
Layer 1Reports how strongly a text exhibits the lexical and structural habits associated with Grok output: a casual, irreverent register, informal punctuation and contractions, short punchy paragraphs, editorialising, and reader-directed rhetorical questions.
Layer 1Reports how strongly a text exhibits the lexical and structural habits associated with Perplexity output: a dense source-attribution vocabulary and the answer-engine citation signature of inline numbered markers, bare URLs and sparse formatting.
Layer 1Flags fabricated and malformed bibliographic references from the document text alone, using surface patterns rather than any external lookup: placeholder citations, in-text references missing from the bibliography, template titles, fake identifiers, and statistically implausible reference profiles.
Layer 1Flags statistics a model is likely to have produced for effect rather than from data: numbers asserted with no source, suspiciously round figures, decimals whose last digit clusters on 0 and 5, uniformly significant or heaped p-values, and effect sizes reported with no method behind them. It works from the text alone.
Layer 1Flags confident assertions made without visible support: guidance attributed to a named body or to vague authorities with no citation, cause-and-effect claims stated without evidence, misused technical terms, sweeping unattributed claims, and absolute, overstated wording. It works from the text alone, in English and Romanian.
Layer 1Checks whether each cited paper actually supports the claim it is attached to, by retrieving the cited paper's title and abstract and measuring how much of the claim they cover. It looks up real sources and uses no language model.
Layer 3Uses a language model to read authorial voice, scoring a flat uniform voice, abrupt voice shifts between human and machine writing, and weak authorial stance, and combining them into a weighted score. It reads for the person behind the prose.
Layer 4Uses a language model to judge whether an argument holds together, scoring four dimensions of coherence, local flow, global structure, internal contradiction, and transition validity, and combining them into a weighted score with a per-dimension breakdown.
Layer 4Uses a language model to judge how a text uses technical terminology, scoring misuse, decorative jargon, domain fit, and consistency, and combining them into a weighted score. It reads for meaning, which is what separates it from frequency-based vocabulary checks.
Layer 4Uses a language model to weigh the factual claims in a text, scoring internal contradiction, numerical and temporal plausibility, and conflict with established knowledge, and combining them into a weighted score. It works from the model's own knowledge and is built to abstain rather than guess.
Layer 4Re-saves the image as JPEG and compares it to the original: a spliced or edited region carries a different compression history and so changes differently from the rest. The residual is read relative to local edge content, because edges and text are naturally high-residual, so only blocks whose residual is not explained by their edges are flagged. It works on the pixels alone, with no model.
Layer 1Reads the image's frequency spectrum and screens for two synthetic-image tells: a power spectrum that does not follow the natural 1/f decay (a bumpy or peaky shape) and a periodic grid of peaks left by the up-sampling layers of generative models. It works from the two-dimensional Fourier transform alone, with no model.
Layer 1Estimates the local noise level across the image and checks whether it is uniform. A camera imprints a roughly constant noise floor over the whole frame, so a spliced or generated region, which carries a different noise level, stands out. The noise is estimated robustly in the fine-detail domain so that texture and edges do not masquerade as noise. It works on the pixels alone, with no model.
Layer 1Reads the image's embedded metadata for declarations of origin: the C2PA Content Credentials and IPTC source-type assertions that generators now stamp into AI images, the software string of an AI tool, and weaker hints such as a complete absence of camera metadata or an AI-typical output size. It reads only the metadata, never the pixels, so it runs on any image.
Layer 1Reads the colour statistics of an image for two synthetic-image tells: a flat or near-monochrome palette, measured as low per-channel histogram entropy, and the saturation cue, in which a generative model produces a colourful image that nonetheless lacks the highly-saturated colours and clipped highlights a real camera records. It works on the colour values alone, with no model.
Layer 1Finds regions copied and pasted from elsewhere in the same image, the technique used to duplicate or hide an object. It combines exact block matching, which requires many copied blocks to share one shift vector, with ORB keypoint self-matching, which survives brightness changes and re-compression. Flat regions are excluded so that plain skies and backgrounds do not register as clones. It works on the pixels alone, with no model.
Layer 1Recompresses a JPEG across a range of qualities and watches where each region's difference bottoms out. A region previously saved at a given quality reaches its minimum near that quality, a "ghost," so a block whose ghost quality differs from the rest of the image was spliced from a differently-compressed source. It works on the pixels of a JPEG, with no model.
Layer 1Measures how uniform the edge sharpness is across the image. A real photograph varies its sharpness through depth of field, focus falloff, and differing textures, so its edge density varies from region to region; a synthetic image can render the whole frame at one uniform sharpness. The cue is judged only when the image carries enough edge content, so flat images are not mistaken for synthetic. This is a weak supporting signal, used alongside the stronger forensic indicators.
Layer 1Detects localized brightness manipulation, content erasure, and splice seams by checking whether local contrast and tonal response stay consistent across the image. Erased regions become abnormally uniform, pasted patches carry foreign contrast, and a splice produces an abrupt change in local dynamic range.
Layer 1Detects brightness, contrast, gamma, and levels adjustments that may have been applied to hide or exaggerate content, such as darkening a background to suppress a faint band or stretching the tonal range with a Levels or Curves tool.
Layer 1Finds protein bands in a western blot that are copies of one another. Reusing a single band to stand in for different lanes or experiments is a common fabrication, so the indicator detects every band, compares each pair by structural similarity across flips and rotations, and flags pairs that match too closely. It compares only bands of compatible size, because a copied band keeps its dimensions, which avoids false matches from stretching distructural-similarityilar bands to a common shape. It works on the pixels alone, with no model.
Layer 1Examines the shape of the protein bands in a western blot. A real band is irregular: electrophoresis and diffusion give it ragged edges, an asymmetric profile, and a size that varies from lane to lane with the amount of protein. A band that is unnaturally smooth, circular, convex, and identical to its neighbours in shape and size is a sign of generation or cloning rather than measurement. The indicator measures each band's circularity, convexity, and edge smoothness, and the variation in shape and size across bands, and scores how artificial the morphology looks. It works on the pixels alone, with no model.
Layer 1Detects backgrounds that were built rather than captured. A real western blot background carries film or sensor noise and varies smoothly, so it is never perfectly flat and never repeats. A background that is artificially flat, lacking the noise a real exposure leaves, or that repeats a tile pattern from copy-paste editing, is fabricated. The indicator masks out the bands, measures the local noise of the remaining background, and looks for periodic repetition in its self-similarity. It works on the pixels alone, with no model.
Layer 1Looks at the background immediately around each band for signs that the band was inserted or removed. A band pasted from another image brings its own local background, leaving a seam or halo where it meets the host, and a ring whose intensity differs from the rings around the other bands. The indicator measures the background ring of every band and flags rings that are intensity outliers or that show a sharp step across any of the band's four edges. It works on the pixels alone, with no model.
Layer 1Maps local focus across a microscopy image and reads two physically-grounded anomalies. A single optical capture has a depth of field, so its sharpness falls off smoothly away from the focal plane. A fully synthetic micrograph instead tends to be uniformly sharp everywhere, and a composite stitched from different focal planes shows two distinct focus populations separated by a sharp spatial focus boundary. The indicator scores the absence of depth of field and the bimodal-plus-seam composite signature. It works on the pixels alone, with no model.
Layer 1Detects when the same field of view is reused across panels of a microscopy figure to stand in for different experimental conditions. The image is split into quadrants and halves, and every pair is compared twice: by matching ORB keypoints and verifying their geometry with a robust fitting geometric-alignment, and by masked normalized cross-correlation on the content pixels. Printed labels and headers are masked out before matching, so panels are flagged for shared image content, not for sharing the same caption. It works on the pixels alone, with no model.
Layer 1Detects regions that have been filled, erased, or painted over. Inpainting synthesises a patch by smooth interpolation or by copying nearby texture, and either way it suppresses the fine sensor noise that a genuine capture carries everywhere. The indicator estimates the local noise floor robustly from the diagonal fine-detail coefficients and flags blocks where that floor collapses far below the rest of the image, and separately flags blocks whose intensity range is unnaturally narrow. A locally suppressed noise floor and a flat local histogram are the fill-and-erase signatures it scores. It works on the pixels alone, with no model.
Layer 1Reads the correlation between the colour channels of a fluorescence micrograph. A real multi-channel acquisition carries a moderate amount of spectral bleed-through, the unavoidable leakage of one fluorophore's emission into a neighbouring detection channel, so its channels are neither perfectly independent nor identical. The indicator computes the per-block correlation of each channel pair, flags pairs whose correlation collapses toward zero (a sign of channels assembled independently) or saturates toward one (a sign of one channel copied into another), and ignores channels that carry no signal. It works on the pixels alone, with no model.
Layer 1Checks whether the noise in a micrograph behaves like the shot noise of a photon-counting detector. In a real capture the noise variance grows linearly with the local brightness, because detecting more photons means more counting noise, so a plot of per-block variance against per-block mean is a straight line with a positive slope. The indicator fits that line and flags an image whose noise does not scale with intensity, the signature of signal-independent noise added by synthesis or post-processing. It works on the pixels alone, with no model.
Layer 1Checks the sensor-noise profile of an electron micrograph. A real scanning or transmission electron microscope image carries shot noise everywhere at a roughly uniform level, because the beam raster-scans the field with the same statistics throughout. The indicator estimates the local noise level robustly, then flags three departures: a noise level that varies between regions, which points to a composite stitched from different sources, a near-total absence of noise, which points to a synthetic or heavily denoised image, and an implausibly high signal-to-noise ratio. It works on the pixels alone, with no model.
Layer 1Checks whether local contrast varies smoothly across a micrograph. In a real acquisition the contrast changes gradually with position, because illumination, beam response, and specimen vary continuously, so a map of local contrast is spatially smooth. A figure pasted together from different sources breaks that smoothness: adjacent regions show abrupt contrast jumps, the contrast map loses its spatial coherence, and the contrast values split into two populations. The indicator reads the spatial self-similarity of the contrast map, its bimodality, and its sharp jumps. It works on the pixels alone, with no model.
Layer 1Reads the saturated bright and dark regions of a scanning electron micrograph and asks whether they look like genuine charging. A non-conductive specimen accumulates electrons under the beam and produces irregular, organic saturated zones with rough boundaries. Geometric saturated shapes, such as filled circles or rectangles, are the mark of a drawn cover or an edit, and a total absence of saturation or an excess of it is also recorded. The shape judgment is area-weighted, so a single large drawn region stands out among small organic spots. It works on the pixels alone, with no model.
Layer 1Detects whether an image was resized or rotated after capture, the geometric step a forger uses to make a pasted region fit. Interpolation leaves a periodic trace in the second derivative of the image: the variance of the second derivative becomes periodic, with the period set by the resampling factor. The indicator reads the spread of that second-derivative variance across blocks and the strength of a periodic peak in the directional second-derivative profile. It works on the pixels alone, with no model.
Layer 1Detects whether an image was processed with a smoothing filter, a smoothing operation often applied to remove noise or to erase the traces of a manipulation. A smoothing filter outputs an actual pixel value from each neighbourhood rather than a new average, so it leaves a characteristic streaking artefact: adjacent pixels take identical values far more often than in a natural image. The indicator measures that identical-neighbour ratio as the median-specific signature, and uses the lag-1 self-similarity only as corroboration, because correlation alone is raised by any smoothing. It works on the pixels alone, with no model.
Layer 1Screens chart and figure images for typographic and geometric incoherence that a chart drawn by real plotting software would not show: mixed or pasted-in text, barely legible labels typical of generated figures, axes that are not perpendicular, unevenly spaced tick marks, and Cyrillic look-alike characters smuggled into Latin labels. It works from optical character recognition (OCR) and pixel geometry alone, with no model.
Layer 1Reads the numeric labels off a chart's axes and screens them for the axis manipulations catalogued in the misleading-visualization literature: non-monotone axes, chaotic tick spacing, labels that do not match tick positions, inverted axes that reverse the perceived trend, a truncated (non-zero baseline) value axis on a bar chart, and dual y-axes. It works from optical character recognition (OCR) and axis geometry alone, with no model.
Layer 1Screens the error bars on a bar chart for the signatures of decorative or fabricated whiskers: error bars not centered on their bar tops, near-identical or pixel-identical lengths across conditions, a uniform symmetric stamped template, and error bars present on only some of the bars. It works from the detected bar and error-bar geometry alone, with no model.
Layer 1Checks whether the bars in a bar chart are drawn at the height their printed labels claim. When the y-axis can be read, each bar's height is converted to a value and compared to its label as a per-bar lie factor. When the axis cannot be read, a calibration-free check tests whether the bar heights are a consistent linear encoding of their labels. It works from the detected bars, data labels, and axis geometry alone, with no model.
Layer 1Reads the plotted numeric values off a chart and tests whether their distribution is unnaturally clean: too-perfect normality, near-zero asymmetry and peakedness, a complete absence of outliers, or an implausibly low spread. Axis tick labels are removed first, because they are equidistant by construction and would otherwise make any chart look uniform. It works from optical character recognition (OCR) of the plotted numbers, with no model.
Layer 1Reads the p-values printed on a chart and tests their distribution for the signatures of p-hacking and selective reporting: an excess of exact p-values clustered just below 0.05 (the caliper test), a flat rather than right-skewed p-curve, and an implausible run in which every reported p-value is significant. Exact p-values are separated from inequality bounds, because the clustering tests require exact values. It works from optical character recognition (OCR) of the chart text, with no model.
Layer 1Tests whether the leading digits of the plotted numbers in a chart follow Benford's Law, the logarithmic distribution in which about 30% of natural values begin with a 1 and only about 5% begin with a 9. Axis tick labels are removed first, because they are assigned, rounded values that do not obey Benford. A significant deviation can indicate fabricated numbers. It works from optical character recognition (OCR) of the plotted numbers, with no model.
Layer 1Screens a chart for after-the-fact edits to its own content: a label or number whose compression history is inconsistent with the other text (an edited or spliced value), a block deliberately blurred to hide an edit, and colors foreign to the chart's palette (a pasted element). It targets the chart's semantic elements, complementing the whole-image forensics indicators, and works from the pixels and optical character recognition (OCR) alone, with no model.
Layer 1Tests whether the last digits of the plotted numbers in a chart are uniformly distributed, as real measured data should be, and whether 0 and 5 are over-represented, the signature of human rounding. Axis tick labels are removed first, because they are rounded scale values whose terminal digit is 0 or 5 by construction. It works from optical character recognition (OCR) of the plotted numbers, with no model.
Layer 1Reads reported mean, standard deviation, and sample size from a chart and checks whether they are arithmetically possible for integer-scale data. The GRIM test asks whether a reported mean can be any whole-number total divided by the sample size at its stated precision; a SPRITE-style bound flags an impossibly large standard deviation. It works from optical character recognition (OCR) of the chart text, with no model.
Layer 1Checks whether the numbers in a table extracted from an image actually add up. It reads the table by optical character recognition, then verifies that columns labelled as totals equal the sum of their components, that a totals row matches its column sums, that percentage columns in a row sum to about one hundred, and that subgroup sample sizes sum to the reported total. It runs only on tables that hold statistical data, not on text or layout tables, and it ignores derived columns when summing components. It works on the recognised numbers alone, with no model.
Layer 1Applies the GRIM test to means reported in a table extracted from an image. When a mean is the average of whole-number data, such as Likert items or counts, only certain values are mathematically reachable for a given sample size, because the mean must equal an integer total divided by the number of observations. A reported mean that no integer total can reproduce is impossible and points to fabrication or a reporting error. The indicator reads the table, finds mean and sample-size pairs on integer-scale columns, and checks each for GRIM consistency. It works on the reported numbers alone, with no model.
Layer 1Extends the GRIM idea from means to standard deviations for tables extracted from images. When data are whole numbers, the sum of their squares is an integer, so only certain standard deviations are mathematically reachable for a given mean and sample size. A reported standard deviation that no integer sum of squares can produce is impossible and points to fabrication or a reporting error. The indicator reads the table, finds mean, standard deviation, and sample-size triplets, and checks each standard deviation for GRIMMER consistency. It works on the reported numbers alone, with no model.
Layer 1Asks whether a reported mean and standard deviation could have come from real bounded data. For a measure on a known scale, such as a one-to-five Likert item, SPRITE searches by simulation for an integer sample that reproduces the reported statistics; if none can be found, the statistics are impossible. The indicator also applies an exact mathematical bound on how large a standard deviation can be for a given mean on a bounded scale, which immediately rejects impossible spreads near the ends of the scale. It works on the reported numbers and the scale alone.
Layer 2Checks whether the baseline table of a randomized controlled trial shows the random variation that true allocation produces. Under genuine randomization the treatment groups differ on each baseline characteristic only by chance, so the test statistics comparing groups across many variables should scatter like standard normal draws. Groups that are too similar, with under-dispersed statistics, suggest the randomization was gamed or the data fabricated, while groups that differ too much suggest an allocation problem. The indicator reads the baseline table, compares groups on each numeric variable, and measures the spread of the resulting statistics.
Layer 2Checks whether the last digits of the numbers in a table are evenly spread. In genuine measured data the final significant digit is essentially random, so each of the ten digits should appear about a tenth of the time. People inventing numbers cannot produce uniform last digits: they favour round values ending in zero or five, or fall into other patterns. The indicator collects the terminal digits of the table's numbers, tests them for uniformity, and measures the preference for zero and five. Exact-zero cells are excluded so that legitimate structural zeros do not create a false pattern. It works on the reported numbers alone.
Layer 1Detects data that was copied and pasted within a table to manufacture observations. It looks for three traces: rows that are near-identical cell by cell, pairs of numeric columns that are almost perfectly correlated, and runs of consecutive identical values shared between rows. Non-numeric markers such as dashes, N/A, and structural zeros are excluded so that a table's standard notation for missing or absent values is not mistaken for duplicated data, and row similarity is judged only on enough genuinely shared values to be meaningful. It works on the reported numbers alone.
Layer 1Flags tables that are suspiciously perfect. Real experimental data almost always has some missing entries, some statistical outliers, and uneven variability between columns; a large table with zero missing values, zero outliers, and unnaturally uniform column spreads is a hallmark of fabrication. The indicator measures the missing-data rate, counts outliers, and checks whether column standard deviations are implausibly similar, while distinguishing genuine missingness from the dashes and not-significant markers that scientific tables use deliberately. It runs only on tables that hold statistical data.
Layer 1Flags data that matches statistical theory too closely to be real. Genuine measurements scatter; they are never perfectly normal, never exactly equal in spread across variables, and never land on the round effect sizes that textbooks use as examples. Data that is too good, distributions that are flawlessly Gaussian, column spreads that are identical, and effect sizes that fall exactly on conventional benchmarks, is a classic fabrication signal, the same one that first exposed Mendel's suspiciously perfect genetics data. The indicator tests numeric columns for excessive normality, uniform spread, and textbook effect sizes. It runs only on tables that hold statistical data.
Layer 2Checks the correlations among a table's numeric columns for patterns that real data does not produce, and checks a reported correlation matrix for mathematical validity. Genuine variables are rarely perfectly correlated, and a genuine correlation matrix is always positive semi-definite, meaning it has no negative dominant-patterns. Perfect correlations between unrelated columns, an almost singular or suspiciously independent correlation structure, uniform dominant-patterns, and above all a reported correlation matrix that is not positive semi-definite are signs of fabricated or copy-pasted data. It runs only on tables that hold statistical data.
Layer 2Checks whether the numbers in a table fall within physically possible ranges. A reported heart rate of five hundred, a blood pressure of ten, or a negative weight cannot occur in a real subject, so values outside known physiological limits point to a transcription error or fabrication. The indicator matches each column header to a dictionary of measurements and their plausible ranges, using whole-word matching so that a short alias does not latch onto an unrelated column, and grades each value by how far it falls outside its range. It works on the reported numbers and the column names alone.
Layer 1Checks whether values match the measurement instrument they were collected with. A score reported on a one-to-five Likert scale cannot be six, a Glasgow Coma Scale value cannot be below three, and a single integer-scale response cannot carry several decimal places. The indicator matches each column header exactly to a dictionary of named instruments and their scales, then checks the values against the scale bounds, the precision the instrument allows, and, for integer instruments, the granularity that a reported mean must obey. It works on the reported values and the column names alone.
Layer 1Checks whether the numbers in the tables of an article add up. Working from the tables parsed out of the text, it verifies that a row labelled as a total equals the sum of its components, that percentage columns sum to about one hundred, and that a sample-size total equals the sum of its subgroups. Percentage cells are excluded from the component sums, because a percentage is a derived value rather than a count to be added. It works on the reported numbers alone, with no model.
Layer 1Checks arithmetic relationships among reported statistics. A confidence interval must contain the effect estimate it accompanies, and for a ratio measure the estimate must sit at the geometric centre of its interval. Separately, the standard error must equal the standard deviation over the square root of the sample size. An interval that does not bracket its estimate, a ratio interval not centred on its estimate, or a standard error inconsistent with its SD and N is flagged. It works on the reported numbers alone, with no model.
Layer 1Applies the GRIM test to the means reported in an article's text. When a mean is the average of whole-number data, such as Likert items or counts, only certain values are mathematically reachable for a given sample size, because the mean must equal an integer total divided by the number of observations. A reported mean that no integer total can reproduce is impossible and points to fabrication or a reporting error. The indicator reads the mean and sample-size pairs extracted from the text and checks each for GRIM consistency. It works on the reported numbers alone, with no model.
Layer 1Extends the granularity test from the mean to the standard deviation of whole-number data reported in an article's text. For a given mean and sample size, only a discrete set of standard deviations is mathematically possible, because the sum of squared observations must be a whole number. A reported standard deviation that no integer dataset can reproduce is impossible and points to fabrication or a reporting error. The indicator reads the mean, standard deviation, and sample-size triplets from the text and checks each for GRIMMER consistency. It works on the reported numbers alone, with no model.
Layer 1Tests whether a reported mean and standard deviation on a bounded scale could have come from any real dataset of the stated size. For data confined between a known minimum and maximum, such as a 1-to-7 Likert item, the mean must lie inside the scale and the standard deviation cannot exceed a mathematical ceiling set by the mean and the scale limits. The indicator reads the mean, standard deviation, and sample-size triplets from the text, attempts to reconstruct an integer sample matching them by Monte Carlo search, and also applies exact necessary conditions. A mean outside the scale, a standard deviation above the ceiling, or a pair for which no sample can be built is impossible and points to fabrication. It works on the reported numbers alone, with no model of the content.
Layer 2Checks binary proportions reported in an article's text for basic mathematical validity. A proportion written as a count over a total, such as 15 out of 30, is impossible if the count is negative, is not a whole number, or exceeds the total. The indicator finds these count-over-total expressions in the text, filters out things that only look like fractions, such as dates, grant and regulation numbers, blood pressures, and ratios, and flags any remaining proportion that no real count could produce. It works on the reported numbers alone, with no model.
Layer 1Recomputes each reported p-value from the test statistic and degrees of freedom printed alongside it, then compares the recomputed value with the one the authors reported. A large mismatch is an internal inconsistency: the numbers do not agree with each other. The indicator flags gross mismatches and the smaller mismatches that flip a result across the conventional significance line. It also recognises one-tailed tests, so a legitimate directional test is not mistaken for an error. It works on the reported numbers alone, with no model.
Layer 1Looks at the last significant digit of every measurement reported in an article and tests whether those digits are spread evenly across 0 through 9, as genuine measured data should be. People who invent numbers tend to favour certain digits, especially 0 and 5, so a lopsided distribution of last digits is a sign that the data may have been made up or heavily rounded by hand. The indicator runs a goodness-of-fit uniformity test and separately measures how often the last digit is a 0 or a 5, after filtering out numbers that are not free measurements. It works on the reported numbers alone, and only on articles with enough numeric data.
Layer 1Tests whether the leading digit of the measurements reported in an article follows Benford's Law, the pattern by which naturally occurring data that span many orders of magnitude start with a 1 far more often than with a 9. Invented data often fail this pattern because people pick starting digits more evenly than nature does. The indicator measures the gap between the observed leading-digit distribution and Benford's expectation, but only after filtering out numbers that are not free measurements and only when the data span enough orders of magnitude for the law to apply. It works on the reported numbers alone, and only on articles.
Layer 1Looks at the baseline characteristics table of a randomized trial, the table that compares the treatment and control groups before any treatment, and checks how different the two groups' reported values are. Genuine randomization makes the groups close but not identical. Values that are implausibly identical between arms suggest a copied or invented table, and values that diverge far more than randomization would allow suggest the allocation was not random. The indicator measures the spread of the relative differences between the groups and flags both extremes. It works on the reported table values, only for randomized trials.
Layer 2Examines the set of p-values reported in an article for patterns that point to selective reporting, p-hacking, or fabrication. It runs three checks: whether p-values pile up just below the 0.05 significance line rather than just above it, whether the significant p-values are skewed toward very small values as real effects produce or are instead suspiciously flat, and whether a paper reporting many results finds every single one significant. Each pattern adds to the score. It works on the reported p-values alone.
Layer 1Checks whether a paper reports more statistically significant results than its studies could plausibly have produced. Every test has a limited chance of reaching significance even when the effect is real, set by its statistical power, so across many tests only a fraction should come out significant. A paper in which almost everything is significant is reporting more wins than the odds allow, which points to unreported analyses, outcome switching, or fabrication. The indicator compares the observed number of significant results with the number expected under typical power, using the test of excess significance. It works on the reported p-values alone.
Layer 2Looks for rounding and precision patterns in an article's reported statistics that are unusual in genuinely computed results. It runs three checks: p-values reported exactly on the conventional thresholds of 0.05 or 0.01, standard deviations that are identical across several groups, and reported means whose number of decimal places varies widely. Each pattern is a weak individual clue, but together they point to numbers entered or copied by hand rather than produced by analysis software. It works on the reported numbers alone.
Layer 1Looks through an article's data tables for signs that numbers were copied and pasted rather than measured independently. It flags three patterns: whole rows that are near-duplicates of each other, whole columns that duplicate another column, and columns in which the same numeric value repeats three or more times in a row. Placeholder markers such as dashes, not-applicable, and zeros are ignored, and repeated text labels such as a group name are not treated as data, so only genuine numeric duplication is counted. It works on the parsed table cells alone.
Layer 1Flags datasets that look too clean to be real. Genuine data collection produces missing values, occasional extreme observations, and dropout, so a study whose tables have no gaps at all, whose numeric columns contain no outliers, and whose text claims perfect follow-up or zero attrition is unusual enough to warrant a second look. The indicator runs three checks for these signs of suspicious perfection and combines them. It works on the parsed tables and the article text.
Layer 1Examines the raw participant-level data of a study for the tell-tale neatness of a textbook example rather than a real experiment. It runs three checks: whether every numeric variable is so perfectly bell-shaped that it passes a normality test almost perfectly, whether all the variables happen to have nearly identical spread, and whether the differences between groups land exactly on the canonical small, medium, and large effect-size values of 0.2, 0.5, and 0.8. Real data are noisier than this. It works on the individual-patient data when that is available.
Layer 2Builds the correlation matrix from a study's raw participant-level data and looks for structures that are unlikely in genuine measurements. It flags four patterns: two variables that are almost perfectly correlated, a matrix so redundant that its determinant collapses toward zero, a set of five or more variables that are implausibly independent of one another, and dominant-patterns that are suspiciously uniform. Each points to data that were derived, duplicated, or simulated rather than measured. It works on individual-patient data when available.
Layer 2Checks reported clinical and physiological values against known plausible ranges. A heart rate of 300, a blood pressure of 1000, or a negative age cannot occur in a living patient, so a value outside the accepted range for its variable is either an error or invented. The indicator recognises the variable from a table column header or a reported statistic's label, looks up its physiological range, and flags values that fall outside it, marking impossible values such as negatives or extreme outliers more severely. It works on the reported numbers alone.
Layer 1Checks reported values against the fixed scales of the measurement instruments they come from. A Likert item runs 1 to 5, a visual analogue scale 0 to 10, the Mini-Mental State Examination 0 to 30, so a score outside that range is impossible, an integer-only instrument reported with several decimals on a single observation is suspect, and the mean of an integer-scale instrument must satisfy the GRIM granularity test. The indicator recognises the instrument from a column header or a reported statistic's label and applies these scale-specific checks. It works on the reported numbers alone.
Layer 1Detects discrepancies between statistics reported in the text and the corresponding values in tables, catching errors or manipulation where numbers do not match across the paper.
Layer 1Checks that the statistical tests a paper uses fit the kind of study it describes. Some tests assume the compared groups are the same people measured twice, others assume they are independent, and some assume time-to-event follow-up; applying the wrong one for the design is a methodological error and sometimes a sign of careless or fabricated analysis. The indicator detects which tests are named in the text, infers the study design, and flags tests whose assumptions do not match that design. It reads the article text and study-design context.
Layer 2Checks that the number of participants a paper reports is the same wherever it appears. When the abstract says 120 were studied, the methods say 115, and a table totals 110, the discrepancy points to careless editing, undocumented exclusions, or data manipulation. The indicator extracts the sample size from each section and from tables and flags drift between them, and treats a count of analysed participants larger than the number enrolled as impossible. It reads the article text and tables.
Layer 1Checks that the variables a paper says it will measure are the ones it actually reports, and vice versa. A variable described in the Methods but absent from the Results points to selective reporting, and a variable that appears in the Results but was never declared in the Methods points to data dredging or undeclared post-hoc analysis. A primary endpoint declared in the Methods that never surfaces in the Results is the most serious case. The indicator extracts variable mentions from each section and compares them. It reads the Methods and Results section text.
Layer 2Checks that what a paper says about its design holds together with what it reports. If it claims an intention-to-treat analysis, the number analysed should be close to the number enrolled; if it claims a double-blind design, the results should not casually report unblinding. The indicator extracts the analysis-population, blinding, and randomisation claims and cross-checks them against the reported counts and against contradictory statements. It reads the article text and sections.
Layer 2Checks whether the paper justifies its sample size with a power analysis and, when it does, whether the numbers are sensible. A study that reports no sample-size calculation, especially with a small sample, may be underpowered, and reported parameters that are off, such as a significance level above the usual 0.05 or a target power below 80 percent, weaken the justification. The indicator looks for the power-analysis keywords and extracts the significance level, power, effect size, and sample size to check them. It reads the article text, preferring the Methods section.
Layer 2Checks that the descriptive statistics a paper reports suit the shape of the data. A strictly positive variable whose standard deviation exceeds its mean is almost certainly skewed, so summarising it with a mean plus or minus a standard deviation, in a small sample and without acknowledging the skew, can mislead; reporting a median and interquartile range would be more honest. The indicator also flags a parametric test run on a small sample with no normality verification. It reads the extracted summary statistics and the article text.
Layer 2Checks that the paper names the statistical software it used, gives its version, and that the named software can actually do the analyses described. Reporting the software and version is a basic reproducibility requirement, and a tool with known limitations, such as a spreadsheet used for advanced modelling, raises doubt about how the analysis was really done. The indicator detects the software, looks for a version, and compares the described methods against the software's documented capabilities. It reads the article text.
Layer 1Checks whether a paper that reports many statistical tests corrects for having run them. Each test carries its own chance of a false positive, so running many without adjustment makes a spurious significant result almost inevitable. The indicator counts the distinct p-values reported and, when there are enough to matter, looks for any recognised correction method such as Bonferroni or false discovery rate. If many tests are reported with no correction mentioned, it flags the paper. It reads the extracted p-values and the article text.
Layer 1Checks whether the paper interprets its results beyond the p-value, by reporting an effect size or a confidence interval that shows how large and how precise an effect is. A p-value tells only whether an effect is unlikely to be chance, not whether it matters, so results presented as p-values alone, or a marginal p-value described as "no effect" without an interval, can mislead about practical importance. The indicator pairs each p-value with nearby effect-size and interval reporting and flags those left unsupported. It reads the extracted p-values and the article text.
Layer 2Checks whether the paper states its hypothesis and primary endpoint up front in the Methods, and whether the Results introduce analyses that were never planned. Presenting a finding discovered in the data as if it had been predicted, called HARKing, or running unplanned subgroup analyses until something turns up, inflates the chance of a false result. The indicator looks for a declared hypothesis, counts the primary endpoints declared, and flags subgroup analyses that appear only in the Results. It reads the Methods and Results section text.
Layer 2Checks how the paper says it dealt with missing data and grades the approach. Almost every study has some missing values, and the method chosen matters: multiple imputation with a sensitivity analysis is strong, complete-case analysis is acceptable when little is missing, and carrying the last value forward is weak. A paper that names no method at all leaves a gap. The indicator detects the handling method, whether a sensitivity analysis is reported, and the stated missing-data percentage, and scores the combination. It reads the article text.
Layer 2Checks whether the paper verifies the assumptions that the statistical models it uses depend on. A linear statistical fit assumes well-behaved residuals and no severe multicollinearity, a Cox model assumes proportional hazards, a logistic statistical fit needs enough events per predictor, and a Bayesian analysis needs convergence diagnostics. A model fitted with no mention of its assumptions may be invalid. The indicator detects the models named in the text and checks each for the corresponding verification. It reads the article text.
Layer 2Looks at the raw participant-level data and checks whether the variables relate to one another the way real biomedical data do. In genuine data, related measurements such as age and blood pressure move together, so the variables share correlation structure. Data generated by sampling each variable independently, a common signature of a fabricated or machine-generated dataset, instead shows a suspiciously flat correlation structure: almost no pairs correlate, and known relationships are missing. The indicator measures this flatness and also checks specific variable pairs against the correlations the literature expects. It works on the individual-patient data when available.
Layer 2Checks whether too many of a dataset's variables follow a textbook-perfect normal distribution. Real measured variables are rarely exactly bell-shaped: they skew, have heavy or light tails, and contain the occasional extreme value. A dataset in which almost every column is flawlessly normal is unlike real data and resembles output from a model that defaults to drawing from a normal distribution. The indicator tests each numeric column for suspiciously perfect normality and scores the dataset by the fraction of columns that qualify. It works on the individual-patient data when available.
Layer 2Looks at the participant-level demographic fields for patterns that real cohorts do not produce. It checks whether first names match the reported sex, whether an implausible share of visits fall on weekends, whether the reported age agrees with the birth date, and whether a large sample has a suspiciously exact fifty-fifty sex split. These are the kinds of inconsistency that appear when a dataset is assembled carelessly or generated by a model rather than collected from real people. It works on the individual-patient data when available.
Layer 2Looks at each numeric variable in the raw data and checks whether its values huddle too tightly around the average. People who invent data tend to pick numbers near the middle and shy away from the extremes that real measurement produces, so a fabricated column is often too peaked, with too many values close to the mean and an implausibly narrow spread. The indicator runs three peakedness checks per column and flags a column when at least two agree, then scores the dataset by how many columns are affected. It works on the individual-patient data when available.
Layer 2Follows each participant across their study visits and checks that the changes from one visit to the next are biologically possible and naturally variable. A weight that jumps thirty kilograms in a month, a continuous lab value that repeats to the decimal across three visits, a trajectory that is implausibly smooth, or measurements with almost no within-person variation are all signs of fabricated or carried-forward longitudinal data. The indicator runs four such checks per variable, subject by subject. It works on the individual-patient data when a subject identifier and a time column are present.
Layer 2Compares the data contributed by each site of a multi-center study against the rest. Real sites differ from one another in natural ways, because they recruit different patients, use slightly different equipment, and have different missing-data habits. A site whose data is statistically too divergent, too uniform, shows a digit-preference fingerprint, or is implausibly complete while others have gaps stands out as possibly fabricated by a single source. The indicator runs four per-site checks and scores by how anomalous the sites are. It works on the individual-patient data when a site identifier is present.
Layer 2Checks whether almost every statistical test in a paper came out significant and whether the paper says anything about safety or harms. Real research reports a mix of results, with some endpoints reaching significance and others not, and it almost always discusses adverse events. A paper where nearly everything works and nothing goes wrong is a red flag for selective reporting or fabrication. The indicator measures the proportion of significant p-values and looks for safety language, raising the score when results are uniformly positive and safety is unmentioned. It works on the reported p-values and the article text.
Layer 2Looks for standard deviations that repeat across groups or variables when they should not. Two independently measured groups almost never produce exactly the same standard deviation, and two variables on different scales should not either, so reused or near-identical spread values point to copied or invented numbers. The indicator compares the standard deviations of the reported mean-standard-deviation-sample-size triplets, flags suspicious repetition within a source and across differently named variables, and checks that any reported standard errors are consistent with the standard deviations and sample sizes. It works on the reported statistics alone.
Layer 1Reads the key dates a paper reports, ethics approval, the start and end of data collection, trial registration, and submission, and checks that they fall in a possible order. Ethics approval cannot follow the start of data collection, collection cannot end before it begins, and a trial should be registered before its results exist. It also estimates the recruitment rate from the sample size and the collection window and flags a rate that is implausibly fast for a single site. It works on the dates found in the article text.
Layer 2Tests whether controlling for a third variable changes the correlation between two others, as it does in real data with genuine causal structure. When age relates to both blood pressure and cholesterol, holding age fixed should weaken the apparent link between the latter two. In data where each variable was generated independently, a common signature of machine-fabricated datasets, controlling for a third variable barely changes anything, because there is no shared structure to remove. The indicator compares each pairwise correlation with its partial correlation given a third variable and flags data where conditioning has almost no effect. It works on the individual-patient data when at least five numeric variables are present.
Layer 2Tests whether the relationship between two variables changes depending on the value of a third, which is what an interaction or moderation effect means. In real data, the correlation between two measurements often differs between, say, younger and older participants. In data where each variable was sampled independently, a signature of machine-fabricated datasets, splitting on a third variable leaves the correlation essentially unchanged, because there is nothing to moderate it. The indicator splits each candidate third variable at its median, compares the correlation of the other two across the halves, and flags data where such interactions are almost never present. It works on the individual-patient data.
Layer 2Checks whether a variable's spread stays suspiciously constant across the low, middle, and high parts of its value range. Real measurements usually spread out more in some parts of their range than others, but values generated from a single simple distribution, a common machine-fabrication shortcut, tend to be uniformly spread throughout. The indicator sorts each numeric column, splits it into thirds by value, compares the variance within each third, and flags columns whose variance is nearly identical across the thirds. It works on the individual-patient data.
Layer 2Measures how far each participant sits from the centre of the data when all variables are considered together, using the Mahalanobis distance, and checks whether the spread of those distances looks like real multivariate data. In a genuine dataset these squared distances follow a known curve, the goodness-of-fit distribution, with a realistic share of far-out points. Fabricated data often deviates: the distances are too uniform, cluster too tightly, or lack the occasional extreme participant that real data always has. The indicator computes the distances and compares their distribution against the expected one. It works on the individual-patient data with at least four numeric variables.
Layer 2Looks at how much the variances of a dataset's columns differ from one another. Different measurements naturally have different amounts of spread, so the variances across columns should themselves vary. When many columns share almost the same variance, or the variance within a single column stays implausibly constant across subsets of the data, it suggests the values were generated from one fixed distribution rather than measured. The indicator compares the column variances and the within-column variance stability and flags suspicious uniformity. It works on the individual-patient data with at least five numeric variables.
Layer 2Checks whether variables that appear correlated actually share information. A genuine relationship means that knowing one variable reduces uncertainty about the other, which information theory measures as mutual information. The indicator finds pairs of variables with a meaningful linear correlation and then asks whether they also carry mutual information. A pair that is linearly correlated but shares almost no mutual information is a sign of a spurious, surface-level relationship, the kind that can arise when columns are generated independently and only coincidentally align. It works on the individual-patient data.
Layer 2Checks whether the number of decimal places in each measured variable matches what the measuring instrument actually produces. A hematology analyser reports haemoglobin to one decimal place, so a column of haemoglobin values written to two decimals, such as 13.14 instead of 13.1, did not come from that instrument. Machine-generated data often gets this wrong, inventing more or fewer decimals than the device yields. The indicator matches each column to a dictionary of instrument precisions and flags columns whose decimal precision does not fit. It works on the individual-patient data.
Layer 1Checks whether the rounding habits of a dataset match how the variables were actually obtained. People reporting their own age, weight, or pain score round to convenient numbers, so the last digits pile up on 0 and 5, a pattern called heaping. Instruments, by contrast, record whatever they measure, so their last digits are spread evenly. Data that has it backwards, self-reported fields with suspiciously even digits or instrument fields that heap on 0 and 5, points to fabrication or manual rounding. The indicator matches each column to a dictionary of expected heaping behaviour and flags the mismatches. It works on the individual-patient data.
Layer 1Checks whether related columns obey the fixed mathematical and physiological relationships that must hold between them. Body-mass index equals weight divided by height squared, systolic blood pressure exceeds diastolic, a part cannot exceed its whole. These are not statistical tendencies but hard rules, so a dataset in which they are broken in many rows contains logically impossible combinations that real measurement cannot produce. The indicator applies a library of such rules to the data and scores by how many rules are violated and how often. It works on the individual-patient data.
Layer 2Checks specific pairs of variables against the relationships that physiology says they must have. Some pairs should correlate, such as systolic and diastolic blood pressure, and in a known direction. Others should be related only through a third variable, so that controlling for that mediator makes the correlation disappear. The indicator uses a dictionary of such domain-knowledge triples and flags pairs whose correlation is missing, has the wrong sign, or persists after the mediator is controlled for. It works on the individual-patient data and complements the global correlation-structure checks.
Layer 2Looks at the digits that make up a dataset's numbers and checks whether the same short digit patterns repeat too often. Genuinely measured values draw their digits from the full range of measurement, so their two- and three-digit combinations are varied. Machine-generated numbers tend to reuse familiar combinations, such as 14, 71, or 41 from constants like 3.14 and 2.71, and to repeat whole values, lowering the variety of digit patterns. The indicator measures the entropy of the digit pairs and triples and the rate of exact-duplicate values, flagging data that is too repetitive. It works on the individual-patient data.
Layer 2Applies Benford's Law to the raw participant-level numbers, checking both the first and the second significant digit. In data that spans a wide range, the leading digit is a 1 about thirty percent of the time and falls off logarithmically, and the second digit follows its own gentler version of the same law. Fabricated data often fails one or both, because invented or model-generated numbers do not inherit the logarithmic digit structure of real measurement. The indicator pools the individual-patient values, measures how far the first-digit and second-digit distributions stray from Benford's expectation, and scores accordingly. It runs only on articles.
Layer 1Looks for participants whose entire set of measurements is identical to another participant's. When many variables are measured, two real people almost never coincide on all of them at once, so a dataset with many exact-duplicate rows, or a low fraction of unique rows, was likely copied or generated from a small pool of templates rather than collected from distinct individuals. The indicator counts duplicate and unique multivariate profiles among the continuous variables and scores by how often they collide. It works on the individual-patient data.
Layer 2Looks for stretches of a variable that stay exactly the same from one participant row to the next. Genuine measurements drift between people and between visits because of biological variation and measurement noise, so a column that holds one value for many rows in a row is a signature of last-observation-carried-forward (LOCF) imputation or of copy-paste data generation. The indicator measures how often adjacent rows repeat a value and how long the longest unbroken run is, correcting for how often repeats would arise by chance in that column. It works on the individual-patient data (IPD).
Layer 2Looks for the fingerprints a large language model (LLM) leaves when it invents numbers. Because of how these models split numbers into tokens, their output leans toward round and simple values, repeats the same digit in patterns such as 1.111 or 2.222, favours endings in 0 or 5, and uses only a few distinct levels of decimal precision. The indicator measures four such tendencies across all numeric values of the individual-patient data (IPD) and scores how strongly the data carries them. It works on the IPD.
Layer 2Looks at whether variables that move together on average also reach their extremes together. In real multivariate data, two correlated measurements tend to be jointly high or jointly low more often than chance, a property called tail dependence. Data generated as independent or simply correlated Gaussians reproduces the average correlation but not this clustering of extremes. The indicator compares, for each correlated pair, how often both variables fall in the same tail against what a Gaussian copula of the same correlation would produce, and flags pairs whose extremes co-occur too rarely. It works on the individual-patient data (IPD).
Layer 2Looks at how many decimal places the values in each column carry. When a column is measured to a fixed precision, some readings naturally land on a round value and so show fewer decimal places, for example 4.50 recorded as 4.5. A column in which every distinct value has exactly the same number of decimal places, never once landing on a round ending, is unnatural and points to values generated on a fixed grid rather than measured. The indicator counts the decimal places of the distinct values in each non-integer column and flags columns whose precision is perfectly uniform and not explained by a known instrument. It works on the individual-patient data (IPD).
Layer 1Looks at whether the columns of a dataset are too perfectly bell-shaped. Real biological and social measurements almost always carry some asymmetry, heavy tails, or outliers, so a dataset in which nearly every variable is a textbook normal curve is more consistent with values drawn from a clean probability distribution than with genuine collection. The indicator measures the normality, symmetry, and tail weight of each numeric column and scores by how large a share of columns are simultaneously near-perfectly Gaussian. It works on the individual-patient data (IPD).
Layer 2Looks at how missing values are spread through a dataset. Real clinical and survey data almost always has some gaps, from instrument failures, dropouts, and skipped items, and those gaps fall unevenly across variables and participants. A dataset with no missing values at all, or with every variable missing at exactly the same rate, or with almost every row sharing one identical missingness pattern, is more consistent with a generated or mechanically edited table than with genuine collection. The indicator measures the overall completeness, the per-column rates, and the per-row patterns, and scores the combination of signals. It works on the individual-patient data (IPD).
Layer 1Looks at whether the columns of a dataset have the occasional extreme value that real measurement produces. Genuine biological and social data carries some outliers, from rare physiology, measurement error, and data-entry slips, so a dataset in which column after column has no extreme values at all is more consistent with values sampled from a clean, bounded distribution than with real collection. The indicator counts the outliers in each numeric column using a robust rule and scores by how large a share of columns have none. It works on the individual-patient data (IPD).
Layer 2Looks at whether the two treatment groups of a trial really look randomly allocated. When participants are randomised, comparing the groups on each baseline variable, such as age or weight, gives p-values that scatter evenly between 0 and 1, because any differences are pure chance. Fabricated trials betray themselves in two opposite ways: groups drawn from clearly different populations give too many significant differences, and groups whose means were forced to match give p-values bunched near 1. The indicator runs these baseline comparisons on the individual-patient data, then tests the resulting p-values for the expected even scatter. It works on the individual-patient data (IPD).
Layer 2Looks at columns that should hold whole numbers, such as Likert ratings or counts, and checks that the group means they imply are arithmetically possible. For an integer-scale variable the mean multiplied by the number of participants must be a whole number, because it equals the sum of whole-number responses. When a column looks integer-scale but its group sums are not whole numbers, the values are not the clean integers they appear to be, which points to generated or altered data. The indicator applies this GRIM check directly to the individual-patient data rather than to the means printed in the paper. It works on the individual-patient data (IPD).
Layer 2Looks at the dates in a dataset, such as visit or enrollment dates, and checks that they behave like real scheduling. Genuine clinical data spreads across weekdays and months with natural irregularity, while fabricated dates often betray themselves by landing mostly on weekends, all bunching into one week, falling on a single day, being spaced at a perfectly even interval, or sitting in the future or the distant past. The indicator parses each date column and flags these implausible patterns. It works on the individual-patient data (IPD).
Layer 1Looks at the last digit of the numbers in each column. When a quantity is measured precisely, its final digit is essentially random and the ten possibilities 0 through 9 appear about equally often. People and generators that invent numbers instead lean toward round endings like 0 and 5, or systematically avoid certain digits, and when the same digit dominates the last place across several columns the coordination is a strong sign of fabrication. The indicator tests each numeric column's last-digit distribution against the uniform expectation. It works on the individual-patient data (IPD).
Layer 1