Detect plagiarized and similar code across trillions of code sources on the web See what's new
LTI 1.3 and LTI 1.1 ready
Used at 500+ institutions

Code plagiarism checking for Canvas LMS.

Canvas collects the code. Codequiry checks it. Link Codequiry to a Canvas assignment over LTI, or upload an entire course of student code in one pass, then see peer copying, code lifted from GitHub and the web, and AI-written submissions in a single report across 65+ programming languages.

No credit card to try. Works with Canvas Cloud and self-hosted Canvas installs.

65+
Programming languages
1T+
Web and GitHub sources checked
500
Submissions per bulk upload
3
Checks on every submission

Used by CS departments at top universities to keep the classroom honest, from intro Python through senior capstones. More than 500 institutions run their programming assignments through Codequiry.

Harvard University Stanford University MIT UC Berkeley Carnegie Mellon University Georgia Tech University of Illinois Urbana-Champaign Purdue University University of Michigan Cornell University Princeton University Yale University Columbia University UCLA UC San Diego UT Austin University of Washington University of Wisconsin-Madison University of Maryland New York University University of Southern California Johns Hopkins University Duke University Northwestern University Brown University Rice University The Ohio State University Penn State University Arizona State University University of Florida UNC Chapel Hill University of Utah University of Colorado Boulder University of Minnesota Rutgers University Northeastern University Boston University University of Toronto McGill University University of Oxford University of Cambridge Imperial College London University College London ETH Zurich Technical University of Munich TU Delft National University of Singapore NTU Singapore KAIST Tsinghua University University of Tokyo IIT Bombay IIT Delhi University of Melbourne University of Sydney University of Edinburgh University of Manchester The California State University Harvard University Stanford University MIT UC Berkeley Carnegie Mellon University Georgia Tech University of Illinois Urbana-Champaign Purdue University University of Michigan Cornell University Princeton University Yale University Columbia University UCLA UC San Diego UT Austin University of Washington University of Wisconsin-Madison University of Maryland New York University University of Southern California Johns Hopkins University Duke University Northwestern University Brown University Rice University The Ohio State University Penn State University Arizona State University University of Florida UNC Chapel Hill University of Utah University of Colorado Boulder University of Minnesota Rutgers University Northeastern University Boston University University of Toronto McGill University University of Oxford University of Cambridge Imperial College London University College London ETH Zurich Technical University of Munich TU Delft National University of Singapore NTU Singapore KAIST Tsinghua University University of Tokyo IIT Bombay IIT Delhi University of Melbourne University of Sydney University of Edinburgh University of Manchester The California State University
The gap in Canvas

Canvas stores code assignments. It does not check them.

Canvas is a great place to collect submissions. What it hands you for academic integrity was designed for essays, and source code breaks every assumption a text similarity engine makes.

Text similarity misses renamed code

Change total to sum, reorder two functions, strip the comments, and a word-matching engine sees a different document. The program is still identical. Codequiry compares structure, so the rewrite still matches.

GitHub and Stack Overflow are invisible

Most copied code in a CS course never came from a classmate. It came from a public repo, a tutorial, a homework help site or an accepted answer. Codequiry checks those sources directly and links the match back to the page it came from.

AI-written code has no source to match

Code generated by ChatGPT, Claude, Copilot or Gemini is original by definition, so a similarity score of zero proves nothing. Codequiry scores every file for AI-written code alongside the plagiarism checks.

Two ways to run it

Link it to Canvas, or upload the whole course at once.

Both paths end in the same report. Pick the one that matches how much LMS access you have this term, and switch later without losing anything.

Path A

Connect Canvas over LTI

Students submit inside Canvas. Files land in your Codequiry check already attributed.

