ForHosting KIT · Developer Utilities

Compare text similarity

This text similarity comparator turns two passages into consecutive word shingles and reports their overlap as a percentage.

● BetaFree · in your browser
Use it from WebAPIEmailTelegramApp soon

Choose how many words belong in each shingle, then receive a deterministic Jaccard score and the underlying counts. Normalization removes capitalization and punctuation differences while preserving word identity and order. The result helps writers, students, editors, and reviewers find reused phrasing, compare revisions, or prioritize closer reading. It is an estimate of textual resemblance, not proof of plagiarism, authorship, intent, or wrongdoing.

Understand what the percentage measures

A shingle is a sequence of neighboring words. If the shingle size is three, the sentence is examined as words one through three, then words two through four, and so on until the end. The comparator builds a set of unique shingles for each text. It counts shingles found in both sets, divides that intersection by the union of all unique shingles, and multiplies the result by one hundred. This is Jaccard similarity. A score of one hundred means the normalized shingle sets are identical, while zero means they share none. The calculation ignores capitalization and punctuation because those surface details rarely establish meaningful textual difference, but it preserves words and their local order. Repeated copies of the same phrase count once, preventing repetition from artificially increasing the result. Treat the percentage as a focused measurement of matching language, not a complete judgment about originality. Two texts can express the same idea with different wording and score low, while legitimate quotations, standard notices, technical terminology, or assignment instructions can create overlap without misconduct. Context and human review remain essential whenever the result may affect a person.

Choose a useful shingle size

Shingle size controls how exact a match must be. Small shingles are sensitive to short shared phrases and often produce more overlap. That can be helpful when comparing brief drafts or looking for light editing, but ordinary expressions may also match by coincidence. Larger shingles require longer runs of words in the same order. They are more specific and reduce accidental matches, yet a single inserted or replaced word can break several neighboring shingles and lower the percentage sharply. Three to five words is often a practical exploratory range for prose, but there is no universal setting that proves copying. Choose the size according to the material, document it, and keep it constant when comparing several pairs. Scores created with different shingle sizes are not directly comparable. Each submitted text must contain at least as many normalized words as the chosen size. If either passage is shorter, the capability returns an input error because no valid shingle set can be formed. This explicit failure is safer than returning zero, which could misleadingly suggest that two undersized passages were examined and found unrelated.

Use the result responsibly

Begin with a question the score can actually answer, such as whether a revision retains exact local phrasing from an earlier draft or which of several document pairs deserves manual review first. Submit the two texts, record the shingle size, and retain the returned intersection and union counts with the percentage if reproducibility matters. When a score is high, inspect the matching context before drawing conclusions. Shared definitions, quotations, references, templates, legal language, and required prompts may be entirely appropriate. When a score is low, do not assume independence: paraphrases, translations, structural imitation, and shared ideas may not preserve enough consecutive words to register. The tool does not crawl URLs, compare against a hidden database, locate an original source, determine which version came first, or evaluate citation rules. It also cannot infer intent. In education, publishing, hiring, or compliance work, use it as a screening signal followed by documented human judgment, never as the sole basis for an accusation or penalty. For automated workflows, apply consistent preprocessing and settings, then route unusual or high-overlap pairs to a reviewer who can consider provenance, permissions, quotations, and the relevant policy.

Compare draft revisions

Measure how much exact local phrasing remains after a document has been edited or rewritten.

Prioritize editorial review

Sort candidate text pairs by overlap so reviewers can inspect the most similar material first.

Check submitted writing

Use a reproducible similarity estimate as one cautious signal alongside sources, citations, and human review.

How is the similarity percentage calculated?

It is the number of unique shingles shared by both texts divided by the union of their unique shingles, multiplied by 100.

What happens when a text is shorter than the shingle size?

The request returns an invalid input error because that text cannot form even one shingle.

Does a high score prove plagiarism?

No. The score measures matching consecutive wording only. Quotations, templates, required language, and common phrasing need contextual human review.

Do punctuation and capitalization affect the score?

No. The comparator normalizes Unicode and case and extracts words before making shingles, while preserving word order.

What does an API comparison cost?

Each API comparison costs $0.002. The deterministic browser version is also available on this page.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/life/plagiarism-shingle-compare

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.

curl -X POST https://api.kit.forhosting.com/life/plagiarism-shingle-compare \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text_a":"Careful research helps writers explain complex subjects with clear evidence and useful examples.","text_b":"Careful research helps authors explain complex subjects with reliable evidence and practical examples.","shingle_size":3}'
{
  "text_a": "Careful research helps writers explain complex subjects with clear evidence and useful examples.",
  "text_b": "Careful research helps authors explain complex subjects with reliable evidence and practical examples.",
  "shingle_size": 3
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "life.plagiarism_shingle_compare",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

Read the full KIT documentation →