Your country

Tools that support it use your country for local currency, number formats, units and paper size. Your choice is saved only in this browser.

Type a name or a two-letter code. Use the up and down arrow keys to move through the countries, Enter to choose one and Escape to close.

Code Plagiarism Checker

Find code shared between student programs, even renamed, reformatted or reordered.

Free preview, no sign-upIncluded in your pass Premium tool Premium pass: ₹799 / $19.99 for 30 days On this device; its files download once
+3 +1 more details No uploadWorks offline once opened Education

Free preview: the pair percentages of the first 3 programs you add, compared on your device. Locked until you unlock it: download and copy.

Premium pass ₹799 for 30 days or ₹249 for 1 week, one‑time. Premium pass $19.99 for 30 days or $7.99 for 1 week, one‑time. How to unlock

Try before you buy.

  • Free preview: the pair percentages of the first 3 programs you add, compared on your device.
  • Locked until you unlock it: download and copy.
  • Unlock: Premium pass, ₹799 for 30 days or ₹249 for 1 week, a one-time payment that never renews. Unlock: Premium pass, $19.99 for 30 days or $7.99 for 1 week, a one-time payment that never renews.

Ways to unlock shows how to get the full result.

See passes (opens in a new tab)

Printing this result is locked in the free preview.

An offline comparison of the programs you add. They are compared only with each other, on this device. It does not search the internet or code sites and cannot tell whether code was written by AI; shared code is a reason to look closer, not proof of copying.

Programs

A class folder with one subfolder per student, or one student’s project.

