License Compatibility Checker
Check whether you can combine someone else's code into your project and distribute it. Results are general interpretations and may differ when exceptions or additional permissions apply.
The content on this site is general information, not legal advice. For actual distribution, contracts or disputes, consult a lawyer or other qualified professional.
Full compatibility matrix
Rows are the imported code; columns are the project it is combined into and distributed with. It assumes the code is copied or combined and distributed as a single program.
| Code ↓ / Project → | Proprietary software | MIT | Apache-2.0 | GPL-3.0 | GPL-2.0 | GPL-2.0+ | LGPL-3.0 | LGPL-2.1 | AGPL-3.0 | MPL-2.0 | EPL-2.0 | BSD-3-Clause | BSD-2-Clause | ISC | 0BSD | BSL-1.0 | Unlicense | CC0-1.0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| MIT | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed with conditions | Allowed | Allowed with conditions | Allowed with conditions |
| Apache-2.0 | Allowed | Allowed | Allowed | Allowed | Not allowed | Allowed with conditions | Allowed | Not allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed with conditions | Allowed | Allowed with conditions | Allowed with conditions |
| GPL-3.0 | Not allowed | Not allowed | Not allowed | Allowed | Not allowed | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed |
| GPL-2.0 | Not allowed | Not allowed | Not allowed | Not allowed | Allowed | Allowed with conditions | Not allowed | Allowed with conditions | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed |
| GPL-2.0+ | Not allowed | Not allowed | Not allowed | Allowed | Allowed | Allowed | Allowed with conditions | Allowed with conditions | Allowed with conditions | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed |
| LGPL-3.0 | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed | Not allowed | Allowed with conditions | Allowed | Allowed with conditions | Allowed | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions |
| LGPL-2.1 | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions |
| AGPL-3.0 | Not allowed | Not allowed | Not allowed | Allowed with conditions | Not allowed | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed | Not allowed |
| MPL-2.0 | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions |
| EPL-2.0 | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions | Allowed with conditions |
| BSD-3-Clause | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed with conditions | Allowed | Allowed with conditions | Allowed with conditions |
| BSD-2-Clause | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed with conditions | Allowed | Allowed with conditions | Allowed with conditions |
| ISC | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed with conditions | Allowed | Allowed with conditions | Allowed with conditions |
| 0BSD | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed |
| BSL-1.0 | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed with conditions | Allowed | Allowed with conditions | Allowed with conditions |
| Unlicense | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed |
| CC0-1.0 | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed | Allowed |
What compatibility means
Two licenses are 'compatible' if a single program combining code under both can be distributed while complying with the conditions of both. Compatibility has a direction. Putting MIT code in a GPL project works, but putting GPL code in an MIT project makes the whole combination subject to GPL terms, so it cannot remain an 'MIT project'.
What this table assumes
- You copy or statically combine someone else's code and distribute it as a single program.
- If you only use it internally without distributing, most conditions do not apply (the AGPL network clause is the exception).
- Running as a separate process or communicating only via the command line or network may be considered an 'aggregate' rather than a 'combination', which can change the conclusion.
- Merely using an LGPL library via dynamic linking is far more permissive than the table suggests. See the 'Use a library' entries of the GNU compatibility matrix.
Basis for the verdicts
- Combinations of GNU licenses: the compatibility matrix in the FSF 'Frequently Asked Questions about the GNU Licenses' (copy code)
- Apache-2.0 and the GPL: the FSF license list — compatible with GPL-3.0, incompatible with GPL-2.0
- MPL-2.0: Section 1.12 (Secondary License) and Section 3.3 (Larger Work) of the license
- EPL-2.0: Exhibit A of the license (Secondary License designation)
Code with exceptions (e.g. Classpath Exception, Linux-syscall-note) or additional permissions may differ from the table. When the decision matters, check the license texts and seek professional advice.