GPL-3.0 vs AGPL-3.0 License
GNU General Public License v3.0 compared with GNU Affero General Public License v3.0: what each licence allows, and whether code under one can be used in a project under the other. Results are generated by the open-source license compatibility checker.
Quick Answer
Compatibility is directional, so both directions are answered separately (distributed software):
GPL-3.0 code in a project licensed under AGPL-3.0
Compatible With ConditionsUsing GPL-3.0-licensed code in a project under AGPL-3.0 is generally possible if the listed conditions are met.
Section 13 of AGPL-3.0 and GPL-3.0 allows GPL-3.0 code to be combined into an AGPL-3.0 work. The GPL-3.0 part stays under GPL-3.0; the combination as a whole is subject to AGPL-3.0 section 13.
AGPL-3.0 code in a project licensed under GPL-3.0
Potential ConflictUsing AGPL-3.0-licensed code in a project under GPL-3.0 may conflict, depending on how the code is combined, distributed and licensed.
Section 13 of GPL-3.0 allows combining with AGPL-3.0 code, but the AGPL-3.0 part keeps its network-use requirement: users interacting with a modified version over a network must be offered its source. The combined work cannot be treated as plain GPL-3.0.
Key Differences
- Copyleft: GPL-3.0: strong; AGPL-3.0: strong, with network-use clause.
- Network-use (SaaS) clause: GPL-3.0: no; AGPL-3.0: yes.
Comparison Table
| GPL-3.0 | AGPL-3.0 | |
|---|---|---|
| Type | Open source | Open source |
| OSI approved | Yes | Yes |
| Commercial use | Permitted | Permitted |
| Modification | Permitted | Permitted |
| Distribution | Permitted | Permitted |
| Copyleft | Strong | Strong, with network-use clause |
| Network-use (SaaS) clause | No | Yes |
| Source disclosure | Whole distributed work based on it | Whole distributed work based on it |
| Same licence for distributed changes | Yes | Yes |
| Attribution / notices | Yes | Yes |
| Mark modified files | Yes | Yes |
| Express patent licence | Yes | Yes |
| Patent termination clause | Yes | Yes |
| Trademark rights granted | Not addressed | Not addressed |
Commercial Use
- GPL-3.0: permitted.
- AGPL-3.0: permitted.
- GPL-3.0 code in a project licensed under AGPL-3.0: GPL-3.0 permits commercial use. Commercial use, including selling copies, is allowed; the copyleft conditions still apply to how the code is distributed.
- AGPL-3.0 code in a project licensed under GPL-3.0: AGPL-3.0 permits commercial use. Commercial use, including selling copies, is allowed; the copyleft conditions still apply to how the code is distributed.
Proprietary Software
GPL-3.0 code in closed-source commercial software
Likely IncompatibleUsing GPL-3.0-licensed code in a proprietary project is likely incompatible in this scenario, as the licence terms are generally understood.
If a work based on GPL-3.0 code is distributed, the whole work must be licensed under GPL-3.0 with its complete source available. That is generally incompatible with distributing the project under proprietary terms.
AGPL-3.0 code in closed-source commercial software
Likely IncompatibleUsing AGPL-3.0-licensed code in a proprietary project is likely incompatible in this scenario, as the licence terms are generally understood.
If a work based on AGPL-3.0 code is distributed, the whole work must be licensed under AGPL-3.0 with its complete source available. That is generally incompatible with distributing the project under proprietary terms.
- GPL-3.0 code in closed-source commercial software: If a work based on GPL-3.0 code is distributed, the whole work must be licensed under GPL-3.0 with its complete source available. That is generally incompatible with distributing the project under proprietary terms.
- AGPL-3.0 code in closed-source commercial software: If a work based on AGPL-3.0 code is distributed, the whole work must be licensed under AGPL-3.0 with its complete source available. That is generally incompatible with distributing the project under proprietary terms.
SaaS
- Network-use clause: GPL-3.0: no; AGPL-3.0: yes.
GPL-3.0 code in a closed-source SaaS
Compatible With ConditionsUsing GPL-3.0-licensed code in a proprietary project is generally possible if the listed conditions are met.
GPL-3.0 has no network-use clause: running GPL-3.0 code on your servers to provide a service, without distributing it, generally does not require releasing source. This depends on the code not being distributed.
AGPL-3.0 code in a closed-source SaaS
Potential ConflictUsing AGPL-3.0-licensed code in a proprietary project may conflict, depending on how the code is combined, distributed and licensed.
AGPL-3.0 section 13 applies to modified versions offered over a network. Running an unmodified AGPL-3.0 program does not by itself trigger it, but integrating AGPL-3.0 code into your own service code (linking, importing, patching) generally creates a modified version.
Modified AGPL-3.0 code in a closed-source SaaS
Likely IncompatibleUsing AGPL-3.0-licensed code in a proprietary project is likely incompatible in this scenario, as the licence terms are generally understood.
AGPL-3.0 section 13: if you modify the program, users interacting with it remotely over a network must be offered the Corresponding Source of your modified version, even if it is never distributed. That is generally incompatible with keeping the service's code for that program proprietary.
- GPL-3.0 code in a closed-source SaaS: GPL-3.0 has no network-use clause: running GPL-3.0 code on your servers to provide a service, without distributing it, generally does not require releasing source. This depends on the code not being distributed.
- AGPL-3.0 code in a closed-source SaaS: AGPL-3.0 section 13 applies to modified versions offered over a network. Running an unmodified AGPL-3.0 program does not by itself trigger it, but integrating AGPL-3.0 code into your own service code (linking, importing, patching) generally creates a modified version.
- Modified AGPL-3.0 code in a closed-source SaaS: AGPL-3.0 section 13: if you modify the program, users interacting with it remotely over a network must be offered the Corresponding Source of your modified version, even if it is never distributed. That is generally incompatible with keeping the service's code for that program proprietary.
Modification
- GPL-3.0: permitted; modified files must be marked.
- AGPL-3.0: permitted; modified files must be marked.
Modifying GPL-3.0 code used in closed-source software
Likely IncompatibleUsing GPL-3.0-licensed code in a proprietary project is likely incompatible in this scenario, as the licence terms are generally understood.
If a work based on GPL-3.0 code is distributed, the whole work must be licensed under GPL-3.0 with its complete source available. That is generally incompatible with distributing the project under proprietary terms.
Modifying AGPL-3.0 code used in closed-source software
Likely IncompatibleUsing AGPL-3.0-licensed code in a proprietary project is likely incompatible in this scenario, as the licence terms are generally understood.
If a work based on AGPL-3.0 code is distributed, the whole work must be licensed under AGPL-3.0 with its complete source available. That is generally incompatible with distributing the project under proprietary terms.
- Modifying GPL-3.0 code used in closed-source software: GPL-3.0 permits modification. GPL-3.0 requires modified files to carry notices stating that they were changed.
- Modifying AGPL-3.0 code used in closed-source software: AGPL-3.0 permits modification. AGPL-3.0 requires modified files to carry notices stating that they were changed.
Distribution
- GPL-3.0: permitted.
- AGPL-3.0: permitted.
- GPL-3.0 code in a project licensed under AGPL-3.0: GPL-3.0 permits distribution subject to its copyleft conditions.
- AGPL-3.0 code in a project licensed under GPL-3.0: AGPL-3.0 permits distribution subject to its copyleft conditions.
Copyleft
- GPL-3.0: strong copyleft.
- AGPL-3.0: strong, with network-use clause copyleft.
- GPL-3.0 code in a project licensed under AGPL-3.0: Section 13 of AGPL-3.0 and GPL-3.0 allows GPL-3.0 code to be combined into an AGPL-3.0 work. The GPL-3.0 part stays under GPL-3.0; the combination as a whole is subject to AGPL-3.0 section 13.
- AGPL-3.0 code in a project licensed under GPL-3.0: Section 13 of GPL-3.0 allows combining with AGPL-3.0 code, but the AGPL-3.0 part keeps its network-use requirement: users interacting with a modified version over a network must be offered its source. The combined work cannot be treated as plain GPL-3.0.
Source Disclosure
- GPL-3.0: whole distributed work based on it.
- AGPL-3.0: whole distributed work based on it.
- GPL-3.0 code in a project licensed under AGPL-3.0: Section 13 of AGPL-3.0 and GPL-3.0 allows GPL-3.0 code to be combined into an AGPL-3.0 work. The GPL-3.0 part stays under GPL-3.0; the combination as a whole is subject to AGPL-3.0 section 13.
- AGPL-3.0 code in a project licensed under GPL-3.0: Section 13 of GPL-3.0 allows combining with AGPL-3.0 code, but the AGPL-3.0 part keeps its network-use requirement: users interacting with a modified version over a network must be offered its source. The combined work cannot be treated as plain GPL-3.0.
Attribution
- GPL-3.0: License the whole conveyed work under GPL-3.0.
- GPL-3.0: Provide Corresponding Source when conveying object code.
- GPL-3.0: Keep copyright and licence notices and include the licence.
- GPL-3.0: Mark modified versions with prominent notices of changes.
- GPL-3.0: Provide Installation Information for User Products.
- AGPL-3.0: License the whole conveyed work under AGPL-3.0.
- AGPL-3.0: Provide Corresponding Source when conveying.
- AGPL-3.0: Offer Corresponding Source of a modified version to users interacting with it over a network (section 13).
- GPL-3.0 code in a project licensed under AGPL-3.0: GPL-3.0 requires the copyright and licence notices to be kept with copies you distribute.
- AGPL-3.0 code in a project licensed under GPL-3.0: AGPL-3.0 requires the copyright and licence notices to be kept with copies you distribute.
Patent Considerations
- Express patent licence: GPL-3.0: yes; AGPL-3.0: yes.
- Patent termination clause: GPL-3.0: yes; AGPL-3.0: yes.
- GPL-3.0 code in a project licensed under AGPL-3.0: GPL-3.0 includes an express patent licence from contributors. That patent licence terminates for anyone who initiates patent litigation alleging that the work infringes a patent.
- AGPL-3.0 code in a project licensed under GPL-3.0: AGPL-3.0 includes an express patent licence from contributors. That patent licence terminates for anyone who initiates patent litigation alleging that the work infringes a patent.
Common Scenarios
| Scenario | GPL-3.0 code in a project licensed under AGPL-3.0 | AGPL-3.0 code in a project licensed under GPL-3.0 |
|---|---|---|
| Use as a dependency / library | Compatible With Conditions | Potential Conflict |
| Copy source code into the project | Compatible With Conditions | Potential Conflict |
| Modify the component | Compatible With Conditions | Potential Conflict |
| SaaS / network service (not distributed) | Compatible With Conditions | Potential Conflict |
| Internal / private use only | Compatible With Conditions | Potential Conflict |
| Resell the software | Compatible With Conditions | Potential Conflict |
| White-label / rebrand | Compatible With Conditions | Potential Conflict |
FAQ
Can I use GPL-3.0 code in a project licensed under AGPL-3.0?
Using GPL-3.0-licensed code in a project under AGPL-3.0 is generally possible if the listed conditions are met. Section 13 of AGPL-3.0 and GPL-3.0 allows GPL-3.0 code to be combined into an AGPL-3.0 work. The GPL-3.0 part stays under GPL-3.0; the combination as a whole is subject to AGPL-3.0 section 13.
Can I use AGPL-3.0 code in a project licensed under GPL-3.0?
Using AGPL-3.0-licensed code in a project under GPL-3.0 may conflict, depending on how the code is combined, distributed and licensed. Section 13 of GPL-3.0 allows combining with AGPL-3.0 code, but the AGPL-3.0 part keeps its network-use requirement: users interacting with a modified version over a network must be offered its source. The combined work cannot be treated as plain GPL-3.0.
Can GPL-3.0-licensed code be used in closed-source commercial software?
Using GPL-3.0-licensed code in a proprietary project is likely incompatible in this scenario, as the licence terms are generally understood. If a work based on GPL-3.0 code is distributed, the whole work must be licensed under GPL-3.0 with its complete source available. That is generally incompatible with distributing the project under proprietary terms.
Can AGPL-3.0-licensed code be used in closed-source commercial software?
Using AGPL-3.0-licensed code in a proprietary project is likely incompatible in this scenario, as the licence terms are generally understood. If a work based on AGPL-3.0 code is distributed, the whole work must be licensed under AGPL-3.0 with its complete source available. That is generally incompatible with distributing the project under proprietary terms.
Do I have to publish my source code when I use GPL-3.0 code?
If a work based on GPL-3.0 code is distributed, the whole work must be licensed under GPL-3.0 with its complete source available. That is generally incompatible with distributing the project under proprietary terms.
Do I have to publish my source code when I use AGPL-3.0 code?
If a work based on AGPL-3.0 code is distributed, the whole work must be licensed under AGPL-3.0 with its complete source available. That is generally incompatible with distributing the project under proprietary terms.
Can I use GPL-3.0 code in a closed-source SaaS?
Using GPL-3.0-licensed code in a proprietary project is generally possible if the listed conditions are met. GPL-3.0 has no network-use clause: running GPL-3.0 code on your servers to provide a service, without distributing it, generally does not require releasing source. This depends on the code not being distributed.
Can I use AGPL-3.0 code in a closed-source SaaS?
Using AGPL-3.0-licensed code in a proprietary project may conflict, depending on how the code is combined, distributed and licensed. AGPL-3.0 section 13 applies to modified versions offered over a network. Running an unmodified AGPL-3.0 program does not by itself trigger it, but integrating AGPL-3.0 code into your own service code (linking, importing, patching) generally creates a modified version.
Try the Interactive Checker
Change the scenario, say whether the code is modified, distributed or offered as SaaS, and see every rule that applies.
Related Comparisons
Authoritative Sources
- SPDXSPDX License List: GPL-3.0-only
- OSIOpen Source Initiative: GNU General Public License version 3
- Official textGNU GPL v3.0 (official text)
- FAQGNU Project: Frequently Asked Questions about the GNU Licenses
- SPDXSPDX License List: AGPL-3.0-only
- OSIOpen Source Initiative: GNU Affero General Public License version 3
- Official textGNU AGPL v3.0 (official text)
This tool provides general software licensing information and is not legal advice. License obligations may depend on how software components are combined, modified, distributed and used. For high-risk results, review the actual license text before relying on this result.