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 FSF published LGPL-2.1 in February 1999. Its earlier name was the "GNU Library General Public License" (2.0); in 2.1 it became "Lesser". Unlike LGPL-3.0, it is a complete standalone document. The GNU C Library (glibc) uses LGPL-2.1-or-later, and FFmpeg's default configuration is LGPL-2.1-or-later (some optional components are GPL).
Programs that use this library (Sections 5 and 6)
A program designed to work by being linked with the library (a "work that uses the Library") may be treated as not being a derivative of the library, and the combined executable can be distributed on terms of your choice as long as you meet the conditions of Section 6.
- Include a notice that the library is used and that the LGPL applies, along with a copy of the license.
- Provide source or object files so users can modify the library and relink, or use a shared library mechanism.
- You must permit reverse engineering for debugging such modifications.
The clause for converting to the GPL (Section 3)
LGPL-2.1 allows you to apply the terms of GPL version 2 (or, if you wish, any later version) to a copy of the library instead of the LGPL. That is why LGPL-2.1 code can go into both GPL-2.0 and GPL-3.0 projects. Once a copy has been changed to the GPL, it cannot be changed back to the LGPL.
Common misconceptions
- "LGPL-2.1 is old, so it can't be used" — It is still valid and widely used. It does, however, lack a patent clause and an installation information clause.
- "LGPL-2.1 code can go into an LGPL-3.0 project as is" — If the code is LGPL-2.1-only rather than "or later", the combined work cannot be moved up to LGPL-3.0. You can, however, use Section 3 to distribute it as a GPL-3.0 combined work.
- "Just using headers from the library makes everything LGPL" — Section 5 of the text makes exceptions for using small macros and inline functions (ten lines or less) from headers. Where the line falls requires interpretation.
How to apply it
Keep the text unchanged in COPYING.LIB or LICENSE and attach the official notice to each file. The SPDX identifier is LGPL-2.1-only or LGPL-2.1-or-later.
When it fits
It suits existing C libraries that must also be compatible with the GPL-2.0 ecosystem and derivatives of projects already released under LGPL-2.1. For a new library, people often first consider LGPL-3.0, which has a patent grant, or MPL-2.0.
Can LGPL-2.1 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-3.0 | Allowed with conditions | LGPL-2.1 allows the code to be converted to and distributed under any GPL version from GPL-2.0 onward (Section 3). |
| GPL-2.0 | Allowed with conditions | LGPL-2.1 allows the code to be converted to and distributed under any GPL version from GPL-2.0 onward (Section 3). |
| GPL-3.0 | Allowed with conditions | LGPL-2.1 allows the code to be converted to and distributed under any GPL version from GPL-2.0 onward (Section 3). |
| AGPL-3.0 | Allowed with conditions | LGPL-2.1 allows the code to be converted to and distributed under any GPL version from GPL-2.0 onward (Section 3). 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.