1
Generate LTI credentials in Portal Manager, LTI 1.3 or LTI 1.1.
2
Add the app to Canvas, then set the assignment submission type to External Tool.
3
Students launch from the Canvas assignment. No Codequiry account needed, Canvas identifies them.
4
Due, unlock and lock dates sync from Canvas, in the student's own timezone.
  • Best for recurring courses and department rollouts
  • LTI 1.1 can be added by an instructor, no IT ticket
Path B

Upload every student's code at once

Already collected the work in Canvas? Import the lot and check it in one pass.

1
In the Canvas assignment, use Download Submissions to export the whole class.
2
Drop the submissions into a Codequiry check, one ZIP per student, up to 500 in a batch.
3
Run the check. Peer, web and AI detection all run on the same upload.
4
Review side-by-side diffs, then export the report as evidence for an integrity case.
  • Zero LMS configuration, works on any Canvas account
  • Desktop app uploads whole folders, API and CLI automate it
What every submission gets

Three checks run on the same Canvas upload.

One import, three independent detection passes. A submission that survives peer comparison can still light up on web sources or on AI generation, which is exactly where most cases now sit.

Peer-to-peer similarity

Every submission is compared against every other submission in the check, and against earlier terms of the same course when you keep prior checks in the folder.

  • Survives renaming and reordering
  • Catches shared starter code and reused solutions
  • Side-by-side diff for each matched pair

Web and GitHub checking

Each submission is checked against public repositories, Stack Overflow, tutorial sites, homework help sites and more than a trillion indexed sources.

  • Every match links to the page it came from
  • Finds the repo that a whole class copied
  • Works even when nobody copied a classmate

AI-written code detection

Per-file scoring for code generated by ChatGPT, Claude, GitHub Copilot and Gemini, with the underlying signals shown so you review evidence instead of a bare number.

  • Runs automatically on the same check
  • Flags the files, not just the student
  • Pairs with peer and web signals for context

Side-by-side evidence

Matched fragments highlighted line by line in both files, ready to show in a hearing.

Exportable reports

Download the report for an academic integrity case or attach it to the Canvas gradebook comment.

Mixed-language projects

HTML, CSS, JavaScript and SQL in one submission are analysed together as a single project.

API, CLI and desktop

Automate the whole import for a department that runs the same check every term.

Canvas setup

How to add Codequiry to a Canvas course.

About ten minutes end to end. LTI 1.3 is added once by a Canvas admin as a developer key and then enabled per course. LTI 1.1 can be added by an instructor at the course level.

LTI 1.3, also called LTI Advantage

1
In Codequiry, create the folder for your Canvas course and add the check.
2
Open Portal Manager and generate LTI 1.3 credentials. You get a client ID, a deployment ID and a JWKS URL.
3
In Canvas, go to Admin, Developer Keys, plus LTI Key and choose Enter URL, then paste the Codequiry tool configuration URL below.
4
Turn the key ON, copy the client ID Canvas shows, and add it to the course under Settings, Apps, By Client ID.
5
Paste the client ID and deployment ID back into Portal Manager so launches from that course are trusted.

LTI 1.1, the no IT ticket route

1
In Codequiry, create the folder for your Canvas course and add the check.
2
Open Portal Manager and generate LTI 1.1 credentials. You get a consumer key and a shared secret.
3
In Canvas, go to Course Settings, Apps, View App Configurations, plus App.
4
Choose Paste XML or By URL with the configuration URL below, then enter the key and secret.
5
Set the assignment submission type to External Tool and pick Codequiry.

Canvas configuration endpoints

LTI 1.3 tool configuration (paste in Developer Key)
https://codequiry.com/lti/1.3/config.json
LTI 1.3 target link URI
https://codequiry.com/lti/1.3/launch
OIDC initiation login URL
https://codequiry.com/lti/1.3/login
Redirect URI
https://codequiry.com/lti/1.3/callback
Public JWKS URL
https://codequiry.com/lti/1.3/jwks
LTI 1.1 launch URL
https://codequiry.com/lti/launch
LTI 1.1 configuration XML
https://codequiry.com/lti/config.xml
Privacy level
public, so Canvas passes the student name and email and submissions arrive attributed

