Permissions, conditions and limitations at a glance
Conditions
- License and copyright noticeA copy of the license and the copyright notice must be included when distributing.
- Disclose sourceSource code must be made available when distributing.
- State changesChanges made to the original must be indicated.
- Same license (library)Modifications to the library must use the same license, but this may not apply to programs that use it.
Limitations
- LiabilityExpressly states that there is no liability for damages.
- WarrantyExpressly states that no warranty is provided.
Permissions, conditions and limitations are classified using data from choosealicense.com (GitHub, MIT License).
What kind of license is it?
The LGPL (GNU Lesser General Public License) 3.0 is a license for libraries released on the same day as GPL-3.0 (June 29, 2007). Rather than a complete standalone document, it is GPL-3.0 with additional permissions, and its text begins by saying that it incorporates the terms of GPL version 3 supplemented by the following additional permissions. The key additional permission lets you distribute programs that use the library (Combined Works) on terms of your choice. Changes to the library itself must still be published under the LGPL (or GPL). Qt (a choice of LGPL-3.0, GPL or commercial) is a well-known example.
When distributing a program that uses the library (Section 4)
- Give prominent notice that the LGPL library is used in the program and that the LGPL applies.
- Provide copies of GPL-3.0 and LGPL-3.0 along with it.
- Allow users to swap in a modified version of the library. Dynamic linking (shared libraries) usually satisfies this; with static linking you must provide object files or similar so the program can be relinked.
- You may not impose terms prohibiting reverse engineering for debugging such modifications.
- Provide the corresponding source for the library part, and for User Products also provide the installation information under Section 6 of GPL-3.0.
Common misconceptions
- "Using an LGPL library means my app's source must be published" — No. As long as you meet the conditions above, your app can remain closed. The disclosure obligation concerns changes to the library itself.
- "Static linking is always forbidden" — It is not forbidden. But you must provide object files or similar so users can replace the library and relink, which is cumbersome.
- "LGPL-3.0 can be used in GPL-2.0 projects" — It is incompatible with GPL-2.0-only. To combine them, the project must be distributable under GPL-3.0.
How to apply it
By convention, keep the GPL-3.0 text as COPYING and the LGPL-3.0 text as COPYING.LESSER (the generator provides both files). In each source file, use the GNU notice with "General Public License" replaced by "Lesser General Public License". The SPDX identifier is LGPL-3.0-only or LGPL-3.0-or-later.
When it fits
It suits libraries that you want widely used even in closed-source apps while wanting improvements to the library itself to be published. If you want a simpler, file-level weak copyleft, also compare MPL-2.0. The comparison is summarized in the Permissive vs copyleft guide.
Can LGPL-3.0 code go into another project?
General verdicts for taking code released under this license and distributing it combined into a project under each license below. See other combinations in the compatibility checker →
| Target project | Verdict | Notes |
|---|---|---|
| Proprietary (closed-source) software | Allowed with conditions | Linking to it as a library is allowed, but users must be able to replace and relink the LGPL part, and you must provide its source. If you copy and mix the code, the entire combined work must follow (L)GPL terms. |
| MIT | Allowed with conditions | Linking to it as a library is allowed, but users must be able to replace and relink the LGPL part, and you must provide its source. If you copy and mix the code, the entire combined work must follow (L)GPL terms. |
| Apache-2.0 | Allowed with conditions | Linking to it as a library is allowed, but users must be able to replace and relink the LGPL part, and you must provide its source. If you copy and mix the code, the entire combined work must follow (L)GPL terms. |
| MPL-2.0 | Allowed with conditions | Linking to it as a library is allowed, but users must be able to replace and relink the LGPL part, and you must provide its source. If you copy and mix the code, the entire combined work must follow (L)GPL terms. |
| LGPL-2.1 | Allowed with conditions | The combined work must be distributed under GPL-3.0 terms. |
| GPL-2.0 | Not allowed | Version 3.0 code is incompatible with the terms of GPL-2.0 (only) and cannot be included. |
| GPL-3.0 | Allowed | LGPL-3.0 is GPL-3.0 plus additional permissions, so in a GPL-3.0 combined work you can simply disregard the additional permissions. |
| AGPL-3.0 | Allowed | LGPL-3.0 is GPL-3.0 plus additional permissions, so in a GPL-3.0 combined work you can simply disregard the additional permissions. GPL-3.0 and AGPL-3.0 each permit combination in their Section 13. In the combined work, the AGPL part's obligation to provide source over a network remains. |
The content on this site is general information, not legal advice. For actual distribution, contracts or disputes, consult a lawyer or other qualified professional.