Methodology

How We Calculate a Similarity Score: Inside AuthenAI's Plagiarism Detection Algorithm

Published July 12, 2026 · Reviewed by AuthenAI Team

Most plagiarism checkers hand you a similarity percentage and stop there. The number appears at the top of a report, colored red or green depending on how alarming it should feel, and the actual arithmetic behind it stays a black box. That’s a strange way to deliver a number someone is supposed to make a decision on — a grade, a manuscript rejection, an academic integrity meeting. A score you can’t interpret isn’t especially useful; you’re just trusting a stranger’s math. This article opens up that math. It walks through exactly how AuthenAI turns two pieces of text into a similarity score, sub-score by sub-score, using the real weights and thresholds built into the product today — not a simplified explainer, the actual algorithm.

Step 1: Comparing two passages of text

Every similarity score starts with a comparison between one segment of your document and the best-matching passage AuthenAI found for it elsewhere. That comparison isn’t a single test — it’s four different sub-scores, each measuring a different kind of resemblance, combined into one number.

LCS — the longest matching sequence (40% weight)

LCS stands for Longest Common Subsequence: the longest run of characters that appears in the same order in both passages, even if there are gaps or small differences in between. Think of it as tracing the shared “skeleton” of two texts — it doesn’t require the wording to be identical, just that the same sequence of characters shows up in the same relative order in both. That makes it good at catching structural similarity that survives light editing: someone can swap a few words, add a clause, or tweak punctuation, and the underlying skeleton still lines up. Because it captures similarity that other, more literal checks can miss, LCS carries the largest single weight of the four — 40%.

Jaccard 3-gram similarity — shared fragments regardless of order (20% weight)

This sub-score breaks each passage into overlapping 3-character sequences (a “3-gram” of the phrase “the cat” would include chunks like “the”, “he ”, “e c”, “cat”, and so on) and compares the two sets of fragments directly, ignoring where in the text each fragment appears. That order-independence is the point: two passages can share a large proportion of their character fragments even after someone reorders sentences, restructures a paragraph, or moves a clause from the beginning to the end. Jaccard similarity catches that kind of shuffling that a strictly sequential comparison would miss, and it contributes 20% of the final sub-score blend.

Substring matching — the exact-copy signal (20% weight)

This one is the most literal of the four: it searches, in both directions, for the longest run of characters that appears verbatim in both passages. No tolerance for rewording, no partial credit for “close enough” — either a chunk of text was copied character-for-character or it wasn’t. That makes substring matching the sub-score most directly responsible for catching straightforward copy-paste plagiarism, and it’s weighted at 20%.

Keyword-phrase matching — surviving paraphrase (20% weight)

The last sub-score looks at shorter overlapping phrases, between 4 and 8 characters long, and checks how many of them appear in both passages. Phrases this short are specifically tuned to survive light paraphrasing: someone can restructure a sentence and swap out several words, but small, distinctive fragments — a specific technical term, an unusual word ending, a short combination that’s hard to accidentally avoid — tend to persist across a rewrite even when the sentence around them changes. This gives the algorithm a way to catch close paraphrasing that the more literal substring check would miss entirely. It’s also weighted at 20%.

Combining the four — always a blend, never a single winner

Here’s the part that matters most for interpreting a score correctly: these four sub-scores are never taken in isolation, and the highest one is never simply picked and reported as the answer. AuthenAI always computes a weighted average — LCS × 40% + Jaccard × 20% + Substring × 20% + Phrase × 20% — and that blended number is the segment’s similarity score. The deliberate reason for this is that any single sub-algorithm has quirks and blind spots on its own; a weighted blend means no one signal, however unusual the passage, can single-handedly drive the score up or down.

Step 2: Rolling segment scores up into one document score

A document isn’t scored as one giant block of text. It’s split into segments, and each segment goes through the four-sub-score comparison above against whatever source passage matched it best. That leaves you with a list of per-segment scores, not one number — and the document’s overall similarity score is a length-weighted average of all of them. A segment’s length determines how much it moves the total: a short flagged sentence buried in a 5,000-word paper pulls the average only slightly, while a long, heavily-matched passage pulls it much further, in direct proportion to how much of the document it actually represents.

Why we don’t just average — the floor and the bonus

A plain length-weighted average has an honest failure mode: it can hide a genuinely serious problem behind a lot of surrounding original writing. Two paragraphs lifted verbatim from a source, sitting inside an otherwise original 20-page paper, could average down to a low single-digit score — technically accurate as an average, but a misleading signal for anyone deciding whether the flagged passages deserve a closer look. AuthenAI is built to not let that happen, on purpose.

When the single highest-scoring segment in a document reaches 50% or more, two adjustments kick in. First, a floor: the total score can’t fall below maxSimilarity × highSimRatio, where highSimRatio is the share of all segments scoring 40% or higher. That anchors the total to the seriousness of the worst match, rather than letting a long document dilute it away. Second, a bonus: once that same 50%+ condition holds and at least 30% of segments score 40% or higher, the score gets a bonus of at least +15 — rising to at least +25 once 50% or more of segments are high-similarity — capped so the total never exceeds 100.

This is an aggressive-by-design choice, and it’s worth stating plainly rather than dressing it up: AuthenAI would rather over-flag a document that has a couple of heavily copied passages embedded in otherwise clean writing than under-flag it by quietly averaging the problem into invisibility. A floored, boosted score on an otherwise-original paper is meant to prompt a closer look at the specific flagged segments — not to declare the whole paper fraudulent on sight.

The practical takeaway

Because of that design, the single number at the top of a report is never the whole story — it’s a signal that something in the document is worth a closer look, weighted and adjusted so a real problem can’t hide inside a long average. The number that actually tells you what happened is the one attached to each flagged segment, alongside the source it matched. Read the segments, not just the headline score — that’s true of any similarity score, and it’s exactly why AuthenAI’s reports are built around segment-by-segment detail rather than a single figure on its own.

Put this into practice

Try the free plagiarism checker — no account required to start.

Try the free plagiarism checker