Canvas also passes the assignment due date, unlock date, lock date and the user timezone as custom parameters on launch, so a date you change in Canvas carries over to the linked check.

Comparison

Canvas plus Turnitin, Canvas plus MOSS, Canvas plus Codequiry.

The three setups CS instructors actually choose between when a programming assignment needs an integrity check.

Capability in a Canvas course Canvas built-in text similarity MOSS run by hand Codequiry
Understands source code structure No, built for prose Yes Yes
Survives renaming and reordering No Yes Yes
Checks GitHub and the open web Text pages only No, submitted files only Yes, 1T+ sources with links
Detects AI-written code No No Yes, per file
Launches from a Canvas assignment Yes No, offline script Yes, LTI 1.3 and 1.1
Bulk import of a whole course Per submission Command line only Yes, up to 500 at a time
Language coverage Text formats About 25 languages 65+ languages
Report you can take to a hearing Percentage only Match listing Side-by-side diffs, exportable
Setup effort Already on Script, email results, manual review 10 minutes, or zero with bulk upload

Comparing options more broadly? See Codequiry vs Dolos vs MOSS vs JPlag and the MOSS comparison.

Coverage

Every language your Canvas course actually assigns.

Intro Python, data structures in Java, systems work in C, a full stack capstone, a database course, a hardware description lab. All of it runs through the same check.

PythonJavaC C++C#JavaScript TypeScriptPHPRuby GoRustSwift KotlinScalaR MATLABSQLHTML CSSAssemblyHaskell PerlDartObjective-C VHDLVerilogLua BashFortranCOBOL PascalRacketJulia Elixirand 30+ more
In the classroom

Used by top universities to make sure no cheating goes on in the classroom.

CS departments run it on every programming assignment, from intro Python through senior capstones. An instructor can be checking their own Canvas course this afternoon, a department can standardise it across every section, and both start from the same account.

Universities and colleges

CS departments running Canvas at scale, with LTI 1.3 added once by an admin and enabled per course, plus API automation for large sections.

Community colleges

Large intro programming cohorts with heavy web copying. Bulk upload handles a whole section without waiting on an LMS admin.

High schools and K-12

AP Computer Science A and intro coding classes on Canvas, where AI-written submissions are now the most common integrity issue.

Coding bootcamps

Cohort projects checked against each other, against previous cohorts, and against the public repos students find on GitHub.

Individual instructors and TAs

No procurement cycle required. Create a folder, drop in the submissions you already downloaded from Canvas, and run the check.

Online programs and MOOCs

Remote cohorts where nobody can watch the work happen, and the report has to stand on its own as evidence.

Made for teachers Ask about department licensing
Beyond Canvas

The same integration works with every major LMS.

Codequiry speaks the open IMS Global LTI standard, so the endpoints above are the same ones you paste into any compliant platform. Teaching in more than one? Use one Codequiry account for all of them.

CanvasLTI 1.3 and 1.1
Blackboard LearnLTI 1.3 and 1.1
MoodleLTI 1.3 and 1.1
D2L BrightspaceLTI 1.3 and 1.1
SchoologyLTI 1.1
SakaiLTI 1.1
Open edXLTI 1.1
Google ClassroomPortal link or bulk upload
Anything elseShareable student portal
See the full LMS integration guide
Questions

Canvas code plagiarism, answered.

Canvas itself does not detect code plagiarism. Canvas collects and stores submissions, and its built-in similarity partners compare prose against text documents and web pages.

Source code needs structural comparison. Renamed variables, reordered functions, changed formatting and extracted helper methods all defeat text similarity while leaving the program logically identical. Codequiry plugs into Canvas over LTI and compares the structure of the code rather than the wording, so those rewrites still surface as matches.