A learning platform’s “download all submissions” ZIP is read as one program per student folder.
Paste a program

    No programs yet. Add two or more to compare them with each other.

    Options

    Every shared run at least this long is found; a token is a word, number or symbol of code.
    Starter code the students were given (left out of the comparison)

      Next steps Done. What next?

      Start over

      A Premium pass unlocks the full result. See passes

      All education & student tools

      About the Code Plagiarism Checker

      Add 2 to 500 programs — one file, folder or ZIP file per student, in Python, JavaScript or TypeScript, Java, C or C++, C#, Go, PHP, Ruby or Kotlin — and see which of them share code. Each program is split into the tokens of its language, with comments and layout dropped and every variable, function, number and string name made the same, so a copy with new names, other comments, other indentation or its functions moved around still matches. A second, structural pass compares the programs’ statements in any order, which catches copies padded with extra lines.

      The results are a ranked list of pairs with the share of each program found in the other, a similarity matrix, clusters of students who share code drawn as small graphs, and a side-by-side view that highlights every shared block in both programs. Starter code you handed out, import lines and code that many programs of a large class share are left out, so they never count. Everything runs in your browser: no program is uploaded. It compares only the programs you add, with each other — it does not search the internet or code sites and cannot tell whether code was written by AI.

      How to use it

      1. Choose files or ZIP files (one per student), choose a class folder with one subfolder per student, drop folders on the box, or paste a program. A learning platform’s “download all submissions” ZIP is read as one program per student folder.
      2. If the students started from code you gave them, add it under Starter code so that it is left out. Pick a sensitivity: Balanced finds every shared run of about three lines or more.
      3. Press Compare programs. The most similar pair comes first; the matrix shows each program against each other one, and the clusters show who shares code with whom.
      4. Select View on a pair (or a cell of the matrix) to see both programs side by side, with each shared run highlighted in both; select a highlight to find it in the other program.
      5. Without a pass the free preview compares the first 3 programs and shows their pair percentages. With a Premium pass, or after unlocking this result, every program is compared and you can copy the report or download it as HTML, PDF or CSV.

      Examples

      The four sample programs
      Input
      Load sample programs: four short Python grade calculators
      Result
      P1 ↔ P2: 100% both ways (every name changed, comments and a docstring added) · P1 ↔ P3: 96% both ways, 3 matching functions in a different order · P4: nothing in common with the others

      P4 solves the same task in its own way, so it shares no run of code with the others.

      A padded copy
      Input
      A Java class copied with a junk line between every two real ones
      Result
      Shared runs: a small share, because the junk lines break them up · same statements: every statement of the original’s methods is in the copy · the pair is ranked by its statements
      How the shares are worked out
      Input
      P1: 150 tokens compared · P2: 600 tokens · 120 tokens in shared runs
      Result
      120 ÷ 150 = 80% of P1 is in P2 · 120 ÷ 600 = 20% of P2 is in P1

      A short program copied into a long one shows a high share for the short one and a low share for the long one, so both are given.

      Common uses

      • Teachers and teaching assistants checking a class’s programming assignment for students who shared code.
      • Checking resubmitted work against the earlier version, or a lab group’s programs against each other.
      • Coding bootcamps and course staff screening exercise submissions before grading.
      • Contest and hackathon organisers comparing entries with each other.

      How it works

      Each file is tokenised by its language’s rules: keywords, operators and the names of library functions such as print or System.out.println stay as they are; every name a student chose becomes the same placeholder (unless you switch that off), and every number, string and written-out list of data becomes another. Then every run of k tokens is hashed, and in each window of hashes the smallest is kept as a fingerprint. This is winnowing, from Schleimer, Wilkerson and Aiken’s paper “Winnowing: local algorithms for document fingerprinting” (ACM SIGMOD), the method behind Stanford’s MOSS service for programming classes; it guarantees that any shared run of at least t tokens is found. Each shared fingerprint is grown into the full shared run and the longest runs are taken first, so no token counts twice.

      The share of a program is its tokens inside shared runs divided by all its compared tokens. The structural pass compares the programs’ statements as unordered collections (five tokens or longer, declarations left out) and pairs up functions whose statements are mostly the same, which shows functions moved around and copies with lines inserted between the real ones. A pair is ranked by the larger of its two shares, or by its share of statements in common when both programs have at least six statements and that is higher.

      What is left out

      • Comments, blank lines and layout, always, and Python docstrings.
      • Boilerplate (on by default): import, include, using and package lines, and the line that opens the main program (public static void main(String[] args), int main(), if __name__ == "__main__":), which every program of a class has.
      • Starter code: any run of tokens it shares with a program.
      • Code many programs share (on by default, in a class of more than 10): runs found in more than 10 of the programs and in more than a tenth of them, such as a helper everyone copied from the lecture notes.

      Left-out code is shown struck through in the side-by-side view, and a shared run never crosses it.

      Reading the results

      A high share is a reason to read the highlighted code, not proof that anyone copied. Short assignments have few good solutions, students who learn from the same examples write alike, and code from the course or a textbook is shared legitimately. Look at how long the shared runs are and whether they include the unusual parts — the odd variable layout, the same mistake, the same unneeded step. Use Strict sensitivity for long programs, where short shared runs happen by chance, and High for very short exercises.

      Limitations

      • It compares only the programs you add, with each other. It does not search the internet, code-sharing sites or a database, and it cannot tell whether code was written by AI.
      • Programs are compared only with programs in the same language (JavaScript with TypeScript, C with C++). A program translated into another language is not found.
      • Code that was restructured by hand — loops rewritten as recursion, logic moved into new functions — can share little at the token level. The structural pass helps with moved and padded code, not with rewritten algorithms.
      • The lexers recognise each language’s comments, strings and operators but do not parse the program, so very unusual syntax (macros, PHP mixed deep into HTML) may be split less precisely.
      • Up to 500 programs, 300 files and 1.5 million characters each. Files over 2 MB, binary files and folders such as node_modules, build or __pycache__ are left out. The side-by-side view draws the first 300,000 characters of each program; the reports cover all of it.
      • The free preview compares the first 3 programs you add; a Premium pass (or unlocking this result) compares all of them.

      Privacy

      On this device; its files download once

      Your programs are read and compared in your browser and never uploaded or stored. Only your option choices are remembered in this browser.

      Frequently asked questions

      What do I get without a pass?

      Without a pass, Code Plagiarism Checker shows the pair percentages of the first 3 programs you add, compared on your device. Until you unlock it, the result can’t be downloaded or copied. A Premium or Ultimate pass, a one-time payment that never renews, unlocks the full result. The pricing page lists the passes and their prices.

      Does it find code copied from the internet or written by ChatGPT?

      No. It compares the programs you add with each other and tells you exactly which parts they share. It does not search anywhere else, and no tool can reliably tell AI-written code from a student’s own, so it does not try.

      Will renaming variables or reformatting the code hide a copy?

      No. Names the student chose are compared as placeholders, and comments, spacing, indentation and the order of functions do not matter. Switch off Renamed variables and functions count as the same to find only copies that kept the names.

      How do I check a whole class?

      Download all submissions from your learning platform as a ZIP file and add it: a ZIP with one folder per student becomes one program per student. Or choose a folder with one subfolder per student. Add the starter code you gave out, and read the pairs table from the top.

      What similarity percentage counts as plagiarism?

      No number decides it. A short exercise can give two honest solutions a high share, while one long unusual block copied word for word can matter more than a high share made of common lines. Read the side-by-side view, and follow your school’s policy.

      Why are there two percentages for each pair?

      Because programs differ in length. If a 30-line program is copied into a 300-line one, all of the short program is shared but only a tenth of the long one. The matrix reads across: each row is the share of that program found in the column’s program.

      Which files can I add?

      Source files of the languages it reads — Python, JavaScript, TypeScript, Java, C, C++, C#, Go, PHP, Ruby and Kotlin (for example .py, .js, .ts, .java, .c, .cpp, .cs, .go, .php, .rb, .kt) — Jupyter notebooks (.ipynb, their code cells), ZIP files and folders. Other files in a ZIP or folder are left out, and each program says which.

      Is my students’ code uploaded?

      No. Files are read and compared in your browser, and the comparison runs in a background worker on your device. Nothing is sent to MySmartCoPilot or anyone else.

      Quick answers and tool search

      Type to search tools or to get a quick answer, for example 18% of 2500. Use the up and down arrow keys to move through the results, Enter to choose, and Escape to close.