JPlag
What it is
JPlag compares programs pair by pair to find source-code similarities that may indicate plagiarism or collusion. It examines programming-language syntax and program structure, which can reveal matches despite some attempts at obfuscation. Analysis runs on the user’s machine, and the project says it sends no data externally; it compares submissions with one another, not against 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 levels of maturity. Users can work through a command-line interface or Java API, and the CLI can launch the report viewer. JPlag is also published on Maven Central for use as a Java project dependency. It is free, but running or building it requires Java SE 25. By default, the report’s top list and code comparison cover at most 2,500 pairs, adjustable with the -n option. Lowering the minimum matching-token length increases sensitivity but can also produce more false positives. The project describes uses in programming education and identifying duplicated or slightly changed software components.
For and against
For
- Analysis runs locally without sending data externally
- Offers a command-line interface and Java API
- Supports a wide range of listed languages and formats
- Can be included in Java projects through Maven Central
Against
- Does not compare submissions against the internet
- Requires Java SE 25 to run or build
- Default report comparison limit is 2,500 pairs
- Greater sensitivity can increase false positives
The verdict
JPlag provides local pairwise code comparison through command-line and Java interfaces, with broad listed language support. Its Java requirement, pair limit and sensitivity tradeoff matter when choosing settings.
Who it suits
It suits educators and developers comparing sets of code submissions locally. Users should consider the Java SE 25 requirement, language support maturity and the risk of false positives at higher sensitivity.
Plans and prices
JPlag
open-source software · runs locally · Java SE 25 required
Read 15 Oct 2026 · github.com
On the record
- Build process
- Building from source uses Maven, and including the report viewer in the assembled JAR additionally requires Node.js.github.com · read 15 Oct 2026
- CLI
- JPlag provides a command-line interface with language selection, run/view modes, result-file output and configurable comparison limits.github.com · read 15 Oct 2026
- Cluster analysis
- A cluster view shows relationships and group dynamics among multiple programs.helmholtz.software · read 15 Oct 2026
- Documentation and support
- Documentation is provided through the GitHub wiki, repository README, issue tracker, discussions and a listed project email address.helmholtz.software · read 15 Oct 2026
- Early research record
- The original JPlag publication describes pairwise similarity scoring with similarity regions and a Greedy String Tiling-based comparison algorithm.jucs.org · read 15 Oct 2026
- Education use
- The project is primarily intended for detecting copied student programming assignments, although it also describes software-theft use cases.github.com · read 15 Oct 2026
- Extensibility
- The repository contains separate language, language-API, parser-utility and report-viewer modules for extending or integrating the system.github.com · read 15 Oct 2026
- Historical comparison
- New submissions can be compared with one another and with an old-submission set, while old submissions are not compared among themselves.github.com · read 15 Oct 2026
- History
- JPlag originated in 1996 at Karlsruhe Institute of Technology and was revived and modernized from late 2020.github.com · read 15 Oct 2026
- How it compares
- It analyzes programming-language syntax and program structure, which helps it detect similarities despite some obfuscation attempts.github.com · read 29 Sep 2026
- Independent comparison
- Codequiry describes JPlag as self-hosted open-source KIT software requiring Java and contrasts it with hosted alternatives.codequiry.com · read 15 Oct 2026
- Independent directory facts
- Helmholtz's Research Software Directory describes JPlag as locally executable open source and lists GPL-3.0-only licensing.helmholtz.software · read 15 Oct 2026
- Integration
- JPlag is published on Maven Central for inclusion as a dependency in Java projects.github.com · read 29 Sep 2026
- Interfaces
- JPlag can be used through its command-line interface or Java API, and the CLI can launch the report viewer.github.com · read 29 Sep 2026
- Internet matching limit
- JPlag compares submissions with one another rather than searching the public internet.github.com · read 15 Oct 2026
- Java API
- The project exposes a Java API that can run analyses and create saved reports from Java applications.github.com · read 15 Oct 2026
- Language maturity
- Language modules are marked with different maturity levels, including mature, beta, legacy and alpha.github.com · read 15 Oct 2026
- 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.github.com · read 29 Sep 2026