Turnitin was built for essays and text documents. It can flag verbatim code that happens to appear in its text index, but it does not tokenize or parse source code, so it misses the common cases in a CS course: identifier renaming, statement reordering, loop conversion, comment stripping and code pulled from GitHub repositories or Stack Overflow answers.

A dedicated code plagiarism checker compares abstract structure across 65+ programming languages and links every match back to its source. See the code plagiarism checker overview for how that works.

There are two ways. Link Codequiry to your Canvas assignment as an LTI app so students submit through Canvas and their files land in your check automatically. Or use Canvas Download Submissions to export the whole course, then upload that set to Codequiry in one pass and run the check.

Both paths produce the same report: peer-to-peer matches, web and GitHub matches, and AI-written code scores.

Yes. Codequiry supports LTI 1.3 with OIDC login, signed JWT launches and a published JWKS endpoint, and it still supports legacy LTI 1.1 with OAuth 1.0a consumer key and shared secret for older installs and other platforms.

LTI 1.3 is added by a Canvas admin as a developer key. LTI 1.1 can be added by an instructor at the course level, which is why most people start there.

Yes, and most instructors start this way. Download the submissions from your Canvas assignment, then upload one ZIP per student to a Codequiry check. The bulk uploader takes up to 500 ZIP files in a batch, the desktop app uploads whole folders from your computer, and the API and CLI automate the same import for departments running it every term.

No student accounts and no LMS configuration are required for this path.

Yes. Every submission is scored for AI-written code alongside the plagiarism checks, covering output typical of ChatGPT, Claude, GitHub Copilot and Gemini. The report shows per-file scores and the signals behind them, so you review the evidence rather than acting on a single number. More detail on the AI code detection page.

Both. Peer-to-peer comparison finds students who copied from each other, including across past terms of the same course when you keep prior checks. Web checking compares each submission against GitHub repositories, Stack Overflow, tutorial sites, homework help sites and over a trillion indexed sources, and every web match links back to the page it came from.

65+ languages including Python, Java, C, C++, C#, JavaScript, TypeScript, PHP, Ruby, Go, Rust, Swift, Kotlin, Scala, R, MATLAB, SQL, HTML, CSS, Assembly, Haskell, Perl, Dart, Objective-C and VHDL.

Mixed-language projects are handled in a single check, so a web development assignment with HTML, CSS, JavaScript and SQL is analysed as one submission.

No. On an LTI launch Canvas identifies the student, so they land on the submission page already attributed and simply upload their code. With the bulk upload path students never touch Codequiry at all, because you import the files you already collected in Canvas.

Yes. Canvas passes the assignment due date, unlock date, lock date and the user timezone as custom parameters on launch, and Codequiry applies them to the linked check, so a date changed in Canvas does not leave the submission window out of step.

Codequiry is built for educator use, keeps submissions private to the folder they were uploaded to, and supports deleting submissions and accounts on request. Institutions can request a data processing review before rollout, and departments running campus wide deployments can arrange terms as part of licensing. See the privacy policy and the educator first use policy.

Yes. The same LTI 1.3 and LTI 1.1 endpoints work with Blackboard Learn, Moodle, D2L Brightspace, Schoology, Sakai, Open edX and any other LTI compliant platform. Google Classroom, which is not LTI based, is handled with the shareable student portal link or the bulk upload path. Full detail on the LMS integration page.

Codequiry starts with a free trial so you can run a real assignment before committing, then continues on a per-check subscription for individual instructors. Departments, colleges and districts license per course or per seat, and volume pricing is available for campus wide rollouts. See pricing.

No. Codequiry is an independent code plagiarism and AI code detection service that integrates with Canvas through the open IMS Global LTI standard. Canvas and Instructure are trademarks of Instructure, Inc.

Run your next Canvas assignment through it.

Join the CS departments at 500+ institutions already checking every programming assignment. Link it over LTI, or upload the submissions you already downloaded. Either way you get peer, web and AI detection on the same check, in minutes.

Keep reading