Skip to content
SPECIFICTION
Get listed

JPlag

github.com

Free plan Open source WebWindowsmacOSLinuxAPISelf-hosted
Visit github.com
Spec score 8.8 #9 of 28 in Plagiarism Detection Software

What it is

JPlag is free software for finding pairwise similarities among programs that may indicate source-code plagiarism or collusion. It examines programming-language syntax and program structure, helping identify overlap even when code has been partly obfuscated. Analysis runs locally on the user’s machine, and the project says no data is sent externally. Comparisons are between submitted programs rather than internet sources. Listed language support includes Java, C, C++, C#, Python, JavaScript, TypeScript, Go, Kotlin, R, Rust, Swift, Scala, LLVM IR, Scheme, EMF, SCXML, text, and multi-language submissions, with varying maturity. Users can run the command-line interface or Java API, launch a report viewer from the CLI, or add JPlag through Maven Central. Reports show at most 2,500 pairs by default, adjustable with the -n option. Lower minimum matching-token lengths increase sensitivity but can also increase false positives. Running or building requires Java SE 25.

Spec sheet

What it does
JPlag compares programs pairwise to identify likely source-code plagiarism and collusion.Read 15 Oct 2026 · github.com
Purpose
JPlag finds pairwise similarities among programs to detect source-code plagiarism and collusion.Read 29 Sep 2026 · github.com
Support
The project directs users to report bugs and issues on GitHub and provides a Q&A discussion section.Read 29 Sep 2026 · github.com
License
The software is distributed under the GPL-3.0-only license.Read 15 Oct 2026 · helmholtz.software
Founded
1996Read 28 Sep 2026 · github.com
Build process
Building from source uses Maven, and including the report viewer in the assembled JAR additionally requires Node.js.Read 15 Oct 2026 · github.com
CLI
JPlag provides a command-line interface with language selection, run/view modes, result-file output and configurable comparison limits.Read 15 Oct 2026 · github.com
Cluster analysis
A cluster view shows relationships and group dynamics among multiple programs.Read 15 Oct 2026 · helmholtz.software
Documentation and support
Documentation is provided through the GitHub wiki, repository README, issue tracker, discussions and a listed project email address.Read 15 Oct 2026 · helmholtz.software
Early research record
The original JPlag publication describes pairwise similarity scoring with similarity regions and a Greedy String Tiling-based comparison algorithm.Read 15 Oct 2026 · jucs.org
Education use
The project is primarily intended for detecting copied student programming assignments, although it also describes software-theft use cases.Read 15 Oct 2026 · github.com
Extensibility
The repository contains separate language, language-API, parser-utility and report-viewer modules for extending or integrating the system.Read 15 Oct 2026 · github.com
Historical comparison
New submissions can be compared with one another and with an old-submission set, while old submissions are not compared among themselves.Read 15 Oct 2026 · github.com
History
JPlag originated in 1996 at Karlsruhe Institute of Technology and was revived and modernized from late 2020.Read 15 Oct 2026 · github.com
How it compares
It analyzes programming-language syntax and program structure, which helps it detect similarities despite some obfuscation attempts.Read 29 Sep 2026 · github.com
Independent comparison
Codequiry describes JPlag as self-hosted open-source KIT software requiring Java and contrasts it with hosted alternatives.Read 15 Oct 2026 · codequiry.com
Independent directory facts
Helmholtz's Research Software Directory describes JPlag as locally executable open source and lists GPL-3.0-only licensing.Read 15 Oct 2026 · helmholtz.software
Integration
JPlag is published on Maven Central for inclusion as a dependency in Java projects.Read 29 Sep 2026 · github.com
Interfaces
JPlag can be used through its command-line interface or Java API, and the CLI can launch the report viewer.Read 29 Sep 2026 · github.com
Internet matching limit
JPlag compares submissions with one another rather than searching the public internet.Read 15 Oct 2026 · github.com
Java API
The project exposes a Java API that can run analyses and create saved reports from Java applications.Read 15 Oct 2026 · github.com
Language maturity
Language modules are marked with different maturity levels, including mature, beta, legacy and alpha.Read 15 Oct 2026 · github.com
Languages
The README lists support for Java, C, C++, C#, Python, JavaScript, TypeScript, Go, Kotlin, R, Rust, Swift, Scala, LLVM IR, Scheme, EMF, SCXML, text, and multi-language submissions, with varying maturity levels.Read 29 Sep 2026 · github.com
Latest release news
Release 6.3.0 added Java 25 support, rarity-based match weighting, a version-check skip option and a Google AutoService-based API change.Read 15 Oct 2026 · github.com
Limit: benchmark accuracy
The same benchmark reported 37 of 42 confirmed copied pairs detected, five false positives, 88.1% precision and 88.1% recall for JPlag in that test.Read 15 Oct 2026 · codequiry.com
Limit: benchmark runtime
A 2026 independent benchmark reported JPlag 5.2.0 took 18 minutes 24 seconds on 214 Python submissions and produced a 14 MB result archive.Read 15 Oct 2026 · codequiry.com
Limit: fine-grained transformations
A research evaluation found that available plagiarism detectors, including JPlag, were not robust against some fine-grained source-structure transformations, although JPlag was among the more robust tools tested.Read 15 Oct 2026 · arxiv.org
Limit: parsing and scalability
A published MOOC study reported that JPlag fully processed only 46 of 867 tasks because of limitations related to its inner algorithm.Read 15 Oct 2026 · arxiv.org
Limit: report visualization
The York University instructor preferred the legacy version because its subsection visualization was considered better than the newer report interface.Read 15 Oct 2026 · yorku.ca
Local processing
Similarity analysis runs on the user's machine and the project says source code and results are not uploaded.Read 15 Oct 2026 · github.com
Maker activity
The repository showed more than 5,700 commits, about 2,000 stars and 376 forks when accessed.Read 15 Oct 2026 · github.com
Maker founding
KIT states that it was founded on October 1, 2009 through the merger of Forschungszentrum Karlsruhe and Universität Karlsruhe.Read 15 Oct 2026 · kit.edu
Maker headquarters
Karlsruhe Institute of Technology lists its location in Karlsruhe, Baden-Württemberg, Germany.Read 15 Oct 2026 · kit.edu
Maker size
KIT reports 10,131 employees in 2025 and 23,083 students in winter semester 2025/2026.Read 15 Oct 2026 · kit.edu
Maven dependency
JPlag is published to Maven Central under groupId de.jplag and artifactId jplag.Read 15 Oct 2026 · github.com
No internet search
JPlag compares submissions with one another and does not compare them against the internet.Read 29 Sep 2026 · github.com
Obfuscation controls
Match merging is available generally, while token normalization is available for Java and C++ to counter some obfuscation techniques.Read 15 Oct 2026 · github.com
Pair inspection
A comparison view lets users inspect matching code segments between two programs.Read 15 Oct 2026 · helmholtz.software
Praise: practical similarity results
A Scala educator reported that trial use of JPlag produced similarity indications broadly comparable to a simple independent similarity tool.Read 15 Oct 2026 · teachers.scala-lang.org
Praise: privacy
A York University instructor identifies local processing and locally viewable reports without sending student data away as JPlag's main advantage over MOSS.Read 15 Oct 2026 · yorku.ca
Project history
JPlag was originally developed at Karlsruhe Institute of Technology in 1996 and is maintained primarily by KIT researchers.Read 29 Sep 2026 · github.com
Rating on HelloGitHub
0 out of 5 from 0 ratingsRead 15 Oct 2026 · hellogithub.com
Report limit
The default report includes the top 2,500 pairs, though the command-line option can change that number or show all pairs.Read 15 Oct 2026 · github.com
Report overview
The report viewer presents similarity distributions and a ranked list to help identify suspicious outliers.Read 15 Oct 2026 · helmholtz.software
Runtime requirement
The README says Java SE 25 is required to run or build JPlag.Read 29 Sep 2026 · github.com
Sensitivity
Lowering the minimum matching-token length increases sensitivity but may also increase false positives.Read 29 Sep 2026 · github.com
Sensitivity control
The minimum matching-token threshold can be lowered for greater sensitivity, with a stated risk of more false positives.Read 15 Oct 2026 · github.com
Starter-code exclusion
A base-code directory can be supplied so matches also present in that common template are ignored.Read 15 Oct 2026 · github.com
Structure-aware detection
The analyzer uses programming-language syntax and program structure, which helps it withstand many superficial obfuscation attempts.Read 15 Oct 2026 · github.com
Supported languages
The repository lists Java, C, C++, C#, Python, JavaScript, TypeScript, Go, Kotlin, R, Rust, Swift, Scala, LLVM IR, Scheme, EMF, SCXML, text and multi-language modes.Read 15 Oct 2026 · github.com
System requirement
Java SE 25 is required to run or build the current release.Read 15 Oct 2026 · github.com
Use cases
The project describes use in programming education and says it can also identify duplicated or slightly modified software parts.Read 29 Sep 2026 · github.com

Plans and prices

JPlag Free Open-source software · runs locally · requires Java SE 25 Read 29 Sep 2026 · github.com
JPlag Free open-source software · runs locally · Java SE 25 required Read 15 Oct 2026 · github.com

Every JPlag plan and price →

Strong points and limits

Strong points

  • Runs locally without external data transfer
  • Compares submissions rather than internet sources
  • Supports many programming languages
  • Offers CLI and Java API
  • Free plan

Limits

  • Requires Java SE 25
  • Default report limit is 2,500 pairs
  • Lower token thresholds can increase false positives
  • Language support maturity varies

Who it suits

JPlag suits educators and developers comparing submitted programs locally for similarity, plagiarism, collusion, or duplicated software parts. It fits users comfortable with a CLI, Java API, or Java project dependency.

Verdict

JPlag focuses on local, pairwise source comparison with broad language coverage and programmable interfaces. Its Java requirement, pair limit, and sensitivity tradeoff should be considered when configuring analysis.

Where Specifiction places it

Alternatives to JPlagAll alternatives →