JPlag
github.com
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
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
- Plagiarism Detection Software#9 of 288.8